zustand について
React の Zustand 状態管理における性能とアーキテクチャの指針をまとめたスキルです。ストア設計、セレクター、更新、ミドルウェア、SSR、TypeScript などを 43 項目で扱います。
主な機能
- 018 分野にわたる 43 項目
- 02ストア設計の指針
- 03セレクターと再レンダリングの最適化
- 04状態更新とミドルウェアの実践
- 05SSR とハイドレーションの指針
- 06TypeScript と高度なパターン
活用シーン
- 01React アプリの Zustand ストア設計
- 02不要なコンポーネント再レンダリングの削減
- 03永続化とミドルウェアの設定
- 04SSR とハイドレーションの状態設計の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill zustandインストール後、Claude Code で/zustandを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdadv-computed-getters.mdadv-context-stores.mdadv-third-party-integration.mdadv-transient-updates.mdmw-combine-order.mdmw-devtools-actions.mdmw-immer-nested.mdmw-persist-migration.mdmw-persist-partialize.mdmw-slice-middleware.mdrender-avoid-object-returns.mdrender-equality-fn.mdrender-memo-children.mdrender-split-components.mdrender-subscribe-external.mdrender-use-shallow.mdselect-always-use.mdselect-atomic-picks.mdselect-auto-generate.mdselect-avoid-inline.mdselect-custom-hooks.mdselect-memoize-computed.mdselect-stable-returns.mdssr-check-window.mdssr-hydration-hook.mdssr-manual-rehydrate.mdssr-skip-hydration.md詳細
コミュニティによる Zustand のベストプラクティス
React アプリケーションで Zustand を使った状態管理を行うための、パフォーマンスとアーキテクチャに関する包括的なガイドです。8 つのカテゴリにまたがる 43 のルールを収録しており、影響度に応じて、最優先の項目(ストアアーキテクチャ、セレクターの最適化)から段階的な項目(高度なパターン)まで優先順位を付けています。
適用するタイミング
次の場合に、これらのガイドラインを参照してください。
- 新しい Zustand ストアを作成するとき
- セレクターを使って再レンダリングのパフォーマンスを最適化するとき
- 永続化やミドルウェアを実装するとき
- Zustand を SSR/Next.js と統合するとき
- 状態管理のパターンに沿ってコードをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | ストアアーキテクチャ | CRITICAL | store- |
| 2 | セレクターの最適化 | CRITICAL | select- |
| 3 | 再レンダリングの防止 | HIGH | render- |
| 4 | 状態の更新 | MEDIUM-HIGH | update- |
| 5 | ミドルウェアの設定 | MEDIUM | mw- |
| 6 | SSR とハイドレーション | MEDIUM | ssr- |
| 7 | TypeScript のパターン | LOW-MEDIUM | ts- |
| 8 | 高度なパターン | LOW | adv- |
クイックリファレンス
1. ストアアーキテクチャ(CRITICAL)
store-multiple-stores- 1 つの巨大なストアではなく、小さなストアを複数使いますstore-separate-actions- 専用の名前空間でアクションと状態を分離しますstore-event-naming- アクションにはセッターではなくイベントの名前を付けますstore-colocate-logic- アクションを、変更対象の状態と同じ場所に配置しますstore-avoid-derived-state- 計算値は保存せずに導出しますstore-domain-boundaries- 機能ドメインごとにストアを整理します
2. セレクターの最適化(CRITICAL)
select-always-use- ストア全体を購読せず、常にセレクターを使いますselect-atomic-picks- 単一の値にはアトミックセレクターを使いますselect-stable-returns- セレクターが安定した参照を返すようにしますselect-custom-hooks- ストアそのものではなく、カスタムフックをエクスポートしますselect-auto-generate- 大規模なストアには自動生成セレクターを使いますselect-memoize-computed- 処理コストの高い計算セレクターをメモ化しますselect-avoid-inline- セレクターはコンポーネントの外で定義します
3. 再レンダリングの防止(HIGH)
render-use-shallow- 複数のプロパティを選択する場合は useShallow を使いますrender-equality-fn- 必要に応じてカスタム等価関数を指定しますrender-memo-children- 親のストア更新の影響を受ける子コンポーネントをメモ化しますrender-subscribe-external- React 以外のコンシューマーには subscribe を使いますrender-avoid-object-returns- セレクターから新しいオブジェクトを返すのを避けますrender-split-components- 購読の範囲を最小限にするため、コンポーネントを分割します
4. 状態の更新(MEDIUM-HIGH)
update-functional-set- 以前の状態に基づいて更新する場合は、関数形式を使いますupdate-immutable- 状態を直接変更してはいけませんupdate-shallow-merge- set() の浅いマージの動作を理解しますupdate-async-actions- ローディング状態とエラー状態を使って非同期アクションを処理しますupdate-batch-updates- 関連する更新を 1 回の set 呼び出しにまとめます
5. ミドルウェアの設定(中)
mw-devtools-actions- DevTools のデバッグ用にアクションに名前を付けますmw-persist-partialize-partializeを使用して、選択的に永続化しますmw-persist-migration- 永続化された状態をバージョン管理し、移行しますmw-immer-nested- 深くネストされた状態を更新する際にimmerを使用しますmw-combine-order- ミドルウェアを正しい順序で適用しますmw-slice-middleware- 結合されたストアのレベルでミドルウェアを適用します
6. SSR とハイドレーション(中)
ssr-skip-hydration- SSR のコンテキストでskipHydrationを使用しますssr-manual-rehydrate- クライアントのマウント時に手動で再ハイドレーションしますssr-hydration-hook- ハイドレーションの不一致を防ぐためにカスタムフックを使用しますssr-check-window-typeof windowチェックでブラウザー API の使用をガードします
7. TypeScript のパターン(低〜中)
ts-state-creator- スライスの型付けにStateCreatorを使用しますts-middleware-inference- ミドルウェアを使用しても型推論を維持しますts-separate-types- 状態とアクションのインターフェースを分けますts-generic-selectors- 再利用できるようセレクターに型を付けますts-bound-store- 結合されたストアに正しく型を付けます
8. 高度なパターン(低)
adv-context-stores- Zustand と React Context を組み合わせて依存性を注入しますadv-transient-updates- 一時的な更新にsubscribeを使用しますadv-computed-getters- ゲッターで計算済みの状態を実装しますadv-third-party-integration- React Query と SWR を統合します
使用方法
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクションの定義 - カテゴリーの構成と影響度
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応