mcpField
T
tanstack-router

tanstack-router

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

tanstack-router について

TanStack RouterとTypeScriptでReact SPAを構築する開発者向けのリファレンススキルです。ファイルベースのルーティング、型安全なナビゲーション、ルートデータの取得、Cloudflare Workersへのデプロイを扱います。

主な機能

  1. 01型安全なナビゲーションのパターン
  2. 02ファイルベースのルート設定
  3. 03データ取得用ルートローダー
  4. 04TanStack Queryとの連携
  5. 05Cloudflare Workersのデプロイガイド
  6. 06テンプレートとトラブルシューティング資料

活用シーン

  1. 01React SPAでファイルベースルーティングを設定
  2. 02型付きパラメーターでルートデータを取得
  3. 03ルートローダーとTanStack Queryを連携
  4. 04Cloudflare Workers向けにプロジェクトを設定

インストール

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

$npx skills add https://github.com/secondsky/claude-skills --skill tanstack-router

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

同梱ファイル

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

references/
common-errors.md
templates/
package.json
route-examples.tsx
vite.config.ts

詳細

TanStack Router スキル

TanStack Router を使用して、Cloudflare Workers へのデプロイに最適化された、型安全なファイルベースルーティングを React SPA に構築します。


このスキルを使用するタイミング

次の内容に言及すると自動的に起動します:

  • 「TanStack Router」または「型安全なルーティング」
  • 「ファイルベースルーティング」または「ルート設定」
  • TypeScript を重視した「React のルーティング」
  • 「ルートローダー」または「ルートでのデータ読み込み」
  • 「Cloudflare Workers のルーティング」

次の用途でこのスキルを使用します:

  • 型安全なナビゲーションを備えた SPA の構築
  • ファイルベースルーティング(Next.js のようなもの)の実装
  • ルート単位のデータ読み込みが必要な場合
  • ルーティングと TanStack Query の統合
  • Cloudflare Workers へのデプロイ
  • React Router より優れた TypeScript サポートが必要な場合

クイックスタート

インストール
bun add @tanstack/react-router @tanstack/router-devtools
bun add -d @tanstack/router-plugin

最新バージョン: v1.170.18(2026-08-03 に確認済み)

Vite の設定
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'

export default defineConfig({
  plugins: [
    TanStackRouterVite(), // MUST come before react()
    react(),
  ],
})
基本設定
// src/routes/__root.tsx
import { createRootRoute, Outlet } from '@tanstack/react-router'

export const Route = createRootRoute({
  component: () => (
    <div>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
      </nav>
      <hr />
      <Outlet />
    </div>
  ),
})

// src/routes/index.tsx
import { createFileRoute } from '@tanstack/react-router'

export const Route = createFileRoute('/')({
  component: () => <h1>Home Page</h1>,
})

// src/routes/about.tsx
import { createFileRoute } from '@tanstack/react-router'

export const Route = createFileRoute('/about')({
  component: () => <h1>About Page</h1>,
})

// src/main.tsx
import { createRouter, RouterProvider } from '@tanstack/react-router'
import { routeTree } from './routeTree.gen' // Auto-generated

const router = createRouter({ routeTree })

function App() {
  return <RouterProvider router={router} />
}

主な機能

1. 型安全なナビゲーション
// Fully typed!
<Link to="/posts/$postId" params={{ postId: '123' }} />

// TypeScript error if route doesn't exist
<Link to="/invalid-route" /> // ❌ Error!
2. ルートローダー(データ取得)
// src/routes/posts.$postId.tsx
export const Route = createFileRoute('/posts/$postId')({
  loader: async ({ params }) => {
    const post = await fetchPost(params.postId) // Fully typed!
    return { post }
  },
  component: ({ useLoaderData }) => {
    const { post } = useLoaderData()
    return <h1>{post.title}</h1>
  },
})
3. TanStack Query との統合
import { queryOptions } from '@tanstack/react-query'

const postQueryOptions = (postId: string) =>
  queryOptions({
    queryKey: ['posts', postId],
    queryFn: () => fetchPost(postId),
  })

