install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/pproenca/dot-skills/swift-optimise" ~/.claude/skills/comeonoliver-skillshub-swift-optimise && rm -rf "$T"
manifest:
skills/pproenca/dot-skills/swift-optimise/SKILL.mdsource content
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
only (neverDesignSystem
, never sibling features)Data - App target is the convergence point and owns
, concrete coordinators, and Route Shell wiringDependencyContainer
stays pure Swift and defines models plus repository,Domain
,*Coordinating
, andErrorRouting
contractsAppError
owns SwiftData/network/sync/retry/background I/O and implements Domain protocolsData- 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 | |
| 2 | Render & Scroll Performance | HIGH | |
| 3 | Animation Performance | MEDIUM | |
Quick Reference
1. Concurrency & Async (CRITICAL)
- Replace Combine publishers with async/awaitconc-combine-to-async
- Use @MainActor instead of DispatchQueue.mainconc-mainactor-isolation
- Adopt Sendable and Swift 6 strict concurrencyconc-swift6-sendable
- Use .task(id:) for reactive data loadingconc-task-id-pattern
- Replace lock-based shared state with actorsconc-actor-for-shared-state
- Replace NotificationCenter observers with AsyncSequenceconc-asyncsequence-streams
2. Render & Scroll Performance (HIGH)
- Decompose views to limit state invalidation blast radiusperf-view-decomposition
- Profile with SwiftUI Instruments before optimizingperf-instruments-profiling
- Use lazy containers for large collectionsperf-lazy-containers
- Use Canvas and TimelineView for high-performance renderingperf-canvas-timeline
- Use drawingGroup for complex graphicsperf-drawinggroup
- Add Equatable conformance to prevent spurious redrawsperf-equatable-views
- Use .task modifier instead of .onAppear for async workperf-task-modifier
- Use AsyncImage with caching strategy for remote imagesperf-async-image
3. Animation Performance (MEDIUM)
- Use spring animations as defaultanim-spring
- Use matchedGeometryEffect for shared transitionsanim-matchedgeometry
- Make animations gesture-drivenanim-gesture-driven
- Use withAnimation for state-driven transitionsanim-with-animation
- Apply transition effects for view insertion and removalanim-transition-effects
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 |