# State Management

> Signals-based state management and NgRx Signal Store.

- Skill: `fierzone/state-management` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fierzone/state-management`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fierzone/state-management/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: fierzone (https://skillmd.com/u/fierzone)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/fierzone/state-management

---


# State Management

## **Priority: P1 (HIGH)**

## Principles

- **Signals First**: Use Signals for all local and shared state.
- **Computed**: Derive state declaratively using `computed()`.
- **Services**: For simple apps, a service with `signal` properties is sufficient.
- **Signal Store**: For complex features, use `@ngrx/signals` (Signal Store) over Redux boilerplate.

## Guidelines

- **Immutability**: Treat signal values as immutable. Update using `.set()` or `.update()`.
- **Effects**: Use `effect()` sparingly (e.g., logging, syncing to localStorage). Do not cascade state updates in effects.

## Anti-Patterns

- **Component State**: Avoid heavy state logic in components. Delegate to a Store/Service.
- **RxJS `BehaviorSubject`**: Deprecated for state (use Signals). Use RxJS only for complex event streams.

## References

- [Signal Store Pattern](references/signal-store.md)

