[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FEMYDFJQN6WBQC5E38EN2Z":3,"skill-same:01M6FEMYDFJQN6WBQC5E38EN2Z":45},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":27,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M6FEMYDFJQN6WBQC5E38EN2Z","zustand",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fpproenca\u002Fdot-skills\u002Fzustand\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"# Community Zustand Best Practices\n\nComprehensive 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).\n\n## When to Apply\n\nReference these guidelines when:\n- Creating new Zustand stores\n- Optimizing re-render performance with selectors\n- Implementing persistence or middleware\n- Integrating Zustand with SSR\u002FNext.js\n- Reviewing code for state management patterns\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Store Architecture | CRITICAL | `store-` |\n| 2 | Selector Optimization | CRITICAL | `select-` |\n| 3 | Re-render Prevention | HIGH | `render-` |\n| 4 | State Updates | MEDIUM-HIGH | `update-` |\n| 5 | Middleware Configuration | MEDIUM | `mw-` |\n| 6 | SSR and Hydration | MEDIUM | `ssr-` |\n| 7 | TypeScript Patterns | LOW-MEDIUM | `ts-` |\n| 8 | Advanced Patterns | LOW | `adv-` |\n\n## Quick Reference\n\n### 1. Store Architecture (CRITICAL)\n\n- [`store-multiple-stores`](references\u002Fstore-multiple-stores.md) - Use multiple small stores instead of one monolithic store\n- [`store-separate-actions`](references\u002Fstore-separate-actions.md) - Separate actions from state in dedicated namespace\n- [`store-event-naming`](references\u002Fstore-event-naming.md) - Name actions as events not setters\n- [`store-colocate-logic`](references\u002Fstore-colocate-logic.md) - Colocate actions with the state they modify\n- [`store-avoid-derived-state`](references\u002Fstore-avoid-derived-state.md) - Derive computed values instead of storing them\n- [`store-domain-boundaries`](references\u002Fstore-domain-boundaries.md) - Organize stores by feature domain\n\n### 2. Selector Optimization (CRITICAL)\n\n- [`select-always-use`](references\u002Fselect-always-use.md) - Always use selectors never subscribe to entire store\n- [`select-atomic-picks`](references\u002Fselect-atomic-picks.md) - Use atomic selectors for single values\n- [`select-stable-returns`](references\u002Fselect-stable-returns.md) - Ensure selectors return stable references\n- [`select-custom-hooks`](references\u002Fselect-custom-hooks.md) - Export custom hooks not raw store\n- [`select-auto-generate`](references\u002Fselect-auto-generate.md) - Use auto-generated selectors for large stores\n- [`select-memoize-computed`](references\u002Fselect-memoize-computed.md) - Memoize expensive computed selectors\n- [`select-avoid-inline`](references\u002Fselect-avoid-inline.md) - Define selectors outside components\n\n### 3. Re-render Prevention (HIGH)\n\n- [`render-use-shallow`](references\u002Frender-use-shallow.md) - Use useShallow for multi-property selections\n- [`render-equality-fn`](references\u002Frender-equality-fn.md) - Provide custom equality functions when needed\n- [`render-memo-children`](references\u002Frender-memo-children.md) - Memo children affected by parent store updates\n- [`render-subscribe-external`](references\u002Frender-subscribe-external.md) - Use subscribe for non-React consumers\n- [`render-avoid-object-returns`](references\u002Frender-avoid-object-returns.md) - Avoid returning new objects from selectors\n- [`render-split-components`](references\u002Frender-split-components.md) - Split components to minimize subscription scope\n\n### 4. State Updates (MEDIUM-HIGH)\n\n- [`update-functional-set`](references\u002Fupdate-functional-set.md) - Use functional form when updating based on previous state\n- [`update-immutable`](references\u002Fupdate-immutable.md) - Never mutate state directly\n- [`update-shallow-merge`](references\u002Fupdate-shallow-merge.md) - Understand set() shallow merge behavior\n- [`update-async-actions`](references\u002Fupdate-async-actions.md) - Handle async actions with loading and error states\n- [`update-batch-updates`](references\u002Fupdate-batch-updates.md) - Batch related updates in single set call\n\n### 5. Middleware Configuration (MEDIUM)\n\n- [`mw-devtools-actions`](references\u002Fmw-devtools-actions.md) - Name actions for DevTools debugging\n- [`mw-persist-partialize`](references\u002Fmw-persist-partialize.md) - Use partialize for selective persistence\n- [`mw-persist-migration`](references\u002Fmw-persist-migration.md) - Version and migrate persisted state\n- [`mw-immer-nested`](references\u002Fmw-immer-nested.md) - Use immer for deeply nested state updates\n- [`mw-combine-order`](references\u002Fmw-combine-order.md) - Apply middlewares in correct order\n- [`mw-slice-middleware`](references\u002Fmw-slice-middleware.md) - Apply middleware at combined store level\n\n### 6. SSR and Hydration (MEDIUM)\n\n- [`ssr-skip-hydration`](references\u002Fssr-skip-hydration.md) - Use skipHydration in SSR contexts\n- [`ssr-manual-rehydrate`](references\u002Fssr-manual-rehydrate.md) - Manually rehydrate on client mount\n- [`ssr-hydration-hook`](references\u002Fssr-hydration-hook.md) - Use custom hook to prevent hydration mismatch\n- [`ssr-check-window`](references\u002Fssr-check-window.md) - Guard browser APIs with typeof window check\n\n### 7. TypeScript Patterns (LOW-MEDIUM)\n\n- [`ts-state-creator`](references\u002Fts-state-creator.md) - Use StateCreator for slice typing\n- [`ts-middleware-inference`](references\u002Fts-middleware-inference.md) - Preserve type inference with middleware\n- [`ts-separate-types`](references\u002Fts-separate-types.md) - Separate state and actions interfaces\n- [`ts-generic-selectors`](references\u002Fts-generic-selectors.md) - Type selectors for reusability\n- [`ts-bound-store`](references\u002Fts-bound-store.md) - Type combined stores correctly\n\n### 8. Advanced Patterns (LOW)\n\n- [`adv-context-stores`](references\u002Fadv-context-stores.md) - Combine Zustand with React Context for dependency injection\n- [`adv-transient-updates`](references\u002Fadv-transient-updates.md) - Use subscribe for transient updates\n- [`adv-computed-getters`](references\u002Fadv-computed-getters.md) - Implement computed state with getters\n- [`adv-third-party-integration`](references\u002Fadv-third-party-integration.md) - Integrate with React Query and SWR\n\n## How to Use\n\nRead individual reference files for detailed explanations and code examples:\n\n- [Section definitions](references\u002F_sections.md) - Category structure and impact levels\n- [Rule template](assets\u002Ftemplates\u002F_template.md) - Template for adding new rules\n\n## Reference Files\n\n| File | Description |\n|------|-------------|\n| [references\u002F_sections.md](references\u002F_sections.md) | Category definitions and ordering |\n| [assets\u002Ftemplates\u002F_template.md](assets\u002Ftemplates\u002F_template.md) | Template for new rules |\n| [metadata.json](metadata.json) | Version and reference information |\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fpproenca\u002Fdot-skills\u002Fzustand",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill zustand",{"tool":37,"command":38},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill zustand",{"tool":40,"command":41},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill zustand","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fpproenca\u002Fdot-skills\u002Fzustand\u002FSKILL.md",true,[],[46,60,70,79,85,92],{"skillNo":47,"name":48,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":49,"categories":50,"keywords":56,"publishedAt":18},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[51],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[57,58,59],"model","model hierarchy","model hierarchy skill",{"skillNo":61,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":66,"publishedAt":18},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[65],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},[67,68,69],"MCP","zoom","zoom mcp",{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":18},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[76,77,78,68],"sdk","zoom apps sdk","apps",{"skillNo":80,"name":81,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":18},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[81],{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":18},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[90],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},[87],{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[94]]