Swift SwiftUI
SKILL.md
SwiftUI Standards
Priority: P0
Implementation Guidelines
State Management
- @State: Private UI state owned by the view (e.g., toggle, text input).
- @Binding: Two-way connection to parent's @State.
- @ObservedObject: Reference to external observable object.
- @StateObject: View owns the lifecycle of the object.
- @EnvironmentObject: Shared data across view hierarchy.
View Composition
- Extract Subviews: Keep views small (<200 lines). Extract reusable components.
- View Modifiers: Chain modifiers for styling (
.font(),.padding()). - Custom Modifiers: Create
ViewModifierfor reusable styles.
Performance
- Avoid Heavy Computation: Use
@State+.task()for async work. - Equatable: Conform views to
Equatableto prevent unnecessary re-renders. - LazyStacks: Use
LazyVStack/LazyHStackfor large lists.
Anti-Patterns
- @ObservedObject Ownership:
**No @ObservedObject for owned objects**: Use @StateObject. - Heavy body:
**No logic in body**: Move to computed properties or methods. - Force Unwrap in Views:
**No ! in View**: Use if-let or nil coalescing.