Zustand v5 state management for React. Use when implementing global state, stores, persist, or client-side state.
From fuse-reactnpx claudepluginhub fusengine/agents --plugin fuse-reactThis skill uses the workspace's default tool permissions.
references/auto-selectors.mdreferences/installation.mdreferences/middleware.mdreferences/migration-v5.mdreferences/reset-state.mdreferences/slices.mdreferences/store-patterns.mdreferences/subscribe-api.mdreferences/testing.mdreferences/typescript.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Minimal, scalable state management with React 18+ useSyncExternalStore.
Before ANY implementation, use TeamCreate to spawn 3 agents:
After implementation, run fuse-ai-pilot:sniper for validation.
| Feature | Benefit |
|---|---|
| Minimal API | Simple create() function, no boilerplate |
| React 18 native | useSyncExternalStore, no shims needed |
| TypeScript first | Full inference with currying pattern |
| Middleware stack | devtools, persist, immer composable |
| Bundle size | ~2KB gzipped, smallest state library |
| No providers | Direct store access, no Context wrapper |
create<State>()((set) => ({...}))modules/[feature]/src/stores/Stores organized by feature module:
modules/cores/stores/ - Shared stores (theme, ui)modules/auth/src/stores/ - Auth statemodules/cart/src/stores/ - Cart statemodules/[feature]/src/interfaces/ - Store types| File | Purpose | Max Lines |
|---|---|---|
store.ts | Store creation with create() | 50 |
store.interface.ts | TypeScript interfaces | 30 |
use-store.ts | Custom hook with selector | 20 |
Double parentheses required for TypeScript inference. Currying pattern ensures full type safety.
Stack middlewares: devtools -> persist -> immer. Order matters for TypeScript types.
Always use useStore((s) => s.field) for performance. Use useShallow for array/object selectors.
| Need | Reference |
|---|---|
| Initial setup | installation.md |
| Store patterns | store-patterns.md |
| Middleware | middleware.md |
| TypeScript | typescript.md |
| Slices pattern | slices.md |
| Auto selectors | auto-selectors.md |
| Reset state | reset-state.md |
| Subscribe API | subscribe-api.md |
| Testing | testing.md |
| Migration v4→v5 | migration-v5.md |
useStore((s) => s.field) for performance| Pattern | Reason | Alternative |
|---|---|---|
| Persisting auth tokens | Security vulnerability | httpOnly cookies |
| Without useShallow on objects | Excessive re-renders | useShallow(selector) |
| v4 syntax | TypeScript inference broken | v5 currying create<T>()() |
| Giant monolithic store | Hard to maintain | Slices or separate stores |