tanstack-query について
開発者やコーディングエージェント向けのTanStack Query v5ベストプラクティススキルです。40の優先ルールでデータ取得、キャッシュ、ミューテーション、描画を扱います。
主な機能
- 018カテゴリ40ルール
- 02クエリキーとキャッシュの指針
- 03ミューテーションとプリフェッチのパターン
- 04無限クエリとSuspenseの指針
- 05エラー処理と描画の最適化
活用シーン
- 01クエリキーとキャッシュ設定の設計
- 02ミューテーションやプリフェッチ処理のリファクタリング
- 03Suspense、リトライ、描画性能のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill tanstack-queryインストール後、Claude Code で/tanstack-queryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdreferences/_sections.mdcache-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-on-hover.mdprefetch-server-components.mdrender-notify-props.md詳細
TanStack Query のベストプラクティス
TanStack Query v5 アプリケーション向けの包括的なパフォーマンス最適化ガイドです。自動リファクタリングとコード生成の指針となるよう、影響度順に優先順位付けした 8 カテゴリ、40 のルールを収録しています。
適用するタイミング
次のような場合に、これらのガイドラインを参照してください。
- 新しいクエリ、ミューテーション、またはデータ取得ロジックを作成するとき
- キャッシュ戦略(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 を使用します
3. ミューテーションのパターン(HIGH)
mutation-optimistic-updates- ロールバックを伴う楽観的更新を実装しますmutation-invalidate-onsettled- onSuccess ではなく onSettled で無効化しますmutation-cancel-queries- 楽観的更新の前にクエリをキャンセルしますmutation-setquerydata- キャッシュを即座に更新するには setQueryData を使用しますmutation-avoid-parallel- 同じデータへの並列ミューテーションを避けます
4. プリフェッチとウォーターフォール(HIGH)
prefetch-avoid-waterfalls- リクエストのウォーターフォールを避けますprefetch-on-hover- 体感速度を高めるため、ホバー時にプリフェッチしますprefetch-in-queryfn- queryFn で依存データをプリフェッチしますprefetch-server-components- Server Components でプリフェッチします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 Boundaries を組み合わせますsuspense-parallel-queries- useSuspenseQueries で Suspense クエリを組み合わせますsuspense-boundaries-placement- Suspense 境界を適切な位置に配置します
7. エラーとリトライの処理(MEDIUM)
error-retry-config- 指数バックオフを使用してリトライを設定しますerror-conditional-retry- エラーの種類に基づく条件付きリトライを使用しますerror-global-handler- よくあるエラーにはグローバルエラーハンドラーを使用しますerror-display-patterns- エラーを適切に表示しますerror-throw-on-error- Error Boundaries とともに throwOnError を使用します
8. レンダリングの最適化(LOW-MEDIUM)
render-select-memoize- select 関数をメモ化するrender-select-derived- select を使用してデータを導出し、再レンダリングを減らすrender-notify-props- notifyOnChangeProps を使用して再レンダリングを制限するrender-structural-sharing- 構造共有について理解するrender-tracked-props- すべてのプロパティを分割代入するのを避ける
使用方法
詳しい説明とコード例については、個別のリファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響レベル
- リファレンスファイル:
references/{prefix}-{slug}.md
各リファレンスファイルには、以下が含まれています。
- 重要な理由についての簡単な説明
- 説明付きの誤ったコード例
- 説明付きの正しいコード例
- 追加の背景情報と参考資料
関連スキル
- 型安全なクエリフックを生成するには、
orvalスキルをご覧ください - テストで API レスポンスをモックするには、
test-mswスキルをご覧ください - React 19 のデータ取得パターンについては、
react-19スキルをご覧ください
コンパイル済みドキュメント全文
すべてのルールを展開した完全なガイドについては、AGENTS.md をご覧ください。
コメント
Markdown 対応