Agent skill
state-management-hoangnguyen0403-agent-skills-standar
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/state-management-hoangnguyen0403-agent-skills-standar
SKILL.md
iOS State Management Standards
Priority: P0
Implementation Guidelines
Combine (Reactive)
- Publishers: Use
@Publishedfor state in ViewModels. UsePassthroughSubjectfor one-time events (Transitions/Alerts). - Memory Management: Store subscriptions in a
Set<AnyCancellable>. Ensure they are cleared on deinit. - Operators: Use operators like
.debounce,.filter,.map, and.flatMapto transform input stream. - Schedulers: Always prefix UI property updates with
@MainActoror use.receive(on: DispatchQueue.main).
Observation Framework (iOS 17+)
- @Observable: Use for modern, macro-based observation. Replace
ObservableObjectin SwiftUI apps. - Binding: Use
$statefor two-way bindings in SwiftUI. No boilerplateobjectWillChangecalls.
Best Practices
- ViewState Unification: Prefer a single
Stateenum or struct (Unidirectional) for complex screens. - Avoid Over-Reactive: Don't use Combine for simple local flags. Use standard
@Stateor variables.
Anti-Patterns
- Subscription Leaks:
**No uncleared subscriptions**: Always use .store(in: &cancellables). - Main Thread Violation:
**No UI updates on Background**: Use .receive(on: .main). - Manual objectWillChange:
**No manual notifications**: Use @Published or @Observable.
References
Didn't find tool you were looking for?