From fuse-react
Zustand v5 state management for React. Use when implementing global state, stores, persist, or client-side state.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fuse-react:react-stateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Minimal, scalable state management with React 18+ useSyncExternalStore.
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 |
npx claudepluginhub fusengine/agents --plugin fuse-reactZustand v5 state management for Next.js 16 App Router. Use when implementing global state, stores, persist, hydration, or client-side state in Client Components.
Provides Zustand 5.x patterns for React state management: slices, middleware, Immer, useShallow, persistence, selectors, devtools, async actions, and anti-patterns with TanStack Query integration. Use for global client state without boilerplate.
Creates and manages Zustand stores for React state management, covering creation, selectors, actions, updates, and performance best practices like shallow equality.