mcpField
T
tanstack-query-best-practices

tanstack-query-best-practices

github.com/deckardger開発22912.9k 回インストール7 週間前に更新
リポジトリ

tanstack-query-best-practices について

React アプリを開発する人向けの TanStack Query 実践ガイドです。データ取得、キャッシュ、ミューテーション、サーバー状態の同期を優先度別のルールと良否の例で解説します。

主な機能

  1. 01クエリキーの整理とキャッシュ
  2. 02ミューテーション、楽観的更新、エラー処理
  3. 03プリフェッチと並列クエリ
  4. 04無限クエリと SSR 連携
  5. 05パフォーマンスとオフライン対応

活用シーン

  1. 01新機能のデータ取得設計
  2. 02キャッシュやクエリキー設定の見直し
  3. 03ミューテーションと楽観的更新の実装
  4. 04SSR のハイドレーションやページネーションの問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/deckardger/tanstack-agent-skills --skill tanstack-query-best-practices

インストール後、Claude Code で/tanstack-query-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

rules/
cache-defaults.md
cache-gc-time.md
cache-invalidation.md
cache-placeholder-vs-initial.md
cache-stale-time.md
err-error-boundaries.md
err-fallback-data.md
err-retry-config.md
inf-loading-guards.md
inf-max-pages.md
inf-page-params.md
mut-error-handling.md
mut-invalidate-queries.md
mut-loading-states.md
mut-mutation-state.md
mut-optimistic-updates.md
mut-rollback-context.md
network-mode.md
parallel-use-queries.md
perf-notify-change-props.md
perf-placeholder-data.md
perf-select-transform.md
perf-structural-sharing.md
persist-queries.md
pf-ensure-query-data.md
pf-intent-prefetch.md
pf-route-prefetch.md
pf-stale-time-config.md
qk-array-structure.md
qk-factory-pattern.md

詳細

TanStack Query のベストプラクティス

React アプリケーションで TanStack Query(React Query)のパターンを実装するための包括的なガイドラインです。これらのルールは、データ取得、キャッシュ、ミューテーション、サーバー状態の同期を最適化します。

適用するタイミング

  • 新しいデータ取得ロジックを作成するとき
  • クエリ設定を行うとき
  • ミューテーションと楽観的更新を実装するとき
  • キャッシュ戦略を設定するとき
  • SSR/SSG と統合するとき
  • 既存のデータ取得コードをリファクタリングするとき

優先度別のルールカテゴリ

優先度カテゴリルール影響
CRITICALクエリキー5 ルールキャッシュの不具合やデータの不整合を防ぎます
CRITICALキャッシュ5 ルールパフォーマンスとデータの鮮度を最適化します
HIGHミューテーション6 ルールデータの整合性と UI の一貫性を確保します
HIGHエラー処理3 ルールユーザー体験の低下を防ぎます
MEDIUMプリフェッチ4 ルール体感パフォーマンスを向上させます
MEDIUM並列クエリ2 ルール動的な並列データ取得を可能にします
MEDIUM無限クエリ3 ルールページネーションの不具合を防ぎます
MEDIUMSSR 統合4 ルール適切なハイドレーションを可能にします
LOWパフォーマンス4 ルール不要な再レンダリングを減らします
LOWオフラインサポート2 ルールオフラインファーストのパターンを可能にします

クイックリファレンス

クエリキー(プレフィックス:qk-)
  • qk-array-structure — クエリキーには常に配列を使用します
  • qk-include-dependencies — クエリが依存するすべての変数を含めます
  • qk-hierarchical-organization — キーを階層的に整理します(エンティティ → ID → フィルター)
  • qk-factory-pattern — 複雑なアプリケーションではクエリキーファクトリーを使用します
  • qk-serializable — すべてのキー要素が JSON シリアライズ可能であることを確認します
キャッシュ(プレフィックス:cache-)
  • cache-stale-time — データの変動性に応じて適切な staleTime を設定します
  • cache-gc-time — 非アクティブなクエリを保持する gcTime を設定します
  • cache-defaults — QueryClient レベルで適切なデフォルト値を設定します
  • cache-invalidation — 広範なパターンよりも対象を絞った無効化を使用します
  • cache-placeholder-vs-initial — placeholder データと initial データの違いを理解します
ミューテーション(プレフィックス:mut-)
  • mut-invalidate-queries — ミューテーション後は、関連するクエリを必ず無効化します
  • mut-optimistic-updates — 応答性の高い UI を実現するため、楽観的更新を実装します
  • mut-rollback-context — onMutate からロールバック用のコンテキストを渡します
  • mut-error-handling — ミューテーションのエラーを適切に処理します
  • mut-loading-states — ミューテーションの読み込み状態には isPending を使用します
  • mut-mutation-state — コンポーネント間で状態を追跡するには useMutationState を使用します
エラー処理(プレフィックス:err-)
  • err-error-boundaries — useQueryErrorResetBoundary とエラーバウンダリーを使用します
  • err-retry-config — リトライロジックを適切に設定します
  • err-fallback-data — 適切な場合はフォールバックデータを提供します
プリフェッチ(プレフィックス:pf-)
  • pf-intent-prefetch — ユーザーの操作意図(ホバー、フォーカス)に応じてプリフェッチします
  • pf-route-prefetch — ルート遷移中にデータをプリフェッチします
  • pf-stale-time-config — プリフェッチ時に staleTime を設定します
  • pf-ensure-query-data — 条件付きのプリフェッチには ensureQueryData を使用します
無限クエリ(プレフィックス:inf-)
  • inf-page-params — 必ず getNextPageParam を指定します
  • inf-loading-guards — 追加データを取得する前に isFetchingNextPage を確認します
  • inf-max-pages — 大規模なデータセットでは maxPages の使用を検討します
SSR 統合(プレフィックス:ssr-)
  • ssr-dehydration — SSR では dehydrate/hydrate パターンを使用します
  • ssr-client-per-request — リクエストごとに QueryClient を作成します
  • ssr-stale-time-server — サーバーでは staleTime を長めに設定します
  • ssr-hydration-boundary — HydrationBoundary でラップします
並列クエリ(プレフィックス:parallel-)
  • parallel-use-queries — 動的な並列クエリには useQueries を使用します
  • query-cancellation — クエリのキャンセルを適切に実装します
パフォーマンス (プレフィックス: perf-)
  • perf-select-transform — select を使ってデータを変換/フィルタリングする
  • perf-structural-sharing — 構造的共有を活用する
  • perf-notify-change-props — notifyOnChangeProps で再レンダリングを制限する
  • perf-placeholder-data — placeholderData を使って UI を即時表示する
オフラインサポート (プレフィックス: offline-)
  • network-mode — オフラインサポート用にネットワークモードを設定する
  • persist-queries — オフラインサポート用にクエリの永続化を設定する

使用方法

rules/ ディレクトリ内の各ルールファイルには以下が含まれます。

  1. 説明 — このパターンが重要な理由
  2. 悪い例 — 避けるべきアンチパターン
  3. 良い例 — 推奨される実装
  4. コンテキスト — このルールを適用すべき場合、または省略すべき場合

完全なリファレンス

詳細なガイダンスとコード例については、rules/ ディレクトリ内の個別のルールファイルを参照してください。

コメント