tanstack-router-best-practices について
React アプリで TanStack Router を使うための実践ガイドです。優先度別にルーティング、型安全性、データ読み込み、ナビゲーションなどのルールと例をまとめています。
主な機能
- 01型安全なルーティング指針
- 02ルート構成パターン
- 03ローダーとデータ取得のルール
- 04検索パラメーターの検証
- 05ナビゲーションとエラー処理
- 06コード分割とプリロード
活用シーン
- 01ルートとレイアウトの構築
- 02型安全な URL 状態の追加
- 03TanStack Query を使ったローダー設定
- 04ナビゲーションとルート読み込みの見直し
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ deckardger/ tanstack-agent-skills --skill tanstack-router-best-practicesインストール後、Claude Code で/tanstack-router-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/ctx-before-load.mdctx-dependency-injection.mdctx-root-context.mderr-not-found.mdload-deferred-data.mdload-ensure-query-data.mdload-error-handling.mdload-loader-deps.mdload-parallel.mdload-use-loaders.mdnav-active-states.mdnav-link-component.mdnav-relative-paths.mdnav-route-masks.mdnav-use-navigate.mdorg-file-based-routing.mdorg-index-routes.mdorg-pathless-layouts.mdorg-route-tree-structure.mdorg-virtual-routes.mdpreload-intent.mdpreload-manual.mdpreload-stale-time.mdrouter-default-options.mdsearch-custom-serializer.mdsearch-defaults.mdsearch-middleware.mdsearch-type-inheritance.mdsearch-validation.mdsplit-auto-splitting.md詳細
TanStack Router のベストプラクティス
React アプリケーションで TanStack Router のパターンを実装するための包括的なガイドラインです。これらのルールは、型安全性、データ読み込み、ナビゲーション、コード構成を最適化します。
適用する場面
- アプリケーションのルーティングを設定するとき
- 新しいルートやレイアウトを作成するとき
- 検索パラメーターの処理を実装するとき
- データローダーを設定するとき
- コード分割を設定するとき
- TanStack Query と統合するとき
- ナビゲーションパターンをリファクタリングするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | ルール | 影響 |
|---|---|---|---|
| CRITICAL | 型安全性 | 4 ルール | 実行時エラーを防ぎ、リファクタリングを可能にします |
| CRITICAL | ルート構成 | 5 ルール | 保守しやすいルート構造を実現します |
| HIGH | ルーター設定 | 1 ルール | ルーターのグローバルなデフォルト設定 |
| HIGH | データ読み込み | 6 ルール | データ取得とキャッシュを最適化します |
| HIGH | 検索パラメーター | 5 ルール | 型安全な URL の状態管理を可能にします |
| HIGH | エラー処理 | 1 ルール | 404 やエラーを適切に処理します |
| MEDIUM | ナビゲーション | 5 ルール | UX とアクセシビリティを向上させます |
| MEDIUM | コード分割 | 3 ルール | バンドルサイズを削減します |
| MEDIUM | プリロード | 3 ルール | 体感パフォーマンスを向上させます |
| LOW | ルートコンテキスト | 3 ルール | 依存性注入を可能にします |
クイックリファレンス
型安全性(プレフィックス:ts-)
ts-register-router— グローバルな型推論のためにルーター型を登録するts-use-from-param— 型の絞り込みにfromパラメーターを使用するts-route-context-typing— createRootRouteWithContext でルートコンテキストに型を付けるts-query-options-loader— 型推論のためにローダーで queryOptions を使用する
ルーター設定(プレフィックス:router-)
router-default-options— ルーターのデフォルト設定を行う(scrollRestoration、defaultErrorComponent など)
ルート構成(プレフィックス:org-)
org-file-based-routing— 規約に沿ったファイルベースルーティングを優先するorg-route-tree-structure— 階層的なルートツリーのパターンに従うorg-pathless-layouts— 共有レイアウトにはパスレスルートを使用するorg-index-routes— インデックスルートとレイアウトルートの違いを理解するorg-virtual-routes— 仮想ファイルルートを理解する
データ読み込み(プレフィックス:load-)
load-use-loaders— データ取得にはルートローダーを使用するload-loader-deps— キャッシュ制御のために loaderDeps を定義するload-ensure-query-data— TanStack Query とともに ensureQueryData を使用するload-deferred-data— 重要なデータと重要でないデータを分けるload-error-handling— ローダーのエラーを適切に処理するload-parallel— 並列ルート読み込みを活用する
検索パラメーター(プレフィックス:search-)
search-validation— 検索パラメーターは必ず検証するsearch-type-inheritance— 親の検索パラメーター型を活用するsearch-middleware— 検索パラメーターミドルウェアを使用するsearch-defaults— 適切なデフォルト値を設定するsearch-custom-serializer— カスタム検索パラメーターシリアライザーを設定する
エラー処理(プレフィックス:err-)
err-not-found— 見つからないルートを適切に処理する
ナビゲーション(プレフィックス:nav-)
nav-link-component— ナビゲーションには Link コンポーネントを優先するnav-active-states— アクティブなリンクの状態を設定するnav-use-navigate— プログラムによるナビゲーションには useNavigate を使用するnav-relative-paths— 相対パスによるナビゲーションを理解するnav-route-masks— モーダル URL にはルートマスクを使用する
コード分割(プレフィックス:split-)
split-lazy-routes— コード分割には .lazy.tsx を使用するsplit-critical-path— 重要な設定はメインのルートファイルに残すsplit-auto-splitting— 可能な場合は autoCodeSplitting を有効にする
プリロード(プレフィックス:preload-)
preload-intent— インテントベースのプリロードを有効にするpreload-stale-time— プリロードの stale time を設定するpreload-manual— 手動プリロードを戦略的に使用する
ルートコンテキスト(プレフィックス:ctx-)
ctx-root-context— ルートルートでコンテキストを定義するctx-before-load— beforeLoad でコンテキストを拡張するctx-dependency-injection— 依存性注入にコンテキストを使用する
使い方
rules/ ディレクトリにある各ルールファイルには、以下が記載されています。
- 説明 — このパターンが重要な理由
- 悪い例 — 避けるべきアンチパターン
- 良い例 — 推奨される実装
- コンテキスト — このルールを適用する場合、または適用しない場合
詳細リファレンス
詳しいガイダンスとコード例については、rules/ ディレクトリにある各ルールファイルを参照してください。
コメント
Markdown 対応