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.