tanstack-query について
TanStack Query v5 アプリの開発者向けに、性能最適化の指針をまとめたスキルです。影響度順の 41 ルールを 8 カテゴリーに分類し、データ取得コードの作成、レビュー、リファクタリングを支援します。
主な機能
- 018カテゴリーの性能ルール
- 02影響度に基づく優先順位
- 03クエリーキーとキャッシュ設定
- 04ミューテーションとプリフェッチ
- 05無限クエリーと Suspense
- 06エラー処理とレンダリング最適化
活用シーン
- 01クエリーとミューテーションの実装
- 02リクエストのウォーターフォールや性能のレビュー
- 03キャッシュ戦略の調整
- 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.mdcache-global-defaults.mdcache-invalidation-precision.mdcache-placeholder-vs-initial.mdcache-refetch-triggers.mdcache-staletime-gctime.mderror-conditional-retry.mderror-display-patterns.mderror-global-handler.mderror-retry-config.mderror-throw-on-error.mdinfinite-flatten-pages.mdinfinite-loading-states.mdinfinite-max-pages.mdinfinite-refetch-behavior.mdmutation-avoid-parallel.mdmutation-cancel-queries.mdmutation-invalidate-onsettled.mdmutation-optimistic-updates.mdmutation-setquerydata.mdprefetch-avoid-waterfalls.mdprefetch-flatten-api.mdprefetch-in-queryfn.mdprefetch-infinite-query.mdprefetch-on-hover.mdprefetch-server-components.mdrender-notify-props.mdrender-select-derived.mdrender-select-memoize.mdrender-structural-sharing.md詳細
TanStack Query のベストプラクティス
TanStack Query v5 アプリケーション向けの包括的なパフォーマンス最適化ガイドです。8 つのカテゴリにわたる 41 のルールを収録し、影響度に基づいて優先順位を付けることで、自動リファクタリングとコード生成を支援します。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- 新しいクエリ、ミューテーション、データ取得ロジックを記述する場合
- キャッシュ戦略(staleTime、gcTime)を実装する場合
- パフォーマンスの問題やリクエストのウォーターフォールについてコードをレビューする場合
- 既存の TanStack Query コードをリファクタリングする場合
- 無限クエリ、Suspense、楽観的更新を実装する場合
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | クエリキーの構造 | CRITICAL | tquery- |
| 2 | キャッシュ設定 | CRITICAL | cache- |
| 3 | ミューテーションのパターン | HIGH | mutation- |
| 4 | プリフェッチとウォーターフォール | HIGH | prefetch- |
| 5 | 無限クエリ | MEDIUM | infinite- |
| 6 | Suspense の統合 | MEDIUM | suspense- |
| 7 | エラーと再試行の処理 | MEDIUM | error- |
| 8 | レンダリングの最適化 | LOW-MEDIUM | render- |
クイックリファレンス
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スキルを参照してください
コメント
Markdown 対応