mcpField
T
TanStack Router

TanStack Router

github.com/ovachiever開発5648 回インストール49 週間前に更新
リポジトリ

TanStack Router について

TanStack Router Skillは、TypeScriptを使ったReact SPA向けの型安全なファイルベースルーティングの資料とテンプレートです。ルートローダーやTanStack Queryとの連携、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. 04ReactアプリをCloudflare Workers向けに設定

インストール

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

$npx skills add https://github.com/ovachiever/droid-tings --skill tanstack-router

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

同梱ファイル

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

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

詳細

TanStack Router スキル

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


このスキルを使うタイミング

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

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

次の場合にこのスキルを使います:

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

クイックスタート

インストール
npm install @tanstack/react-router @tanstack/router-devtools
npm install -D @tanstack/router-plugin

最新バージョン: v1.134.13(2025-11-07 確認済み)

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 が見つからず、ビルドに失敗します。

解決策:

npm install @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 6.0、TypeScript 5.8
  • Cloudflare Workers(Wrangler 4.0)
  • TanStack Query v5.90.7

スタックの互換性:

  • ✅ Cloudflare Workers + 静的アセット
  • ✅ TanStack Query との統合
  • ✅ TypeScript の strict モード

最終更新日: 2025-11-07 ライブラリのバージョン: @tanstack/react-router v1.134.13

コメント