SwiftUI Best Practices Enforcer
SKILL.md
SwiftUI Best Practices Enforcer
Fix SwiftUI anti-patterns:
-
@State for ViewModels: Move to ViewModel property
-
Heavy View body: Extract to ViewModel computed property
-
Missing @MainActor: Add to ViewModels
-
Property wrapper mistakes:
- @Observable → @State or @Bindable
- ObservableObject → @StateObject or @ObservedObject
-
Leavn patterns:
- ViewModels: @Observable + @MainActor
- Services: Protocol-based, injected via DIContainer
- State: In ViewModel, not View
- Bindings: Use @Bindable for @Observable types
Use when: SwiftUI issues, performance problems, architecture violations