export const Route = createFileRoute('/posts/$postId')({
  loader: ({ context: { queryClient }, params }) =>
    queryClient.ensureQueryData(postQueryOptions(params.postId)),
  component: () => {
    const { postId } = Route.useParams()
    const { data: post } = useQuery(postQueryOptions(postId))
    return <h1>{post.title}</h1>
  },
})

よくあるエラーと解決策

エラー 1:Devtools の依存関係の解決

問題: @tanstack/router-devtools-core が見つからず、ビルドに失敗します。

解決策:

bun add @tanstack/router-devtools
エラー 2:Vite プラグインの順序

問題: ルートが自動生成されません。

解決策: TanStackRouterVite は react() より前に配置する必要があります:

plugins: [
  TanStackRouterVite(), // First!
  react(),
]
エラー 3:型登録の不足

問題: Link to に型が付与されません。

解決策:

// src/routeTree.gen.ts is auto-generated
// Import it in main.tsx to register types
import { routeTree } from './routeTree.gen'
エラー 4:ローダーが実行されない

問題: ナビゲーション時にローダー関数が呼び出されません。

解決策: ルートが Route をエクスポートしていることを確認します:

export const Route = createFileRoute('/path')({ loader: ... })
エラー 5:フォームによるメモリリーク

問題: TanStack Form と Router を使用すると、本番環境でクラッシュします。

解決策: 既知の問題です(#5734)。回避策として、代わりに React Hook Form を使用するか、修正をお待ちください。


Cloudflare Workers へのデプロイ

Vite の設定
import { defineConfig } from 'vite'
import { TanStackRouterVite } from '@tanstack/router-plugin/vite'
import { cloudflare } from '@cloudflare/vite-plugin'

export default defineConfig({
  plugins: [
    TanStackRouterVite(),
    react(),
    cloudflare(),
  ],
})
API バックエンドのパターン
// functions/api/posts.ts
export async function onRequestGet({ env }) {
  const { results } = await env.DB.prepare('SELECT * FROM posts').all()
  return Response.json(results)
}

// Client-side route
export const Route = createFileRoute('/posts')({
  loader: async () => {
    const posts = await fetch('/api/posts').then(r => r.json())
    return { posts }
  },
})

テンプレート

すべてのテンプレートは ~/.claude/skills/tanstack-router/templates/ にあります:

  1. package.json - 依存関係とバージョン
  2. vite.config.ts - Vite プラグインの設定
  3. basic-routes/ - ファイルベースルーティングの構成
  4. route-with-loader.tsx - データ読み込みの例
  5. query-integration.tsx - TanStack Query のパターン
  6. nested-routes/ - レイアウトのパターン
  7. cloudflare-deployment.md - Workers のセットアップガイド

リファレンスドキュメント

詳細なガイドは ~/.claude/skills/tanstack-router/references/ にあります:

  1. file-based-routing.md - ルート構成の規約
  2. type-safety.md - TypeScript のパターン
  3. data-loading.md - ローダーと TanStack Query
  4. cloudflare-workers.md - デプロイガイド
  5. common-errors.md - 解決策付きの 7 件以上のエラー
  6. migration-guide.md - React Router からの移行

既存のスキルとの統合

次のスキルと連携します:

  • tanstack-query - データ取得に推奨
  • tanstack-table - ルートのデータを表示
  • cloudflare-worker-base - API バックエンド
  • tailwind-v4-shadcn - UI のスタイリング

トークン効率

スキルなし: 約 10k トークン、40~50 分、3~4 件のエラー
スキルあり: 約 4k トークン、15~20 分、エラー 0 件
削減量: トークン 60%、時間 65%


本番環境での検証

次の環境でテスト済み:

  • React 19.2、Vite 7.3、TypeScript 5.9
  • Cloudflare Workers(Wrangler 4.0)
  • TanStack Query v5.101.4

スタックの互換性:

  • ✅ Cloudflare Workers + Static Assets
  • ✅ TanStack Query との統合
  • ✅ TypeScript の strict モード

最終更新日: 2026-08-03 ライブラリのバージョン: @tanstack/react-router v1.170.18

コメント