Swift Expert
SKILL.md
Swift Expert
Swift and SwiftUI expertise for Leavn app.
Binding Fixes
Problem: $viewModel.property errors
Fix: Add @Bindable wrapper in View:
@Bindable var viewModel: MyViewModel
Actor Isolation (Swift 6)
@MainActorfor UI-touching codenonisolatedfor pure functionsTask { @MainActor in }for async UI updates- Never access @MainActor properties in deinit
@Observable Migration
Old: @Published var x + ObservableObject
New: @Observable class + plain var x
View: @State var vm = ViewModel() (not @StateObject)
SwiftUI Anti-Patterns
- Heavy computation in View body → Extract to ViewModel
- @State for reference types → Use @StateObject/@State with @Observable
- Missing @MainActor on ViewModels → Add it
- Force unwrapping in Views → Use nil coalescing
Common Compiler Errors
- "Cannot convert" → Check Optional unwrapping
- "Actor-isolated" → Add @MainActor or nonisolated
- "Missing conformance" → Add protocol or use type erasure
- "Ambiguous" → Add explicit type annotation
Use when: Swift errors, SwiftUI bugs, migration issues, best practices