| name | SwiftUI Best Practices Enforcer |
| description | Audit and fix SwiftUI anti-patterns in Leavn - @State in wrong places, heavy View body computation, missing @MainActor, improper property wrappers |
| allowed-tools | Read, Edit, Grep |
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