pproenca/dot-skills47 files

Zustand

Zustand state management best practices for React applications. Use when writing, reviewing, or refactoring Zustand stores to ensure optimal performance and maintainability. Triggers on tasks involving state management, stores, selectors, re-renders, and Zustand patterns.

Specification
Skill ID
pproenca/dot-skills/zustand
Publisher
pproenca
Repository
dot-skills
Installs
0
Files
47
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

pproenca/dot-skills/zustandInstalls these files
  • SKILL.md
  • assets/templates/_template.md
  • metadata.json
  • references/_sections.md
  • references/adv-computed-getters.md
  • references/adv-context-stores.md
  • references/adv-third-party-integration.md
  • references/adv-transient-updates.md
  • references/mw-combine-order.md
  • references/mw-devtools-actions.md
  • references/mw-immer-nested.md
  • references/mw-persist-migration.md
  • references/mw-persist-partialize.md
  • references/mw-slice-middleware.md
  • references/render-avoid-object-returns.md
  • references/render-equality-fn.md
  • references/render-memo-children.md
  • references/render-split-components.md
  • references/render-subscribe-external.md
  • references/render-use-shallow.md
  • references/select-always-use.md
  • references/select-atomic-picks.md
  • references/select-auto-generate.md
  • references/select-avoid-inline.md
  • references/select-custom-hooks.md
  • references/select-memoize-computed.md
  • references/select-stable-returns.md
  • references/ssr-check-window.md
  • references/ssr-hydration-hook.md
  • references/ssr-manual-rehydrate.md
  • references/ssr-skip-hydration.md
  • references/store-avoid-derived-state.md
  • references/store-colocate-logic.md
  • references/store-domain-boundaries.md
  • references/store-event-naming.md
  • references/store-multiple-stores.md
  • references/store-separate-actions.md
  • references/ts-bound-store.md
  • references/ts-generic-selectors.md
  • references/ts-middleware-inference.md
  • references/ts-separate-types.md
  • references/ts-state-creator.md
  • references/update-async-actions.md
  • references/update-batch-updates.md
  • references/update-functional-set.md
  • references/update-immutable.md
  • references/update-shallow-merge.md

What this skill tells the agent

Community Zustand Best Practices

Comprehensive performance and architecture guide for Zustand state management in React applications. Contains 43 rules across 8 categories, prioritized by impact from critical (store architecture, selector optimization) to incremental (advanced patterns).

When to Apply

Reference these guidelines when:

  • Creating new Zustand stores
  • Optimizing re-render performance with selectors
  • Implementing persistence or middleware
  • Integrating Zustand with SSR/Next.js
  • Reviewing code for state management patterns

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Store ArchitectureCRITICALstore-
2Selector OptimizationCRITICALselect-
3Re-render PreventionHIGHrender-
4State UpdatesMEDIUM-HIGHupdate-
5Middleware ConfigurationMEDIUMmw-
6SSR and HydrationMEDIUMssr-
7TypeScript PatternsLOW-MEDIUMts-
8Advanced PatternsLOWadv-

Quick Reference

1. Store Architecture (CRITICAL)

  • `store-multiple-stores` - Use multiple small stores instead of one monolithic store
  • `store-separate-actions` - Separate actions from state in dedicated namespace
  • `store-event-naming` - Name actions as events not setters
  • `store-colocate-logic` - Colocate actions with the state they modify
  • `store-avoid-derived-state` - Derive computed values instead of storing them
  • `store-domain-boundaries` - Organize stores by feature domain

2. Selector Optimization (CRITICAL)

  • `select-always-use` - Always use selectors never subscribe to entire store
  • `select-atomic-picks` - Use atomic selectors for single values
  • `select-stable-returns` - Ensure selectors return stable references
  • `select-custom-hooks` - Export custom hooks not raw store
  • `select-auto-generate` - Use auto-generated selectors for large stores
  • `select-memoize-computed` - Memoize expensive computed selectors
  • `select-avoid-inline` - Define selectors outside components

3. Re-render Prevention (HIGH)

  • `render-use-shallow` - Use useShallow for multi-property selections
  • `render-equality-fn` - Provide custom equality functions when needed
  • `render-memo-children` - Memo children affected by parent store updates
  • `render-subscribe-external` - Use subscribe for non-React consumers
  • `render-avoid-object-returns` - Avoid returning new objects from selectors
  • `render-split-components` - Split components to minimize subscription scope

4. State Updates (MEDIUM-HIGH)

  • `update-functional-set` - Use functional form when updating based on previous state
  • `update-immutable` - Never mutate state directly
  • `update-shallow-merge` - Understand set() shallow merge behavior
  • `update-async-actions` - Handle async actions with loading and error states
  • `update-batch-updates` - Batch related updates in single set call

5. Middleware Configuration (MEDIUM)

  • `mw-devtools-actions` - Name actions for DevTools debugging
  • `mw-persist-partialize` - Use partialize for selective persistence
  • `mw-persist-migration` - Version and migrate persisted state
  • `mw-immer-nested` - Use immer for deeply nested state updates
  • `mw-combine-order` - Apply middlewares in correct order
  • `mw-slice-middleware` - Apply middleware at combined store level

6. SSR and Hydration (MEDIUM)

  • `ssr-skip-hydration` - Use skipHydration in SSR contexts
  • `ssr-manual-rehydrate` - Manually rehydrate on client mount
  • `ssr-hydration-hook` - Use custom hook to prevent hydration mismatch
  • `ssr-check-window` - Guard browser APIs with typeof window check

7. TypeScript Patterns (LOW-MEDIUM)

  • `ts-state-creator` - Use StateCreator for slice typing
  • `ts-middleware-inference` - Preserve type inference with middleware
  • `ts-separate-types` - Separate state and actions interfaces
  • `ts-generic-selectors` - Type selectors for reusability
  • `ts-bound-store` - Type combined stores correctly

8. Advanced Patterns (LOW)

  • `adv-context-stores` - Combine Zustand with React Context for dependency injection
  • `adv-transient-updates` - Use subscribe for transient updates
  • `adv-computed-getters` - Implement computed state with getters
  • `adv-third-party-integration` - Integrate with React Query and SWR

How to Use

Read individual reference files for detailed explanations and code examples:

  • Section definitions - Category structure and impact levels
  • Rule template - Template for adding new rules

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Use this skill in a project

Open any RiverX project, search the Skills panel for pproenca/dot-skills/zustand, and install it in one click.

Use this skill