swift-optimise
SKILL.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 |
Weekly Installs
36
Repository
pproenca/dot-skillsGitHub Stars
71
First Seen
Feb 8, 2026
Security Audits
Installed on
codex32
github-copilot31
gemini-cli31
opencode30
kimi-cli30
amp29