> swift-optimise
Swift 6.2 and SwiftUI performance optimization for iOS 26 clinic architecture codebases. Covers async/await concurrency patterns, Sendable/actor isolation, view/render performance, and animation performance while preserving modular MVVM-C boundaries across App, Feature, Domain, and Data layers. Use when profiling or optimizing Swift/SwiftUI behavior in clinic modules.
curl "https://skillshub.wtf/pproenca/dot-skills/swift-optimise?format=md"Apple 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 |
> related_skills --same-repo
> valid-skill
A valid test skill with proper formatting. This skill should pass all validations and serves as a reference for the expected format.
> too-long-skill
This skill has more than 500 lines which should fail validation.
> missing-references
This skill references rules that do not have corresponding files in the references directory.
> missing-description
missing-description skill from pproenca/dot-skills