About swift-optimise
A performance guide for developers building Swift and SwiftUI applications, with 19 rules covering concurrency, rendering, scrolling, and animation. It targets iOS 26 and Swift 6.2 and assumes a specified modular MVVM-C architecture.
Key features
- 0119 rules in three categories
- 02Swift 6 concurrency guidance
- 03SwiftUI rendering and scrolling
- 04Animation performance practices
- 05Assumes modular MVVM-C architecture
Use cases
- 01Migrate code to Swift 6 concurrency
- 02Replace Combine publishers with async/await
- 03Improve scrolling and rendering performance
- 04Review SwiftUI animation implementations
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill swift-optimiseAfter installing, type/swift-optimisein Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
metadata.jsonassets/templates/_template.mdreferences/_sections.mdanim-gesture-driven.mdanim-matchedgeometry.mdanim-spring.mdanim-transition-effects.mdanim-with-animation.mdconc-actor-for-shared-state.mdconc-asyncsequence-streams.mdconc-combine-to-async.mdconc-mainactor-isolation.mdconc-swift6-sendable.mdconc-task-id-pattern.mdperf-async-image.mdperf-canvas-timeline.mdperf-drawinggroup.mdperf-equatable-views.mdperf-instruments-profiling.mdperf-lazy-containers.mdperf-task-modifier.mdperf-view-decomposition.mdDetails
From the project READMEApple Swift/SwiftUI Performance Optimization Best Practices
Comprehensive guide for Swift and SwiftUI performance optimization. Contains 19 rules across 3 categories covering modern concurrency, render performance, and animation performance. Targets iOS 26 / Swift 6.2 with @Observable and Swift 6 strict concurrency.
Clinic Architecture Contract (iOS 26 / Swift 6.2)
All guidance in this skill assumes the clinic modular MVVM-C architecture:
- Feature modules import
Domain+DesignSystemonly (neverData, never sibling features) - App target is the convergence point and owns
DependencyContainer, concrete coordinators, and Route Shell wiring Domainstays pure Swift and defines models plus repository,*Coordinating,ErrorRouting, andAppErrorcontractsDataowns SwiftData/network/sync/retry/background I/O and implements Domain protocols- Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes
- ViewModels call repository protocols directly (no default use-case/interactor layer)
When to Apply
Reference these guidelines when:
- Migrating to Swift 6 strict concurrency (Sendable, actor isolation)
- Replacing Combine publishers with async/await
- Implementing @MainActor isolation and actor-based concurrency
- Decomposing views to reduce state invalidation blast radius
- Optimizing scroll and render performance with lazy containers
- Using Canvas/TimelineView for high-performance rendering
- Profiling with SwiftUI Instruments before optimizing
- Building performant spring animations and transitions
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Concurrency & Async | CRITICAL | conc- |
| 2 | Render & Scroll Performance | HIGH | perf- |
| 3 | Animation Performance | MEDIUM | anim- |
Quick Reference
1. Concurrency & Async (CRITICAL)
conc-combine-to-async- Replace Combine publishers with async/awaitconc-mainactor-isolation- Use @MainActor instead of DispatchQueue.mainconc-swift6-sendable- Adopt Sendable and Swift 6 strict concurrencyconc-task-id-pattern- Use .task(id:) for reactive data loadingconc-actor-for-shared-state- Replace lock-based shared state with actorsconc-asyncsequence-streams- Replace NotificationCenter observers with AsyncSequence
2. Render & Scroll Performance (HIGH)
perf-view-decomposition- Decompose views to limit state invalidation blast radiusperf-instruments-profiling- Profile with SwiftUI Instruments before optimizingperf-lazy-containers- Use lazy containers for large collectionsperf-canvas-timeline- Use Canvas and TimelineView for high-performance renderingperf-drawinggroup- Use drawingGroup for complex graphicsperf-equatable-views- Add Equatable conformance to prevent spurious redrawsperf-task-modifier- Use .task modifier instead of .onAppear for async workperf-async-image- Use AsyncImage with caching strategy for remote images
3. Animation Performance (MEDIUM)
anim-spring- Use spring animations as defaultanim-matchedgeometry- Use matchedGeometryEffect for shared transitionsanim-gesture-driven- Make animations gesture-drivenanim-with-animation- Use withAnimation for state-driven transitionsanim-transition-effects- Apply transition effects for view insertion and removal
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
Reference Files
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |