mcpField
T
tanstack-query

tanstack-query

github.com/pymodel開発40489 回インストール5 週間前に更新
リポジトリ

tanstack-query について

TanStack Query v5 アプリの開発者向けに、性能最適化の指針をまとめたスキルです。影響度順の 41 ルールを 8 カテゴリーに分類し、データ取得コードの作成、レビュー、リファクタリングを支援します。

主な機能

  1. 018カテゴリーの性能ルール
  2. 02影響度に基づく優先順位
  3. 03クエリーキーとキャッシュ設定
  4. 04ミューテーションとプリフェッチ
  5. 05無限クエリーと Suspense
  6. 06エラー処理とレンダリング最適化

活用シーン

  1. 01クエリーとミューテーションの実装
  2. 02リクエストのウォーターフォールや性能のレビュー
  3. 03キャッシュ戦略の調整
  4. 04既存の TanStack Query コードのリファクタリング

インストール

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

$npx skills add https://github.com/pymodel/react-frontend-skills --skill tanstack-query

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

同梱ファイル

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

references/
cache-enabled-option.md
cache-global-defaults.md
cache-invalidation-precision.md
cache-placeholder-vs-initial.md
cache-refetch-triggers.md
cache-staletime-gctime.md
error-conditional-retry.md
error-display-patterns.md
error-global-handler.md
error-retry-config.md
error-throw-on-error.md
infinite-flatten-pages.md
infinite-loading-states.md
infinite-max-pages.md
infinite-refetch-behavior.md
mutation-avoid-parallel.md
mutation-cancel-queries.md
mutation-invalidate-onsettled.md
mutation-optimistic-updates.md
mutation-setquerydata.md
prefetch-avoid-waterfalls.md
prefetch-flatten-api.md
prefetch-in-queryfn.md
prefetch-infinite-query.md
prefetch-on-hover.md
prefetch-server-components.md
render-notify-props.md
render-select-derived.md
render-select-memoize.md
render-structural-sharing.md

詳細

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

TanStack Query v5 アプリケーション向けの包括的なパフォーマンス最適化ガイドです。8 つのカテゴリにわたる 41 のルールを収録し、影響度に基づいて優先順位を付けることで、自動リファクタリングとコード生成を支援します。

適用する場面

以下の場合に、これらのガイドラインを参照してください。

  • 新しいクエリ、ミューテーション、データ取得ロジックを記述する場合
  • キャッシュ戦略(staleTime、gcTime)を実装する場合
  • パフォーマンスの問題やリクエストのウォーターフォールについてコードをレビューする場合
  • 既存の TanStack Query コードをリファクタリングする場合
  • 無限クエリ、Suspense、楽観的更新を実装する場合

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

優先度カテゴリ影響度プレフィックス
1クエリキーの構造CRITICALtquery-
2キャッシュ設定CRITICALcache-
3ミューテーションのパターンHIGHmutation-
4プリフェッチとウォーターフォールHIGHprefetch-
5無限クエリMEDIUMinfinite-
6Suspense の統合MEDIUMsuspense-
7エラーと再試行の処理MEDIUMerror-
8レンダリングの最適化LOW-MEDIUMrender-

クイックリファレンス

1. クエリキーの構造(CRITICAL)
  • tquery-key-factories - 一元管理されたクエリキーファクトリーを使用する
  • tquery-hierarchical-keys - 汎用的なものから具体的なものへとキーを構成する
  • tquery-always-arrays - 常に配列形式のクエリキーを使用する
  • tquery-serializable-objects - キーにはシリアライズ可能なオブジェクトを使用する
  • tquery-options-pattern - 型安全に共有するために queryOptions を使用する
  • tquery-colocate-keys - クエリキーを機能と同じ場所に配置する
2. キャッシュ設定(CRITICAL)
  • cache-staletime-gctime - staleTime と gcTime の違いを理解する
  • cache-global-defaults - グローバルなデフォルト値を適切に設定する
  • cache-placeholder-vs-initial - placeholderData と initialData を正しく使い分ける
  • cache-invalidation-precision - 正確に無効化する
  • cache-refetch-triggers - 自動再取得のトリガーを制御する
  • cache-enabled-option - 条件付きクエリには enabled または skipToken を使用する
3. ミューテーションのパターン(HIGH)
  • mutation-optimistic-updates - ロールバックに対応した楽観的更新を実装する
  • mutation-invalidate-onsettled - ミューテーションの契約に応じて無効化コールバックを選択する
  • mutation-cancel-queries - 楽観的更新の前にクエリをキャンセルする
  • mutation-setquerydata - キャッシュを即座に更新するには setQueryData を使用する
  • mutation-avoid-parallel - 同じデータに対する並列ミューテーションを避ける
4. プリフェッチとウォーターフォール(HIGH)
  • prefetch-avoid-waterfalls - リクエストのウォーターフォールを避ける
  • prefetch-on-hover - 体感速度を高めるためにホバー時にプリフェッチする
  • prefetch-in-queryfn - キーが判明した時点で後続のプリフェッチを開始する
  • prefetch-server-components - Server Components でプリフェッチする
  • prefetch-infinite-query - queryClient.infiniteQuery (5.102+) で無限リストをプリフェッチする
  • prefetch-flatten-api - API をフラット化してウォーターフォールを減らす
5. 無限クエリ(MEDIUM)
  • infinite-max-pages - maxPages で無限クエリのページ数を制限する
  • infinite-flatten-pages - レンダリング用にページをフラット化する
  • infinite-refetch-behavior - 無限クエリの再取得動作を理解する
  • infinite-loading-states - 無限クエリの読み込み状態を正しく処理する
6. Suspense の統合(MEDIUM)
  • suspense-use-suspense-hooks - 読み込み状態を簡潔に扱うために Suspense フックを使用する
  • suspense-error-boundaries - Suspense は必ず Error Boundary と組み合わせる
  • suspense-parallel-queries - Suspense クエリを useSuspenseQueries と組み合わせる
  • suspense-boundaries-placement - Suspense Boundary を戦略的に配置する
7. エラーと再試行の処理(MEDIUM)
  • error-retry-config - 指数バックオフを用いて再試行を設定する
  • error-conditional-retry - エラーの種類に応じた条件付き再試行を使用する
  • error-global-handler - 共通エラーにはグローバルエラーハンドラーを使用する
  • error-display-patterns - エラーを適切に表示する
  • error-throw-on-error - Error Boundary とともに throwOnError を使用する
8. レンダリングの最適化(低〜中)
  • render-select-memoize - select 関数をメモ化する
  • render-select-derived - select を使ってデータを導出し、再レンダリングを減らす
  • render-notify-props - notifyOnChangeProps よりも追跡対象プロパティを優先する
  • render-structural-sharing - 構造的共有について理解する
  • render-tracked-props - 追跡対象プロパティによる最適化を維持する

使用方法

まずプロジェクトのルートで実行します。

npx -y @pymodel/react-frontend-skills detect                       # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill tanstack-query  # deprecated APIs → rule IDs

上記のルールのうちタスクに該当するものと、scan で検出された項目ごとに references/<rule-id>.md を読み、重要な理由と誤ったコード・正しいコードを確認してください。

関連スキル

  • テストで API レスポンスをモックする方法については、msw スキルを参照してください
  • React 19 のデータ取得パターンについては、react スキルを参照してください

コメント