--- paths: "**/*.ts", "**/*.tsx", "**/route*.ts", "**/router*.ts" --- # TanStack Router v1 Corrections Claude's training may have limited TanStack Router knowledge. This project uses **TanStack Router v1**. ## File-Based Routing (Recommended) ```typescript /* ❌ Manual route definitions (verbose) */ const router = createRouter({ routeTree: rootRoute.addChildren([ indexRoute, aboutRoute, ]), }) /* ✅ File-based routing with routeTree.gen.ts */ // routes/__root.tsx, routes/index.tsx, routes/about.tsx // Then import generated tree: import { routeTree } from './routeTree.gen' const router = createRouter({ routeTree }) ``` ## Route File Structure ```typescript /* ❌ Wrong file naming */ // routes/About.tsx - capitalized won't work // routes/about/page.tsx - Next.js convention /* ✅ TanStack Router conventions */ // routes/__root.tsx - root layout // routes/index.tsx - home page (/) // routes/about.tsx - /about // routes/posts/$postId.tsx - /posts/:postId (dynamic) // routes/posts/index.tsx - /posts ``` ## createFileRoute vs createRoute ```typescript /* ❌ Using createRoute in file-based routing */ import { createRoute } from '@tanstack/react-router' const Route = createRoute({...}) /* ✅ Use createFileRoute for file-based */ import { createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/about')({ component: AboutPage, }) ``` ## Loader Pattern ```typescript /* ❌ React Router style loader */ export async function loader({ params }) { return fetch(`/api/posts/${params.id}`) } /* ✅ TanStack Router loader */ export const Route = createFileRoute('/posts/$postId')({ loader: async ({ params }) => { return fetchPost(params.postId) }, component: PostPage, }) function PostPage() { const post = Route.useLoaderData() return