[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-migrate-from-nextjs":3,"mdc-6wfc08-key":52,"related-repo-tanstack-migrate-from-nextjs":6861,"related-org-tanstack-migrate-from-nextjs":6966},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":47,"sourceUrl":50,"mdContent":51},"migrate-from-nextjs","migrate Next.js applications to TanStack Start","Step-by-step migration from Next.js App Router to TanStack Start: route definition conversion, API mapping, server function conversion from Server Actions, middleware conversion, data fetching pattern changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"TanStack Router","tanstack-router","tag",{"name":17,"slug":18,"type":15},"Next.js","next-js",{"name":20,"slug":21,"type":15},"Migration","migration",{"name":23,"slug":24,"type":15},"Frontend","frontend",14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:26:56.507055",null,1761,[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"framework","fullstack","javascript","react","route","router","routing","rpc","search","searchparams","server-functions","ssr","state-management","typesafe","typescript","url",{"repoUrl":26,"stars":25,"forks":29,"topics":48,"description":49},[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React and more).","https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter\u002Ftree\u002FHEAD\u002Fpackages\u002Freact-start\u002Fskills\u002Flifecycle\u002Fmigrate-from-nextjs","---\nname: migrate-from-nextjs\ndescription: >-\n  Step-by-step migration from Next.js App Router to TanStack Start:\n  route definition conversion, API mapping, server function\n  conversion from Server Actions, middleware conversion, data\n  fetching pattern changes.\nmetadata:\n  type: lifecycle\n  library: tanstack-start\n  library_version: '1.168.32'\nrequires:\n  - start-core\n  - react-start\nsources:\n  - TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-functions.md\n  - TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fmiddleware.md\n  - TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fexecution-model.md\n---\n\n# Migrate from Next.js App Router to TanStack Start\n\nThis is a step-by-step migration checklist. Complete tasks in order.\n\n> **CRITICAL**: TanStack Start is isomorphic by default. ALL code runs in both environments unless you use `createServerFn`. This is the opposite of Next.js Server Components, where code is server-only by default.\n\n> **CRITICAL**: TanStack Start uses `createServerFn`, NOT `\"use server\"` directives. Do not carry over any `\"use server\"` or `\"use client\"` directives.\n\n> **CRITICAL**: Types are FULLY INFERRED in TanStack Router\u002FStart. Never cast, never annotate inferred values.\n\n## Pre-Migration\n\n- [ ] **Create a migration branch**\n\n```bash\ngit checkout -b migrate-to-tanstack-start\n```\n\n- [ ] **Install TanStack Start**\n\n```bash\nnpm i @tanstack\u002Freact-start @tanstack\u002Freact-router\nnpm i -D vite @vitejs\u002Fplugin-react\n```\n\n- [ ] **Remove Next.js**\n\n```bash\nnpm uninstall next @next\u002Ffont @next\u002Fimage\n```\n\n## Concept Mapping\n\n| Next.js App Router               | TanStack Start                                                            |\n| -------------------------------- | ------------------------------------------------------------------------- |\n| `app\u002Fpage.tsx`                   | `src\u002Froutes\u002Findex.tsx`                                                    |\n| `app\u002Flayout.tsx`                 | `src\u002Froutes\u002F__root.tsx`                                                   |\n| `app\u002Fposts\u002F[id]\u002Fpage.tsx`        | `src\u002Froutes\u002Fposts\u002F$postId.tsx`                                            |\n| `app\u002Fapi\u002Fusers\u002Froute.ts`         | `src\u002Froutes\u002Fapi\u002Fusers.ts` (server property)                               |\n| `\"use server\"` + Server Actions  | `createServerFn()`                                                        |\n| `\"use client\"`                   | Not needed (everything is isomorphic)                                     |\n| Server Components (default)      | All components are isomorphic; use `createServerFn` for server-only logic |\n| `next\u002Fnavigation` `useRouter`    | `useRouter()` from `@tanstack\u002Freact-router`                               |\n| `next\u002Flink` `Link`               | `\u003CLink>` from `@tanstack\u002Freact-router`                                    |\n| `next\u002Fhead` or `metadata` export | `head` property on route                                                  |\n| `middleware.ts` (edge)           | `createMiddleware()` in `src\u002Fstart.ts`                                    |\n| `next.config.js`                 | `vite.config.ts` with `tanstackStart()`                                   |\n| `generateStaticParams`           | `prerender` config in `vite.config.ts`                                    |\n\n## Step 1: Vite Configuration\n\nReplace `next.config.js` with:\n\n```ts\n\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport { tanstackStart } from '@tanstack\u002Freact-start\u002Fplugin\u002Fvite'\nimport viteReact from '@vitejs\u002Fplugin-react'\n\nexport default defineConfig({\n  plugins: [\n    tanstackStart(), \u002F\u002F MUST come before react()\n    viteReact(),\n  ],\n})\n```\n\nUpdate `package.json`:\n\n```json\n{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"vite build\",\n    \"start\": \"node .output\u002Fserver\u002Findex.mjs\"\n  }\n}\n```\n\n## Step 2: Router Factory\n\n```tsx\n\u002F\u002F src\u002Frouter.tsx\nimport { createRouter } from '@tanstack\u002Freact-router'\nimport { routeTree } from '.\u002FrouteTree.gen'\n\nexport function getRouter() {\n  const router = createRouter({\n    routeTree,\n    scrollRestoration: true,\n  })\n  return router\n}\n```\n\n## Step 3: Convert Layout → Root Route\n\nNext.js:\n\n```tsx\n\u002F\u002F app\u002Flayout.tsx\nexport const metadata = { title: 'My App' }\nexport default function RootLayout({ children }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>{children}\u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n```\n\nTanStack Start:\n\n```tsx\n\u002F\u002F src\u002Froutes\u002F__root.tsx\nimport type { ReactNode } from 'react'\nimport {\n  Outlet,\n  createRootRoute,\n  HeadContent,\n  Scripts,\n} from '@tanstack\u002Freact-router'\n\nexport const Route = createRootRoute({\n  head: () => ({\n    meta: [\n      { charSet: 'utf-8' },\n      { name: 'viewport', content: 'width=device-width, initial-scale=1' },\n      { title: 'My App' },\n    ],\n  }),\n  component: RootComponent,\n})\n\nfunction RootComponent() {\n  return (\n    \u003Chtml>\n      \u003Chead>\n        \u003CHeadContent \u002F>\n      \u003C\u002Fhead>\n      \u003Cbody>\n        \u003COutlet \u002F>\n        \u003CScripts \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n```\n\n## Step 4: Convert Pages → File Routes\n\nNext.js:\n\n```tsx\n\u002F\u002F app\u002Fposts\u002F[id]\u002Fpage.tsx\nexport default function PostPage({ params }: { params: { id: string } }) {\n  \u002F\u002F ...\n}\n```\n\nTanStack Start:\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fposts\u002F$postId.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  component: PostPage,\n})\n\nfunction PostPage() {\n  const { postId } = Route.useParams()\n  \u002F\u002F ...\n}\n```\n\nKey differences:\n\n- Dynamic segments use `$param` not `[param]`\n- Params accessed via `Route.useParams()` not component props\n- Route path in filename uses `.` or `\u002F` separators\n\n## Step 5: Convert Server Actions → Server Functions\n\nNext.js:\n\n```tsx\n\u002F\u002F app\u002Factions.ts\n'use server'\nexport async function createPost(formData: FormData) {\n  const title = formData.get('title') as string\n  await db.posts.create({ title })\n}\n```\n\nTanStack Start:\n\n```tsx\n\u002F\u002F src\u002Futils\u002Fposts.functions.ts\nimport { createServerFn } from '@tanstack\u002Freact-start'\n\nexport const createPost = createServerFn({ method: 'POST' })\n  .validator((data) => {\n    if (!(data instanceof FormData)) throw new Error('Expected FormData')\n    return { title: data.get('title')?.toString() || '' }\n  })\n  .handler(async ({ data }) => {\n    await db.posts.create({ title: data.title })\n    return { success: true }\n  })\n```\n\n## Step 6: Convert Data Fetching\n\nNext.js Server Component:\n\n```tsx\n\u002F\u002F app\u002Fposts\u002Fpage.tsx (Server Component — server-only by default)\nexport default async function PostsPage() {\n  const posts = await db.posts.findMany()\n  return \u003CPostList posts={posts} \u002F>\n}\n```\n\nTanStack Start:\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fposts.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\nimport { createServerFn } from '@tanstack\u002Freact-start'\n\nconst getPosts = createServerFn({ method: 'GET' }).handler(async () => {\n  return db.posts.findMany()\n})\n\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: () => getPosts(), \u002F\u002F loader is isomorphic, getPosts runs on server\n  component: PostsPage,\n})\n\nfunction PostsPage() {\n  const posts = Route.useLoaderData()\n  return \u003CPostList posts={posts} \u002F>\n}\n```\n\n## Step 7: Convert API Routes → Server Routes\n\nNext.js:\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fusers\u002Froute.ts\nexport async function GET() {\n  const users = await db.users.findMany()\n  return Response.json(users)\n}\n```\n\nTanStack Start:\n\n```ts\n\u002F\u002F src\u002Froutes\u002Fapi\u002Fusers.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fapi\u002Fusers')({\n  server: {\n    handlers: {\n      GET: async () => {\n        const users = await db.users.findMany()\n        return Response.json(users)\n      },\n    },\n  },\n})\n```\n\n## Step 8: Convert Navigation\n\nNext.js:\n\n```tsx\nimport Link from 'next\u002Flink'\n;\u003CLink href={`\u002Fposts\u002F${post.id}`}>View Post\u003C\u002FLink>\n```\n\nTanStack Start:\n\n```tsx\nimport { Link } from '@tanstack\u002Freact-router'\n;\u003CLink to=\"\u002Fposts\u002F$postId\" params={{ postId: post.id }}>\n  View Post\n\u003C\u002FLink>\n```\n\nNever interpolate params into the `to` string. Use `params` prop.\n\n## Step 9: Convert Middleware\n\nNext.js:\n\n```ts\n\u002F\u002F middleware.ts\nexport function middleware(request: NextRequest) {\n  const token = request.cookies.get('session')\n  if (!token) return NextResponse.redirect(new URL('\u002Flogin', request.url))\n}\nexport const config = { matcher: ['\u002Fdashboard\u002F:path*'] }\n```\n\nTanStack Start:\n\n```tsx\n\u002F\u002F src\u002Fstart.ts — must be manually created\nimport { createStart, createMiddleware } from '@tanstack\u002Freact-start'\nimport { redirect } from '@tanstack\u002Freact-router'\n\nconst authMiddleware = createMiddleware().server(async ({ next, request }) => {\n  const cookie = request.headers.get('cookie')\n  if (!cookie?.includes('session=')) {\n    throw redirect({ to: '\u002Flogin' })\n  }\n  return next()\n})\n\nexport const startInstance = createStart(() => ({\n  requestMiddleware: [authMiddleware],\n}))\n```\n\n## Step 10: Convert Metadata\u002FSEO\n\nNext.js:\n\n```tsx\nexport const metadata = {\n  title: 'Post Title',\n  description: 'Post description',\n}\n```\n\nTanStack Start:\n\n```tsx\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: async ({ params }) => fetchPost(params.postId),\n  head: ({ loaderData }) => ({\n    meta: [\n      { title: loaderData.title },\n      { name: 'description', content: loaderData.excerpt },\n      { property: 'og:title', content: loaderData.title },\n    ],\n  }),\n})\n```\n\n## Post-Migration Checklist\n\n- [ ] Remove all `\"use server\"` and `\"use client\"` directives\n- [ ] Remove `next.config.js` \u002F `next.config.ts`\n- [ ] Remove `app\u002F` directory (replaced by `src\u002Froutes\u002F`)\n- [ ] Remove `middleware.ts` (replaced by `src\u002Fstart.ts`)\n- [ ] Verify no `next\u002F*` imports remain\n- [ ] Run `npm run dev` and check all routes\n- [ ] Verify server-only code is inside `createServerFn` (not bare in components\u002Floaders)\n- [ ] Check that `\u003CScripts \u002F>` is in the root route `\u003Cbody>`\n\n## Common Mistakes\n\n### 1. CRITICAL: Keeping Server Component mental model\n\n```tsx\n\u002F\u002F WRONG — treating component as server-only (Next.js habit)\nfunction PostsPage() {\n  const posts = await db.posts.findMany() \u002F\u002F fails on client\n  return \u003Cdiv>{posts.map(...)}\u003C\u002Fdiv>\n}\n\n\u002F\u002F CORRECT — use server function + loader\nconst getPosts = createServerFn({ method: 'GET' }).handler(async () => {\n  return db.posts.findMany()\n})\n\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: () => getPosts(),\n  component: PostsPage,\n})\n```\n\n### 2. CRITICAL: Using \"use server\" directive\n\n```tsx\n\u002F\u002F WRONG — \"use server\" is Next.js\u002FReact pattern\n'use server'\nexport async function myAction() { ... }\n\n\u002F\u002F CORRECT — use createServerFn\nexport const myAction = createServerFn({ method: 'POST' })\n  .handler(async () => { ... })\n```\n\n### 3. HIGH: Interpolating params into Link href\n\n```tsx\n\u002F\u002F WRONG — Next.js pattern\n\u003CLink to={`\u002Fposts\u002F${post.id}`}>View\u003C\u002FLink>\n\n\u002F\u002F CORRECT — TanStack Router pattern\n\u003CLink to=\"\u002Fposts\u002F$postId\" params={{ postId: post.id }}>View\u003C\u002FLink>\n```\n\n## Cross-References\n\n- [react-start](..\u002F..\u002Freact-start\u002FSKILL.md) — full React Start setup\n- [start-core\u002Fserver-functions](..\u002F..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-functions\u002FSKILL.md) — server function patterns\n- [start-core\u002Fexecution-model](..\u002F..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fexecution-model\u002FSKILL.md) — isomorphic execution\n",{"data":53,"body":65},{"name":4,"description":6,"metadata":54,"requires":58,"sources":61},{"type":55,"library":56,"library_version":57},"lifecycle","tanstack-start","1.168.32",[59,60],"start-core","react-start",[62,63,64],"TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-functions.md","TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fmiddleware.md","TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fexecution-model.md",{"type":66,"children":67},"root",[68,77,83,107,149,161,168,193,232,249,306,323,357,363,725,731,743,1003,1015,1222,1228,1446,1452,1457,1663,1668,2293,2299,2303,2409,2413,2634,2639,2693,2699,2703,2901,2905,3377,3383,3388,3523,3527,3966,3972,3976,4103,4107,4383,4389,4393,4502,4506,4635,4656,4662,4666,4945,4949,5397,5403,5407,5502,5506,5849,5855,6021,6027,6034,6436,6442,6627,6633,6813,6819,6855],{"type":69,"tag":70,"props":71,"children":73},"element","h1",{"id":72},"migrate-from-nextjs-app-router-to-tanstack-start",[74],{"type":75,"value":76},"text","Migrate from Next.js App Router to TanStack Start",{"type":69,"tag":78,"props":79,"children":80},"p",{},[81],{"type":75,"value":82},"This is a step-by-step migration checklist. Complete tasks in order.",{"type":69,"tag":84,"props":85,"children":86},"blockquote",{},[87],{"type":69,"tag":78,"props":88,"children":89},{},[90,96,98,105],{"type":69,"tag":91,"props":92,"children":93},"strong",{},[94],{"type":75,"value":95},"CRITICAL",{"type":75,"value":97},": TanStack Start is isomorphic by default. ALL code runs in both environments unless you use ",{"type":69,"tag":99,"props":100,"children":102},"code",{"className":101},[],[103],{"type":75,"value":104},"createServerFn",{"type":75,"value":106},". This is the opposite of Next.js Server Components, where code is server-only by default.",{"type":69,"tag":84,"props":108,"children":109},{},[110],{"type":69,"tag":78,"props":111,"children":112},{},[113,117,119,124,126,132,134,139,141,147],{"type":69,"tag":91,"props":114,"children":115},{},[116],{"type":75,"value":95},{"type":75,"value":118},": TanStack Start uses ",{"type":69,"tag":99,"props":120,"children":122},{"className":121},[],[123],{"type":75,"value":104},{"type":75,"value":125},", NOT ",{"type":69,"tag":99,"props":127,"children":129},{"className":128},[],[130],{"type":75,"value":131},"\"use server\"",{"type":75,"value":133}," directives. Do not carry over any ",{"type":69,"tag":99,"props":135,"children":137},{"className":136},[],[138],{"type":75,"value":131},{"type":75,"value":140}," or ",{"type":69,"tag":99,"props":142,"children":144},{"className":143},[],[145],{"type":75,"value":146},"\"use client\"",{"type":75,"value":148}," directives.",{"type":69,"tag":84,"props":150,"children":151},{},[152],{"type":69,"tag":78,"props":153,"children":154},{},[155,159],{"type":69,"tag":91,"props":156,"children":157},{},[158],{"type":75,"value":95},{"type":75,"value":160},": Types are FULLY INFERRED in TanStack Router\u002FStart. Never cast, never annotate inferred values.",{"type":69,"tag":162,"props":163,"children":165},"h2",{"id":164},"pre-migration",[166],{"type":75,"value":167},"Pre-Migration",{"type":69,"tag":169,"props":170,"children":173},"ul",{"className":171},[172],"contains-task-list",[174],{"type":69,"tag":175,"props":176,"children":179},"li",{"className":177},[178],"task-list-item",[180,186,188],{"type":69,"tag":181,"props":182,"children":185},"input",{"disabled":183,"type":184},true,"checkbox",[],{"type":75,"value":187}," ",{"type":69,"tag":91,"props":189,"children":190},{},[191],{"type":75,"value":192},"Create a migration branch",{"type":69,"tag":194,"props":195,"children":200},"pre",{"className":196,"code":197,"language":198,"meta":199,"style":199},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git checkout -b migrate-to-tanstack-start\n","bash","",[201],{"type":69,"tag":99,"props":202,"children":203},{"__ignoreMap":199},[204],{"type":69,"tag":205,"props":206,"children":209},"span",{"class":207,"line":208},"line",1,[210,216,222,227],{"type":69,"tag":205,"props":211,"children":213},{"style":212},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[214],{"type":75,"value":215},"git",{"type":69,"tag":205,"props":217,"children":219},{"style":218},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[220],{"type":75,"value":221}," checkout",{"type":69,"tag":205,"props":223,"children":224},{"style":218},[225],{"type":75,"value":226}," -b",{"type":69,"tag":205,"props":228,"children":229},{"style":218},[230],{"type":75,"value":231}," migrate-to-tanstack-start\n",{"type":69,"tag":169,"props":233,"children":235},{"className":234},[172],[236],{"type":69,"tag":175,"props":237,"children":239},{"className":238},[178],[240,243,244],{"type":69,"tag":181,"props":241,"children":242},{"disabled":183,"type":184},[],{"type":75,"value":187},{"type":69,"tag":91,"props":245,"children":246},{},[247],{"type":75,"value":248},"Install TanStack Start",{"type":69,"tag":194,"props":250,"children":252},{"className":196,"code":251,"language":198,"meta":199,"style":199},"npm i @tanstack\u002Freact-start @tanstack\u002Freact-router\nnpm i -D vite @vitejs\u002Fplugin-react\n",[253],{"type":69,"tag":99,"props":254,"children":255},{"__ignoreMap":199},[256,279],{"type":69,"tag":205,"props":257,"children":258},{"class":207,"line":208},[259,264,269,274],{"type":69,"tag":205,"props":260,"children":261},{"style":212},[262],{"type":75,"value":263},"npm",{"type":69,"tag":205,"props":265,"children":266},{"style":218},[267],{"type":75,"value":268}," i",{"type":69,"tag":205,"props":270,"children":271},{"style":218},[272],{"type":75,"value":273}," @tanstack\u002Freact-start",{"type":69,"tag":205,"props":275,"children":276},{"style":218},[277],{"type":75,"value":278}," @tanstack\u002Freact-router\n",{"type":69,"tag":205,"props":280,"children":282},{"class":207,"line":281},2,[283,287,291,296,301],{"type":69,"tag":205,"props":284,"children":285},{"style":212},[286],{"type":75,"value":263},{"type":69,"tag":205,"props":288,"children":289},{"style":218},[290],{"type":75,"value":268},{"type":69,"tag":205,"props":292,"children":293},{"style":218},[294],{"type":75,"value":295}," -D",{"type":69,"tag":205,"props":297,"children":298},{"style":218},[299],{"type":75,"value":300}," vite",{"type":69,"tag":205,"props":302,"children":303},{"style":218},[304],{"type":75,"value":305}," @vitejs\u002Fplugin-react\n",{"type":69,"tag":169,"props":307,"children":309},{"className":308},[172],[310],{"type":69,"tag":175,"props":311,"children":313},{"className":312},[178],[314,317,318],{"type":69,"tag":181,"props":315,"children":316},{"disabled":183,"type":184},[],{"type":75,"value":187},{"type":69,"tag":91,"props":319,"children":320},{},[321],{"type":75,"value":322},"Remove Next.js",{"type":69,"tag":194,"props":324,"children":326},{"className":196,"code":325,"language":198,"meta":199,"style":199},"npm uninstall next @next\u002Ffont @next\u002Fimage\n",[327],{"type":69,"tag":99,"props":328,"children":329},{"__ignoreMap":199},[330],{"type":69,"tag":205,"props":331,"children":332},{"class":207,"line":208},[333,337,342,347,352],{"type":69,"tag":205,"props":334,"children":335},{"style":212},[336],{"type":75,"value":263},{"type":69,"tag":205,"props":338,"children":339},{"style":218},[340],{"type":75,"value":341}," uninstall",{"type":69,"tag":205,"props":343,"children":344},{"style":218},[345],{"type":75,"value":346}," next",{"type":69,"tag":205,"props":348,"children":349},{"style":218},[350],{"type":75,"value":351}," @next\u002Ffont",{"type":69,"tag":205,"props":353,"children":354},{"style":218},[355],{"type":75,"value":356}," @next\u002Fimage\n",{"type":69,"tag":162,"props":358,"children":360},{"id":359},"concept-mapping",[361],{"type":75,"value":362},"Concept Mapping",{"type":69,"tag":364,"props":365,"children":366},"table",{},[367,386],{"type":69,"tag":368,"props":369,"children":370},"thead",{},[371],{"type":69,"tag":372,"props":373,"children":374},"tr",{},[375,381],{"type":69,"tag":376,"props":377,"children":378},"th",{},[379],{"type":75,"value":380},"Next.js App Router",{"type":69,"tag":376,"props":382,"children":383},{},[384],{"type":75,"value":385},"TanStack Start",{"type":69,"tag":387,"props":388,"children":389},"tbody",{},[390,412,433,454,477,499,515,535,571,605,637,668,697],{"type":69,"tag":372,"props":391,"children":392},{},[393,403],{"type":69,"tag":394,"props":395,"children":396},"td",{},[397],{"type":69,"tag":99,"props":398,"children":400},{"className":399},[],[401],{"type":75,"value":402},"app\u002Fpage.tsx",{"type":69,"tag":394,"props":404,"children":405},{},[406],{"type":69,"tag":99,"props":407,"children":409},{"className":408},[],[410],{"type":75,"value":411},"src\u002Froutes\u002Findex.tsx",{"type":69,"tag":372,"props":413,"children":414},{},[415,424],{"type":69,"tag":394,"props":416,"children":417},{},[418],{"type":69,"tag":99,"props":419,"children":421},{"className":420},[],[422],{"type":75,"value":423},"app\u002Flayout.tsx",{"type":69,"tag":394,"props":425,"children":426},{},[427],{"type":69,"tag":99,"props":428,"children":430},{"className":429},[],[431],{"type":75,"value":432},"src\u002Froutes\u002F__root.tsx",{"type":69,"tag":372,"props":434,"children":435},{},[436,445],{"type":69,"tag":394,"props":437,"children":438},{},[439],{"type":69,"tag":99,"props":440,"children":442},{"className":441},[],[443],{"type":75,"value":444},"app\u002Fposts\u002F[id]\u002Fpage.tsx",{"type":69,"tag":394,"props":446,"children":447},{},[448],{"type":69,"tag":99,"props":449,"children":451},{"className":450},[],[452],{"type":75,"value":453},"src\u002Froutes\u002Fposts\u002F$postId.tsx",{"type":69,"tag":372,"props":455,"children":456},{},[457,466],{"type":69,"tag":394,"props":458,"children":459},{},[460],{"type":69,"tag":99,"props":461,"children":463},{"className":462},[],[464],{"type":75,"value":465},"app\u002Fapi\u002Fusers\u002Froute.ts",{"type":69,"tag":394,"props":467,"children":468},{},[469,475],{"type":69,"tag":99,"props":470,"children":472},{"className":471},[],[473],{"type":75,"value":474},"src\u002Froutes\u002Fapi\u002Fusers.ts",{"type":75,"value":476}," (server property)",{"type":69,"tag":372,"props":478,"children":479},{},[480,490],{"type":69,"tag":394,"props":481,"children":482},{},[483,488],{"type":69,"tag":99,"props":484,"children":486},{"className":485},[],[487],{"type":75,"value":131},{"type":75,"value":489}," + Server Actions",{"type":69,"tag":394,"props":491,"children":492},{},[493],{"type":69,"tag":99,"props":494,"children":496},{"className":495},[],[497],{"type":75,"value":498},"createServerFn()",{"type":69,"tag":372,"props":500,"children":501},{},[502,510],{"type":69,"tag":394,"props":503,"children":504},{},[505],{"type":69,"tag":99,"props":506,"children":508},{"className":507},[],[509],{"type":75,"value":146},{"type":69,"tag":394,"props":511,"children":512},{},[513],{"type":75,"value":514},"Not needed (everything is isomorphic)",{"type":69,"tag":372,"props":516,"children":517},{},[518,523],{"type":69,"tag":394,"props":519,"children":520},{},[521],{"type":75,"value":522},"Server Components (default)",{"type":69,"tag":394,"props":524,"children":525},{},[526,528,533],{"type":75,"value":527},"All components are isomorphic; use ",{"type":69,"tag":99,"props":529,"children":531},{"className":530},[],[532],{"type":75,"value":104},{"type":75,"value":534}," for server-only logic",{"type":69,"tag":372,"props":536,"children":537},{},[538,554],{"type":69,"tag":394,"props":539,"children":540},{},[541,547,548],{"type":69,"tag":99,"props":542,"children":544},{"className":543},[],[545],{"type":75,"value":546},"next\u002Fnavigation",{"type":75,"value":187},{"type":69,"tag":99,"props":549,"children":551},{"className":550},[],[552],{"type":75,"value":553},"useRouter",{"type":69,"tag":394,"props":555,"children":556},{},[557,563,565],{"type":69,"tag":99,"props":558,"children":560},{"className":559},[],[561],{"type":75,"value":562},"useRouter()",{"type":75,"value":564}," from ",{"type":69,"tag":99,"props":566,"children":568},{"className":567},[],[569],{"type":75,"value":570},"@tanstack\u002Freact-router",{"type":69,"tag":372,"props":572,"children":573},{},[574,590],{"type":69,"tag":394,"props":575,"children":576},{},[577,583,584],{"type":69,"tag":99,"props":578,"children":580},{"className":579},[],[581],{"type":75,"value":582},"next\u002Flink",{"type":75,"value":187},{"type":69,"tag":99,"props":585,"children":587},{"className":586},[],[588],{"type":75,"value":589},"Link",{"type":69,"tag":394,"props":591,"children":592},{},[593,599,600],{"type":69,"tag":99,"props":594,"children":596},{"className":595},[],[597],{"type":75,"value":598},"\u003CLink>",{"type":75,"value":564},{"type":69,"tag":99,"props":601,"children":603},{"className":602},[],[604],{"type":75,"value":570},{"type":69,"tag":372,"props":606,"children":607},{},[608,626],{"type":69,"tag":394,"props":609,"children":610},{},[611,617,618,624],{"type":69,"tag":99,"props":612,"children":614},{"className":613},[],[615],{"type":75,"value":616},"next\u002Fhead",{"type":75,"value":140},{"type":69,"tag":99,"props":619,"children":621},{"className":620},[],[622],{"type":75,"value":623},"metadata",{"type":75,"value":625}," export",{"type":69,"tag":394,"props":627,"children":628},{},[629,635],{"type":69,"tag":99,"props":630,"children":632},{"className":631},[],[633],{"type":75,"value":634},"head",{"type":75,"value":636}," property on route",{"type":69,"tag":372,"props":638,"children":639},{},[640,651],{"type":69,"tag":394,"props":641,"children":642},{},[643,649],{"type":69,"tag":99,"props":644,"children":646},{"className":645},[],[647],{"type":75,"value":648},"middleware.ts",{"type":75,"value":650}," (edge)",{"type":69,"tag":394,"props":652,"children":653},{},[654,660,662],{"type":69,"tag":99,"props":655,"children":657},{"className":656},[],[658],{"type":75,"value":659},"createMiddleware()",{"type":75,"value":661}," in ",{"type":69,"tag":99,"props":663,"children":665},{"className":664},[],[666],{"type":75,"value":667},"src\u002Fstart.ts",{"type":69,"tag":372,"props":669,"children":670},{},[671,680],{"type":69,"tag":394,"props":672,"children":673},{},[674],{"type":69,"tag":99,"props":675,"children":677},{"className":676},[],[678],{"type":75,"value":679},"next.config.js",{"type":69,"tag":394,"props":681,"children":682},{},[683,689,691],{"type":69,"tag":99,"props":684,"children":686},{"className":685},[],[687],{"type":75,"value":688},"vite.config.ts",{"type":75,"value":690}," with ",{"type":69,"tag":99,"props":692,"children":694},{"className":693},[],[695],{"type":75,"value":696},"tanstackStart()",{"type":69,"tag":372,"props":698,"children":699},{},[700,709],{"type":69,"tag":394,"props":701,"children":702},{},[703],{"type":69,"tag":99,"props":704,"children":706},{"className":705},[],[707],{"type":75,"value":708},"generateStaticParams",{"type":69,"tag":394,"props":710,"children":711},{},[712,718,720],{"type":69,"tag":99,"props":713,"children":715},{"className":714},[],[716],{"type":75,"value":717},"prerender",{"type":75,"value":719}," config in ",{"type":69,"tag":99,"props":721,"children":723},{"className":722},[],[724],{"type":75,"value":688},{"type":69,"tag":162,"props":726,"children":728},{"id":727},"step-1-vite-configuration",[729],{"type":75,"value":730},"Step 1: Vite Configuration",{"type":69,"tag":78,"props":732,"children":733},{},[734,736,741],{"type":75,"value":735},"Replace ",{"type":69,"tag":99,"props":737,"children":739},{"className":738},[],[740],{"type":75,"value":679},{"type":75,"value":742}," with:",{"type":69,"tag":194,"props":744,"children":748},{"className":745,"code":746,"language":747,"meta":199,"style":199},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport { tanstackStart } from '@tanstack\u002Freact-start\u002Fplugin\u002Fvite'\nimport viteReact from '@vitejs\u002Fplugin-react'\n\nexport default defineConfig({\n  plugins: [\n    tanstackStart(), \u002F\u002F MUST come before react()\n    viteReact(),\n  ],\n})\n","ts",[749],{"type":69,"tag":99,"props":750,"children":751},{"__ignoreMap":199},[752,761,807,845,876,885,914,934,958,976,989],{"type":69,"tag":205,"props":753,"children":754},{"class":207,"line":208},[755],{"type":69,"tag":205,"props":756,"children":758},{"style":757},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[759],{"type":75,"value":760},"\u002F\u002F vite.config.ts\n",{"type":69,"tag":205,"props":762,"children":763},{"class":207,"line":281},[764,770,776,782,787,792,797,802],{"type":69,"tag":205,"props":765,"children":767},{"style":766},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[768],{"type":75,"value":769},"import",{"type":69,"tag":205,"props":771,"children":773},{"style":772},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[774],{"type":75,"value":775}," {",{"type":69,"tag":205,"props":777,"children":779},{"style":778},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[780],{"type":75,"value":781}," defineConfig",{"type":69,"tag":205,"props":783,"children":784},{"style":772},[785],{"type":75,"value":786}," }",{"type":69,"tag":205,"props":788,"children":789},{"style":766},[790],{"type":75,"value":791}," from",{"type":69,"tag":205,"props":793,"children":794},{"style":772},[795],{"type":75,"value":796}," '",{"type":69,"tag":205,"props":798,"children":799},{"style":218},[800],{"type":75,"value":801},"vite",{"type":69,"tag":205,"props":803,"children":804},{"style":772},[805],{"type":75,"value":806},"'\n",{"type":69,"tag":205,"props":808,"children":810},{"class":207,"line":809},3,[811,815,819,824,828,832,836,841],{"type":69,"tag":205,"props":812,"children":813},{"style":766},[814],{"type":75,"value":769},{"type":69,"tag":205,"props":816,"children":817},{"style":772},[818],{"type":75,"value":775},{"type":69,"tag":205,"props":820,"children":821},{"style":778},[822],{"type":75,"value":823}," tanstackStart",{"type":69,"tag":205,"props":825,"children":826},{"style":772},[827],{"type":75,"value":786},{"type":69,"tag":205,"props":829,"children":830},{"style":766},[831],{"type":75,"value":791},{"type":69,"tag":205,"props":833,"children":834},{"style":772},[835],{"type":75,"value":796},{"type":69,"tag":205,"props":837,"children":838},{"style":218},[839],{"type":75,"value":840},"@tanstack\u002Freact-start\u002Fplugin\u002Fvite",{"type":69,"tag":205,"props":842,"children":843},{"style":772},[844],{"type":75,"value":806},{"type":69,"tag":205,"props":846,"children":848},{"class":207,"line":847},4,[849,853,858,863,867,872],{"type":69,"tag":205,"props":850,"children":851},{"style":766},[852],{"type":75,"value":769},{"type":69,"tag":205,"props":854,"children":855},{"style":778},[856],{"type":75,"value":857}," viteReact ",{"type":69,"tag":205,"props":859,"children":860},{"style":766},[861],{"type":75,"value":862},"from",{"type":69,"tag":205,"props":864,"children":865},{"style":772},[866],{"type":75,"value":796},{"type":69,"tag":205,"props":868,"children":869},{"style":218},[870],{"type":75,"value":871},"@vitejs\u002Fplugin-react",{"type":69,"tag":205,"props":873,"children":874},{"style":772},[875],{"type":75,"value":806},{"type":69,"tag":205,"props":877,"children":879},{"class":207,"line":878},5,[880],{"type":69,"tag":205,"props":881,"children":882},{"emptyLinePlaceholder":183},[883],{"type":75,"value":884},"\n",{"type":69,"tag":205,"props":886,"children":888},{"class":207,"line":887},6,[889,894,899,904,909],{"type":69,"tag":205,"props":890,"children":891},{"style":766},[892],{"type":75,"value":893},"export",{"type":69,"tag":205,"props":895,"children":896},{"style":766},[897],{"type":75,"value":898}," default",{"type":69,"tag":205,"props":900,"children":902},{"style":901},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[903],{"type":75,"value":781},{"type":69,"tag":205,"props":905,"children":906},{"style":778},[907],{"type":75,"value":908},"(",{"type":69,"tag":205,"props":910,"children":911},{"style":772},[912],{"type":75,"value":913},"{\n",{"type":69,"tag":205,"props":915,"children":917},{"class":207,"line":916},7,[918,924,929],{"type":69,"tag":205,"props":919,"children":921},{"style":920},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[922],{"type":75,"value":923},"  plugins",{"type":69,"tag":205,"props":925,"children":926},{"style":772},[927],{"type":75,"value":928},":",{"type":69,"tag":205,"props":930,"children":931},{"style":778},[932],{"type":75,"value":933}," [\n",{"type":69,"tag":205,"props":935,"children":937},{"class":207,"line":936},8,[938,943,948,953],{"type":69,"tag":205,"props":939,"children":940},{"style":901},[941],{"type":75,"value":942},"    tanstackStart",{"type":69,"tag":205,"props":944,"children":945},{"style":778},[946],{"type":75,"value":947},"()",{"type":69,"tag":205,"props":949,"children":950},{"style":772},[951],{"type":75,"value":952},",",{"type":69,"tag":205,"props":954,"children":955},{"style":757},[956],{"type":75,"value":957}," \u002F\u002F MUST come before react()\n",{"type":69,"tag":205,"props":959,"children":961},{"class":207,"line":960},9,[962,967,971],{"type":69,"tag":205,"props":963,"children":964},{"style":901},[965],{"type":75,"value":966},"    viteReact",{"type":69,"tag":205,"props":968,"children":969},{"style":778},[970],{"type":75,"value":947},{"type":69,"tag":205,"props":972,"children":973},{"style":772},[974],{"type":75,"value":975},",\n",{"type":69,"tag":205,"props":977,"children":979},{"class":207,"line":978},10,[980,985],{"type":69,"tag":205,"props":981,"children":982},{"style":778},[983],{"type":75,"value":984},"  ]",{"type":69,"tag":205,"props":986,"children":987},{"style":772},[988],{"type":75,"value":975},{"type":69,"tag":205,"props":990,"children":992},{"class":207,"line":991},11,[993,998],{"type":69,"tag":205,"props":994,"children":995},{"style":772},[996],{"type":75,"value":997},"}",{"type":69,"tag":205,"props":999,"children":1000},{"style":778},[1001],{"type":75,"value":1002},")\n",{"type":69,"tag":78,"props":1004,"children":1005},{},[1006,1008,1014],{"type":75,"value":1007},"Update ",{"type":69,"tag":99,"props":1009,"children":1011},{"className":1010},[],[1012],{"type":75,"value":1013},"package.json",{"type":75,"value":928},{"type":69,"tag":194,"props":1016,"children":1020},{"className":1017,"code":1018,"language":1019,"meta":199,"style":199},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"vite build\",\n    \"start\": \"node .output\u002Fserver\u002Findex.mjs\"\n  }\n}\n","json",[1021],{"type":69,"tag":99,"props":1022,"children":1023},{"__ignoreMap":199},[1024,1031,1072,1097,1135,1172,1206,1214],{"type":69,"tag":205,"props":1025,"children":1026},{"class":207,"line":208},[1027],{"type":69,"tag":205,"props":1028,"children":1029},{"style":772},[1030],{"type":75,"value":913},{"type":69,"tag":205,"props":1032,"children":1033},{"class":207,"line":281},[1034,1039,1045,1050,1054,1059,1064,1068],{"type":69,"tag":205,"props":1035,"children":1036},{"style":772},[1037],{"type":75,"value":1038},"  \"",{"type":69,"tag":205,"props":1040,"children":1042},{"style":1041},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1043],{"type":75,"value":1044},"type",{"type":69,"tag":205,"props":1046,"children":1047},{"style":772},[1048],{"type":75,"value":1049},"\"",{"type":69,"tag":205,"props":1051,"children":1052},{"style":772},[1053],{"type":75,"value":928},{"type":69,"tag":205,"props":1055,"children":1056},{"style":772},[1057],{"type":75,"value":1058}," \"",{"type":69,"tag":205,"props":1060,"children":1061},{"style":218},[1062],{"type":75,"value":1063},"module",{"type":69,"tag":205,"props":1065,"children":1066},{"style":772},[1067],{"type":75,"value":1049},{"type":69,"tag":205,"props":1069,"children":1070},{"style":772},[1071],{"type":75,"value":975},{"type":69,"tag":205,"props":1073,"children":1074},{"class":207,"line":809},[1075,1079,1084,1088,1092],{"type":69,"tag":205,"props":1076,"children":1077},{"style":772},[1078],{"type":75,"value":1038},{"type":69,"tag":205,"props":1080,"children":1081},{"style":1041},[1082],{"type":75,"value":1083},"scripts",{"type":69,"tag":205,"props":1085,"children":1086},{"style":772},[1087],{"type":75,"value":1049},{"type":69,"tag":205,"props":1089,"children":1090},{"style":772},[1091],{"type":75,"value":928},{"type":69,"tag":205,"props":1093,"children":1094},{"style":772},[1095],{"type":75,"value":1096}," {\n",{"type":69,"tag":205,"props":1098,"children":1099},{"class":207,"line":847},[1100,1105,1110,1114,1118,1122,1127,1131],{"type":69,"tag":205,"props":1101,"children":1102},{"style":772},[1103],{"type":75,"value":1104},"    \"",{"type":69,"tag":205,"props":1106,"children":1107},{"style":212},[1108],{"type":75,"value":1109},"dev",{"type":69,"tag":205,"props":1111,"children":1112},{"style":772},[1113],{"type":75,"value":1049},{"type":69,"tag":205,"props":1115,"children":1116},{"style":772},[1117],{"type":75,"value":928},{"type":69,"tag":205,"props":1119,"children":1120},{"style":772},[1121],{"type":75,"value":1058},{"type":69,"tag":205,"props":1123,"children":1124},{"style":218},[1125],{"type":75,"value":1126},"vite dev",{"type":69,"tag":205,"props":1128,"children":1129},{"style":772},[1130],{"type":75,"value":1049},{"type":69,"tag":205,"props":1132,"children":1133},{"style":772},[1134],{"type":75,"value":975},{"type":69,"tag":205,"props":1136,"children":1137},{"class":207,"line":878},[1138,1142,1147,1151,1155,1159,1164,1168],{"type":69,"tag":205,"props":1139,"children":1140},{"style":772},[1141],{"type":75,"value":1104},{"type":69,"tag":205,"props":1143,"children":1144},{"style":212},[1145],{"type":75,"value":1146},"build",{"type":69,"tag":205,"props":1148,"children":1149},{"style":772},[1150],{"type":75,"value":1049},{"type":69,"tag":205,"props":1152,"children":1153},{"style":772},[1154],{"type":75,"value":928},{"type":69,"tag":205,"props":1156,"children":1157},{"style":772},[1158],{"type":75,"value":1058},{"type":69,"tag":205,"props":1160,"children":1161},{"style":218},[1162],{"type":75,"value":1163},"vite build",{"type":69,"tag":205,"props":1165,"children":1166},{"style":772},[1167],{"type":75,"value":1049},{"type":69,"tag":205,"props":1169,"children":1170},{"style":772},[1171],{"type":75,"value":975},{"type":69,"tag":205,"props":1173,"children":1174},{"class":207,"line":887},[1175,1179,1184,1188,1192,1196,1201],{"type":69,"tag":205,"props":1176,"children":1177},{"style":772},[1178],{"type":75,"value":1104},{"type":69,"tag":205,"props":1180,"children":1181},{"style":212},[1182],{"type":75,"value":1183},"start",{"type":69,"tag":205,"props":1185,"children":1186},{"style":772},[1187],{"type":75,"value":1049},{"type":69,"tag":205,"props":1189,"children":1190},{"style":772},[1191],{"type":75,"value":928},{"type":69,"tag":205,"props":1193,"children":1194},{"style":772},[1195],{"type":75,"value":1058},{"type":69,"tag":205,"props":1197,"children":1198},{"style":218},[1199],{"type":75,"value":1200},"node .output\u002Fserver\u002Findex.mjs",{"type":69,"tag":205,"props":1202,"children":1203},{"style":772},[1204],{"type":75,"value":1205},"\"\n",{"type":69,"tag":205,"props":1207,"children":1208},{"class":207,"line":916},[1209],{"type":69,"tag":205,"props":1210,"children":1211},{"style":772},[1212],{"type":75,"value":1213},"  }\n",{"type":69,"tag":205,"props":1215,"children":1216},{"class":207,"line":936},[1217],{"type":69,"tag":205,"props":1218,"children":1219},{"style":772},[1220],{"type":75,"value":1221},"}\n",{"type":69,"tag":162,"props":1223,"children":1225},{"id":1224},"step-2-router-factory",[1226],{"type":75,"value":1227},"Step 2: Router Factory",{"type":69,"tag":194,"props":1229,"children":1233},{"className":1230,"code":1231,"language":1232,"meta":199,"style":199},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Frouter.tsx\nimport { createRouter } from '@tanstack\u002Freact-router'\nimport { routeTree } from '.\u002FrouteTree.gen'\n\nexport function getRouter() {\n  const router = createRouter({\n    routeTree,\n    scrollRestoration: true,\n  })\n  return router\n}\n","tsx",[1234],{"type":69,"tag":99,"props":1235,"children":1236},{"__ignoreMap":199},[1237,1245,1281,1318,1325,1350,1380,1392,1414,1426,1439],{"type":69,"tag":205,"props":1238,"children":1239},{"class":207,"line":208},[1240],{"type":69,"tag":205,"props":1241,"children":1242},{"style":757},[1243],{"type":75,"value":1244},"\u002F\u002F src\u002Frouter.tsx\n",{"type":69,"tag":205,"props":1246,"children":1247},{"class":207,"line":281},[1248,1252,1256,1261,1265,1269,1273,1277],{"type":69,"tag":205,"props":1249,"children":1250},{"style":766},[1251],{"type":75,"value":769},{"type":69,"tag":205,"props":1253,"children":1254},{"style":772},[1255],{"type":75,"value":775},{"type":69,"tag":205,"props":1257,"children":1258},{"style":778},[1259],{"type":75,"value":1260}," createRouter",{"type":69,"tag":205,"props":1262,"children":1263},{"style":772},[1264],{"type":75,"value":786},{"type":69,"tag":205,"props":1266,"children":1267},{"style":766},[1268],{"type":75,"value":791},{"type":69,"tag":205,"props":1270,"children":1271},{"style":772},[1272],{"type":75,"value":796},{"type":69,"tag":205,"props":1274,"children":1275},{"style":218},[1276],{"type":75,"value":570},{"type":69,"tag":205,"props":1278,"children":1279},{"style":772},[1280],{"type":75,"value":806},{"type":69,"tag":205,"props":1282,"children":1283},{"class":207,"line":809},[1284,1288,1292,1297,1301,1305,1309,1314],{"type":69,"tag":205,"props":1285,"children":1286},{"style":766},[1287],{"type":75,"value":769},{"type":69,"tag":205,"props":1289,"children":1290},{"style":772},[1291],{"type":75,"value":775},{"type":69,"tag":205,"props":1293,"children":1294},{"style":778},[1295],{"type":75,"value":1296}," routeTree",{"type":69,"tag":205,"props":1298,"children":1299},{"style":772},[1300],{"type":75,"value":786},{"type":69,"tag":205,"props":1302,"children":1303},{"style":766},[1304],{"type":75,"value":791},{"type":69,"tag":205,"props":1306,"children":1307},{"style":772},[1308],{"type":75,"value":796},{"type":69,"tag":205,"props":1310,"children":1311},{"style":218},[1312],{"type":75,"value":1313},".\u002FrouteTree.gen",{"type":69,"tag":205,"props":1315,"children":1316},{"style":772},[1317],{"type":75,"value":806},{"type":69,"tag":205,"props":1319,"children":1320},{"class":207,"line":847},[1321],{"type":69,"tag":205,"props":1322,"children":1323},{"emptyLinePlaceholder":183},[1324],{"type":75,"value":884},{"type":69,"tag":205,"props":1326,"children":1327},{"class":207,"line":878},[1328,1332,1337,1342,1346],{"type":69,"tag":205,"props":1329,"children":1330},{"style":766},[1331],{"type":75,"value":893},{"type":69,"tag":205,"props":1333,"children":1334},{"style":1041},[1335],{"type":75,"value":1336}," function",{"type":69,"tag":205,"props":1338,"children":1339},{"style":901},[1340],{"type":75,"value":1341}," getRouter",{"type":69,"tag":205,"props":1343,"children":1344},{"style":772},[1345],{"type":75,"value":947},{"type":69,"tag":205,"props":1347,"children":1348},{"style":772},[1349],{"type":75,"value":1096},{"type":69,"tag":205,"props":1351,"children":1352},{"class":207,"line":887},[1353,1358,1363,1368,1372,1376],{"type":69,"tag":205,"props":1354,"children":1355},{"style":1041},[1356],{"type":75,"value":1357},"  const",{"type":69,"tag":205,"props":1359,"children":1360},{"style":778},[1361],{"type":75,"value":1362}," router",{"type":69,"tag":205,"props":1364,"children":1365},{"style":772},[1366],{"type":75,"value":1367}," =",{"type":69,"tag":205,"props":1369,"children":1370},{"style":901},[1371],{"type":75,"value":1260},{"type":69,"tag":205,"props":1373,"children":1374},{"style":920},[1375],{"type":75,"value":908},{"type":69,"tag":205,"props":1377,"children":1378},{"style":772},[1379],{"type":75,"value":913},{"type":69,"tag":205,"props":1381,"children":1382},{"class":207,"line":916},[1383,1388],{"type":69,"tag":205,"props":1384,"children":1385},{"style":778},[1386],{"type":75,"value":1387},"    routeTree",{"type":69,"tag":205,"props":1389,"children":1390},{"style":772},[1391],{"type":75,"value":975},{"type":69,"tag":205,"props":1393,"children":1394},{"class":207,"line":936},[1395,1400,1404,1410],{"type":69,"tag":205,"props":1396,"children":1397},{"style":920},[1398],{"type":75,"value":1399},"    scrollRestoration",{"type":69,"tag":205,"props":1401,"children":1402},{"style":772},[1403],{"type":75,"value":928},{"type":69,"tag":205,"props":1405,"children":1407},{"style":1406},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1408],{"type":75,"value":1409}," true",{"type":69,"tag":205,"props":1411,"children":1412},{"style":772},[1413],{"type":75,"value":975},{"type":69,"tag":205,"props":1415,"children":1416},{"class":207,"line":960},[1417,1422],{"type":69,"tag":205,"props":1418,"children":1419},{"style":772},[1420],{"type":75,"value":1421},"  }",{"type":69,"tag":205,"props":1423,"children":1424},{"style":920},[1425],{"type":75,"value":1002},{"type":69,"tag":205,"props":1427,"children":1428},{"class":207,"line":978},[1429,1434],{"type":69,"tag":205,"props":1430,"children":1431},{"style":766},[1432],{"type":75,"value":1433},"  return",{"type":69,"tag":205,"props":1435,"children":1436},{"style":778},[1437],{"type":75,"value":1438}," router\n",{"type":69,"tag":205,"props":1440,"children":1441},{"class":207,"line":991},[1442],{"type":69,"tag":205,"props":1443,"children":1444},{"style":772},[1445],{"type":75,"value":1221},{"type":69,"tag":162,"props":1447,"children":1449},{"id":1448},"step-3-convert-layout-root-route",[1450],{"type":75,"value":1451},"Step 3: Convert Layout → Root Route",{"type":69,"tag":78,"props":1453,"children":1454},{},[1455],{"type":75,"value":1456},"Next.js:",{"type":69,"tag":194,"props":1458,"children":1460},{"className":1230,"code":1459,"language":1232,"meta":199,"style":199},"\u002F\u002F app\u002Flayout.tsx\nexport const metadata = { title: 'My App' }\nexport default function RootLayout({ children }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>{children}\u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n",[1461],{"type":69,"tag":99,"props":1462,"children":1463},{"__ignoreMap":199},[1464,1472,1526,1566,1578,1596,1632,1648,1656],{"type":69,"tag":205,"props":1465,"children":1466},{"class":207,"line":208},[1467],{"type":69,"tag":205,"props":1468,"children":1469},{"style":757},[1470],{"type":75,"value":1471},"\u002F\u002F app\u002Flayout.tsx\n",{"type":69,"tag":205,"props":1473,"children":1474},{"class":207,"line":281},[1475,1479,1484,1489,1494,1498,1503,1507,1511,1516,1521],{"type":69,"tag":205,"props":1476,"children":1477},{"style":766},[1478],{"type":75,"value":893},{"type":69,"tag":205,"props":1480,"children":1481},{"style":1041},[1482],{"type":75,"value":1483}," const",{"type":69,"tag":205,"props":1485,"children":1486},{"style":778},[1487],{"type":75,"value":1488}," metadata ",{"type":69,"tag":205,"props":1490,"children":1491},{"style":772},[1492],{"type":75,"value":1493},"=",{"type":69,"tag":205,"props":1495,"children":1496},{"style":772},[1497],{"type":75,"value":775},{"type":69,"tag":205,"props":1499,"children":1500},{"style":920},[1501],{"type":75,"value":1502}," title",{"type":69,"tag":205,"props":1504,"children":1505},{"style":772},[1506],{"type":75,"value":928},{"type":69,"tag":205,"props":1508,"children":1509},{"style":772},[1510],{"type":75,"value":796},{"type":69,"tag":205,"props":1512,"children":1513},{"style":218},[1514],{"type":75,"value":1515},"My App",{"type":69,"tag":205,"props":1517,"children":1518},{"style":772},[1519],{"type":75,"value":1520},"'",{"type":69,"tag":205,"props":1522,"children":1523},{"style":772},[1524],{"type":75,"value":1525}," }\n",{"type":69,"tag":205,"props":1527,"children":1528},{"class":207,"line":809},[1529,1533,1537,1541,1546,1551,1557,1562],{"type":69,"tag":205,"props":1530,"children":1531},{"style":766},[1532],{"type":75,"value":893},{"type":69,"tag":205,"props":1534,"children":1535},{"style":766},[1536],{"type":75,"value":898},{"type":69,"tag":205,"props":1538,"children":1539},{"style":1041},[1540],{"type":75,"value":1336},{"type":69,"tag":205,"props":1542,"children":1543},{"style":901},[1544],{"type":75,"value":1545}," RootLayout",{"type":69,"tag":205,"props":1547,"children":1548},{"style":772},[1549],{"type":75,"value":1550},"({",{"type":69,"tag":205,"props":1552,"children":1554},{"style":1553},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1555],{"type":75,"value":1556}," children",{"type":69,"tag":205,"props":1558,"children":1559},{"style":772},[1560],{"type":75,"value":1561}," })",{"type":69,"tag":205,"props":1563,"children":1564},{"style":772},[1565],{"type":75,"value":1096},{"type":69,"tag":205,"props":1567,"children":1568},{"class":207,"line":847},[1569,1573],{"type":69,"tag":205,"props":1570,"children":1571},{"style":766},[1572],{"type":75,"value":1433},{"type":69,"tag":205,"props":1574,"children":1575},{"style":920},[1576],{"type":75,"value":1577}," (\n",{"type":69,"tag":205,"props":1579,"children":1580},{"class":207,"line":878},[1581,1586,1591],{"type":69,"tag":205,"props":1582,"children":1583},{"style":772},[1584],{"type":75,"value":1585},"    \u003C",{"type":69,"tag":205,"props":1587,"children":1588},{"style":920},[1589],{"type":75,"value":1590},"html",{"type":69,"tag":205,"props":1592,"children":1593},{"style":772},[1594],{"type":75,"value":1595},">\n",{"type":69,"tag":205,"props":1597,"children":1598},{"class":207,"line":887},[1599,1604,1609,1614,1619,1624,1628],{"type":69,"tag":205,"props":1600,"children":1601},{"style":772},[1602],{"type":75,"value":1603},"      \u003C",{"type":69,"tag":205,"props":1605,"children":1606},{"style":920},[1607],{"type":75,"value":1608},"body",{"type":69,"tag":205,"props":1610,"children":1611},{"style":772},[1612],{"type":75,"value":1613},">{",{"type":69,"tag":205,"props":1615,"children":1616},{"style":778},[1617],{"type":75,"value":1618},"children",{"type":69,"tag":205,"props":1620,"children":1621},{"style":772},[1622],{"type":75,"value":1623},"}\u003C\u002F",{"type":69,"tag":205,"props":1625,"children":1626},{"style":920},[1627],{"type":75,"value":1608},{"type":69,"tag":205,"props":1629,"children":1630},{"style":772},[1631],{"type":75,"value":1595},{"type":69,"tag":205,"props":1633,"children":1634},{"class":207,"line":916},[1635,1640,1644],{"type":69,"tag":205,"props":1636,"children":1637},{"style":772},[1638],{"type":75,"value":1639},"    \u003C\u002F",{"type":69,"tag":205,"props":1641,"children":1642},{"style":920},[1643],{"type":75,"value":1590},{"type":69,"tag":205,"props":1645,"children":1646},{"style":772},[1647],{"type":75,"value":1595},{"type":69,"tag":205,"props":1649,"children":1650},{"class":207,"line":936},[1651],{"type":69,"tag":205,"props":1652,"children":1653},{"style":920},[1654],{"type":75,"value":1655},"  )\n",{"type":69,"tag":205,"props":1657,"children":1658},{"class":207,"line":960},[1659],{"type":69,"tag":205,"props":1660,"children":1661},{"style":772},[1662],{"type":75,"value":1221},{"type":69,"tag":78,"props":1664,"children":1665},{},[1666],{"type":75,"value":1667},"TanStack Start:",{"type":69,"tag":194,"props":1669,"children":1671},{"className":1230,"code":1670,"language":1232,"meta":199,"style":199},"\u002F\u002F src\u002Froutes\u002F__root.tsx\nimport type { ReactNode } from 'react'\nimport {\n  Outlet,\n  createRootRoute,\n  HeadContent,\n  Scripts,\n} from '@tanstack\u002Freact-router'\n\nexport const Route = createRootRoute({\n  head: () => ({\n    meta: [\n      { charSet: 'utf-8' },\n      { name: 'viewport', content: 'width=device-width, initial-scale=1' },\n      { title: 'My App' },\n    ],\n  }),\n  component: RootComponent,\n})\n\nfunction RootComponent() {\n  return (\n    \u003Chtml>\n      \u003Chead>\n        \u003CHeadContent \u002F>\n      \u003C\u002Fhead>\n      \u003Cbody>\n        \u003COutlet \u002F>\n        \u003CScripts \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n",[1672],{"type":69,"tag":99,"props":1673,"children":1674},{"__ignoreMap":199},[1675,1683,1724,1735,1747,1759,1771,1783,1806,1813,1846,1877,1894,1930,1990,2022,2035,2052,2074,2086,2094,2115,2127,2143,2159,2178,2195,2211,2228,2245,2261,2277,2285],{"type":69,"tag":205,"props":1676,"children":1677},{"class":207,"line":208},[1678],{"type":69,"tag":205,"props":1679,"children":1680},{"style":757},[1681],{"type":75,"value":1682},"\u002F\u002F src\u002Froutes\u002F__root.tsx\n",{"type":69,"tag":205,"props":1684,"children":1685},{"class":207,"line":281},[1686,1690,1695,1699,1704,1708,1712,1716,1720],{"type":69,"tag":205,"props":1687,"children":1688},{"style":766},[1689],{"type":75,"value":769},{"type":69,"tag":205,"props":1691,"children":1692},{"style":766},[1693],{"type":75,"value":1694}," type",{"type":69,"tag":205,"props":1696,"children":1697},{"style":772},[1698],{"type":75,"value":775},{"type":69,"tag":205,"props":1700,"children":1701},{"style":778},[1702],{"type":75,"value":1703}," ReactNode",{"type":69,"tag":205,"props":1705,"children":1706},{"style":772},[1707],{"type":75,"value":786},{"type":69,"tag":205,"props":1709,"children":1710},{"style":766},[1711],{"type":75,"value":791},{"type":69,"tag":205,"props":1713,"children":1714},{"style":772},[1715],{"type":75,"value":796},{"type":69,"tag":205,"props":1717,"children":1718},{"style":218},[1719],{"type":75,"value":34},{"type":69,"tag":205,"props":1721,"children":1722},{"style":772},[1723],{"type":75,"value":806},{"type":69,"tag":205,"props":1725,"children":1726},{"class":207,"line":809},[1727,1731],{"type":69,"tag":205,"props":1728,"children":1729},{"style":766},[1730],{"type":75,"value":769},{"type":69,"tag":205,"props":1732,"children":1733},{"style":772},[1734],{"type":75,"value":1096},{"type":69,"tag":205,"props":1736,"children":1737},{"class":207,"line":847},[1738,1743],{"type":69,"tag":205,"props":1739,"children":1740},{"style":778},[1741],{"type":75,"value":1742},"  Outlet",{"type":69,"tag":205,"props":1744,"children":1745},{"style":772},[1746],{"type":75,"value":975},{"type":69,"tag":205,"props":1748,"children":1749},{"class":207,"line":878},[1750,1755],{"type":69,"tag":205,"props":1751,"children":1752},{"style":778},[1753],{"type":75,"value":1754},"  createRootRoute",{"type":69,"tag":205,"props":1756,"children":1757},{"style":772},[1758],{"type":75,"value":975},{"type":69,"tag":205,"props":1760,"children":1761},{"class":207,"line":887},[1762,1767],{"type":69,"tag":205,"props":1763,"children":1764},{"style":778},[1765],{"type":75,"value":1766},"  HeadContent",{"type":69,"tag":205,"props":1768,"children":1769},{"style":772},[1770],{"type":75,"value":975},{"type":69,"tag":205,"props":1772,"children":1773},{"class":207,"line":916},[1774,1779],{"type":69,"tag":205,"props":1775,"children":1776},{"style":778},[1777],{"type":75,"value":1778},"  Scripts",{"type":69,"tag":205,"props":1780,"children":1781},{"style":772},[1782],{"type":75,"value":975},{"type":69,"tag":205,"props":1784,"children":1785},{"class":207,"line":936},[1786,1790,1794,1798,1802],{"type":69,"tag":205,"props":1787,"children":1788},{"style":772},[1789],{"type":75,"value":997},{"type":69,"tag":205,"props":1791,"children":1792},{"style":766},[1793],{"type":75,"value":791},{"type":69,"tag":205,"props":1795,"children":1796},{"style":772},[1797],{"type":75,"value":796},{"type":69,"tag":205,"props":1799,"children":1800},{"style":218},[1801],{"type":75,"value":570},{"type":69,"tag":205,"props":1803,"children":1804},{"style":772},[1805],{"type":75,"value":806},{"type":69,"tag":205,"props":1807,"children":1808},{"class":207,"line":960},[1809],{"type":69,"tag":205,"props":1810,"children":1811},{"emptyLinePlaceholder":183},[1812],{"type":75,"value":884},{"type":69,"tag":205,"props":1814,"children":1815},{"class":207,"line":978},[1816,1820,1824,1829,1833,1838,1842],{"type":69,"tag":205,"props":1817,"children":1818},{"style":766},[1819],{"type":75,"value":893},{"type":69,"tag":205,"props":1821,"children":1822},{"style":1041},[1823],{"type":75,"value":1483},{"type":69,"tag":205,"props":1825,"children":1826},{"style":778},[1827],{"type":75,"value":1828}," Route ",{"type":69,"tag":205,"props":1830,"children":1831},{"style":772},[1832],{"type":75,"value":1493},{"type":69,"tag":205,"props":1834,"children":1835},{"style":901},[1836],{"type":75,"value":1837}," createRootRoute",{"type":69,"tag":205,"props":1839,"children":1840},{"style":778},[1841],{"type":75,"value":908},{"type":69,"tag":205,"props":1843,"children":1844},{"style":772},[1845],{"type":75,"value":913},{"type":69,"tag":205,"props":1847,"children":1848},{"class":207,"line":991},[1849,1854,1858,1863,1868,1873],{"type":69,"tag":205,"props":1850,"children":1851},{"style":901},[1852],{"type":75,"value":1853},"  head",{"type":69,"tag":205,"props":1855,"children":1856},{"style":772},[1857],{"type":75,"value":928},{"type":69,"tag":205,"props":1859,"children":1860},{"style":772},[1861],{"type":75,"value":1862}," ()",{"type":69,"tag":205,"props":1864,"children":1865},{"style":1041},[1866],{"type":75,"value":1867}," =>",{"type":69,"tag":205,"props":1869,"children":1870},{"style":778},[1871],{"type":75,"value":1872}," (",{"type":69,"tag":205,"props":1874,"children":1875},{"style":772},[1876],{"type":75,"value":913},{"type":69,"tag":205,"props":1878,"children":1880},{"class":207,"line":1879},12,[1881,1886,1890],{"type":69,"tag":205,"props":1882,"children":1883},{"style":920},[1884],{"type":75,"value":1885},"    meta",{"type":69,"tag":205,"props":1887,"children":1888},{"style":772},[1889],{"type":75,"value":928},{"type":69,"tag":205,"props":1891,"children":1892},{"style":778},[1893],{"type":75,"value":933},{"type":69,"tag":205,"props":1895,"children":1897},{"class":207,"line":1896},13,[1898,1903,1908,1912,1916,1921,1925],{"type":69,"tag":205,"props":1899,"children":1900},{"style":772},[1901],{"type":75,"value":1902},"      {",{"type":69,"tag":205,"props":1904,"children":1905},{"style":920},[1906],{"type":75,"value":1907}," charSet",{"type":69,"tag":205,"props":1909,"children":1910},{"style":772},[1911],{"type":75,"value":928},{"type":69,"tag":205,"props":1913,"children":1914},{"style":772},[1915],{"type":75,"value":796},{"type":69,"tag":205,"props":1917,"children":1918},{"style":218},[1919],{"type":75,"value":1920},"utf-8",{"type":69,"tag":205,"props":1922,"children":1923},{"style":772},[1924],{"type":75,"value":1520},{"type":69,"tag":205,"props":1926,"children":1927},{"style":772},[1928],{"type":75,"value":1929}," },\n",{"type":69,"tag":205,"props":1931,"children":1933},{"class":207,"line":1932},14,[1934,1938,1943,1947,1951,1956,1960,1964,1969,1973,1977,1982,1986],{"type":69,"tag":205,"props":1935,"children":1936},{"style":772},[1937],{"type":75,"value":1902},{"type":69,"tag":205,"props":1939,"children":1940},{"style":920},[1941],{"type":75,"value":1942}," name",{"type":69,"tag":205,"props":1944,"children":1945},{"style":772},[1946],{"type":75,"value":928},{"type":69,"tag":205,"props":1948,"children":1949},{"style":772},[1950],{"type":75,"value":796},{"type":69,"tag":205,"props":1952,"children":1953},{"style":218},[1954],{"type":75,"value":1955},"viewport",{"type":69,"tag":205,"props":1957,"children":1958},{"style":772},[1959],{"type":75,"value":1520},{"type":69,"tag":205,"props":1961,"children":1962},{"style":772},[1963],{"type":75,"value":952},{"type":69,"tag":205,"props":1965,"children":1966},{"style":920},[1967],{"type":75,"value":1968}," content",{"type":69,"tag":205,"props":1970,"children":1971},{"style":772},[1972],{"type":75,"value":928},{"type":69,"tag":205,"props":1974,"children":1975},{"style":772},[1976],{"type":75,"value":796},{"type":69,"tag":205,"props":1978,"children":1979},{"style":218},[1980],{"type":75,"value":1981},"width=device-width, initial-scale=1",{"type":69,"tag":205,"props":1983,"children":1984},{"style":772},[1985],{"type":75,"value":1520},{"type":69,"tag":205,"props":1987,"children":1988},{"style":772},[1989],{"type":75,"value":1929},{"type":69,"tag":205,"props":1991,"children":1993},{"class":207,"line":1992},15,[1994,1998,2002,2006,2010,2014,2018],{"type":69,"tag":205,"props":1995,"children":1996},{"style":772},[1997],{"type":75,"value":1902},{"type":69,"tag":205,"props":1999,"children":2000},{"style":920},[2001],{"type":75,"value":1502},{"type":69,"tag":205,"props":2003,"children":2004},{"style":772},[2005],{"type":75,"value":928},{"type":69,"tag":205,"props":2007,"children":2008},{"style":772},[2009],{"type":75,"value":796},{"type":69,"tag":205,"props":2011,"children":2012},{"style":218},[2013],{"type":75,"value":1515},{"type":69,"tag":205,"props":2015,"children":2016},{"style":772},[2017],{"type":75,"value":1520},{"type":69,"tag":205,"props":2019,"children":2020},{"style":772},[2021],{"type":75,"value":1929},{"type":69,"tag":205,"props":2023,"children":2025},{"class":207,"line":2024},16,[2026,2031],{"type":69,"tag":205,"props":2027,"children":2028},{"style":778},[2029],{"type":75,"value":2030},"    ]",{"type":69,"tag":205,"props":2032,"children":2033},{"style":772},[2034],{"type":75,"value":975},{"type":69,"tag":205,"props":2036,"children":2038},{"class":207,"line":2037},17,[2039,2043,2048],{"type":69,"tag":205,"props":2040,"children":2041},{"style":772},[2042],{"type":75,"value":1421},{"type":69,"tag":205,"props":2044,"children":2045},{"style":778},[2046],{"type":75,"value":2047},")",{"type":69,"tag":205,"props":2049,"children":2050},{"style":772},[2051],{"type":75,"value":975},{"type":69,"tag":205,"props":2053,"children":2055},{"class":207,"line":2054},18,[2056,2061,2065,2070],{"type":69,"tag":205,"props":2057,"children":2058},{"style":920},[2059],{"type":75,"value":2060},"  component",{"type":69,"tag":205,"props":2062,"children":2063},{"style":772},[2064],{"type":75,"value":928},{"type":69,"tag":205,"props":2066,"children":2067},{"style":778},[2068],{"type":75,"value":2069}," RootComponent",{"type":69,"tag":205,"props":2071,"children":2072},{"style":772},[2073],{"type":75,"value":975},{"type":69,"tag":205,"props":2075,"children":2077},{"class":207,"line":2076},19,[2078,2082],{"type":69,"tag":205,"props":2079,"children":2080},{"style":772},[2081],{"type":75,"value":997},{"type":69,"tag":205,"props":2083,"children":2084},{"style":778},[2085],{"type":75,"value":1002},{"type":69,"tag":205,"props":2087,"children":2089},{"class":207,"line":2088},20,[2090],{"type":69,"tag":205,"props":2091,"children":2092},{"emptyLinePlaceholder":183},[2093],{"type":75,"value":884},{"type":69,"tag":205,"props":2095,"children":2097},{"class":207,"line":2096},21,[2098,2103,2107,2111],{"type":69,"tag":205,"props":2099,"children":2100},{"style":1041},[2101],{"type":75,"value":2102},"function",{"type":69,"tag":205,"props":2104,"children":2105},{"style":901},[2106],{"type":75,"value":2069},{"type":69,"tag":205,"props":2108,"children":2109},{"style":772},[2110],{"type":75,"value":947},{"type":69,"tag":205,"props":2112,"children":2113},{"style":772},[2114],{"type":75,"value":1096},{"type":69,"tag":205,"props":2116,"children":2118},{"class":207,"line":2117},22,[2119,2123],{"type":69,"tag":205,"props":2120,"children":2121},{"style":766},[2122],{"type":75,"value":1433},{"type":69,"tag":205,"props":2124,"children":2125},{"style":920},[2126],{"type":75,"value":1577},{"type":69,"tag":205,"props":2128,"children":2130},{"class":207,"line":2129},23,[2131,2135,2139],{"type":69,"tag":205,"props":2132,"children":2133},{"style":772},[2134],{"type":75,"value":1585},{"type":69,"tag":205,"props":2136,"children":2137},{"style":920},[2138],{"type":75,"value":1590},{"type":69,"tag":205,"props":2140,"children":2141},{"style":772},[2142],{"type":75,"value":1595},{"type":69,"tag":205,"props":2144,"children":2146},{"class":207,"line":2145},24,[2147,2151,2155],{"type":69,"tag":205,"props":2148,"children":2149},{"style":772},[2150],{"type":75,"value":1603},{"type":69,"tag":205,"props":2152,"children":2153},{"style":920},[2154],{"type":75,"value":634},{"type":69,"tag":205,"props":2156,"children":2157},{"style":772},[2158],{"type":75,"value":1595},{"type":69,"tag":205,"props":2160,"children":2162},{"class":207,"line":2161},25,[2163,2168,2173],{"type":69,"tag":205,"props":2164,"children":2165},{"style":772},[2166],{"type":75,"value":2167},"        \u003C",{"type":69,"tag":205,"props":2169,"children":2170},{"style":212},[2171],{"type":75,"value":2172},"HeadContent",{"type":69,"tag":205,"props":2174,"children":2175},{"style":772},[2176],{"type":75,"value":2177}," \u002F>\n",{"type":69,"tag":205,"props":2179,"children":2181},{"class":207,"line":2180},26,[2182,2187,2191],{"type":69,"tag":205,"props":2183,"children":2184},{"style":772},[2185],{"type":75,"value":2186},"      \u003C\u002F",{"type":69,"tag":205,"props":2188,"children":2189},{"style":920},[2190],{"type":75,"value":634},{"type":69,"tag":205,"props":2192,"children":2193},{"style":772},[2194],{"type":75,"value":1595},{"type":69,"tag":205,"props":2196,"children":2198},{"class":207,"line":2197},27,[2199,2203,2207],{"type":69,"tag":205,"props":2200,"children":2201},{"style":772},[2202],{"type":75,"value":1603},{"type":69,"tag":205,"props":2204,"children":2205},{"style":920},[2206],{"type":75,"value":1608},{"type":69,"tag":205,"props":2208,"children":2209},{"style":772},[2210],{"type":75,"value":1595},{"type":69,"tag":205,"props":2212,"children":2214},{"class":207,"line":2213},28,[2215,2219,2224],{"type":69,"tag":205,"props":2216,"children":2217},{"style":772},[2218],{"type":75,"value":2167},{"type":69,"tag":205,"props":2220,"children":2221},{"style":212},[2222],{"type":75,"value":2223},"Outlet",{"type":69,"tag":205,"props":2225,"children":2226},{"style":772},[2227],{"type":75,"value":2177},{"type":69,"tag":205,"props":2229,"children":2231},{"class":207,"line":2230},29,[2232,2236,2241],{"type":69,"tag":205,"props":2233,"children":2234},{"style":772},[2235],{"type":75,"value":2167},{"type":69,"tag":205,"props":2237,"children":2238},{"style":212},[2239],{"type":75,"value":2240},"Scripts",{"type":69,"tag":205,"props":2242,"children":2243},{"style":772},[2244],{"type":75,"value":2177},{"type":69,"tag":205,"props":2246,"children":2248},{"class":207,"line":2247},30,[2249,2253,2257],{"type":69,"tag":205,"props":2250,"children":2251},{"style":772},[2252],{"type":75,"value":2186},{"type":69,"tag":205,"props":2254,"children":2255},{"style":920},[2256],{"type":75,"value":1608},{"type":69,"tag":205,"props":2258,"children":2259},{"style":772},[2260],{"type":75,"value":1595},{"type":69,"tag":205,"props":2262,"children":2264},{"class":207,"line":2263},31,[2265,2269,2273],{"type":69,"tag":205,"props":2266,"children":2267},{"style":772},[2268],{"type":75,"value":1639},{"type":69,"tag":205,"props":2270,"children":2271},{"style":920},[2272],{"type":75,"value":1590},{"type":69,"tag":205,"props":2274,"children":2275},{"style":772},[2276],{"type":75,"value":1595},{"type":69,"tag":205,"props":2278,"children":2280},{"class":207,"line":2279},32,[2281],{"type":69,"tag":205,"props":2282,"children":2283},{"style":920},[2284],{"type":75,"value":1655},{"type":69,"tag":205,"props":2286,"children":2288},{"class":207,"line":2287},33,[2289],{"type":69,"tag":205,"props":2290,"children":2291},{"style":772},[2292],{"type":75,"value":1221},{"type":69,"tag":162,"props":2294,"children":2296},{"id":2295},"step-4-convert-pages-file-routes",[2297],{"type":75,"value":2298},"Step 4: Convert Pages → File Routes",{"type":69,"tag":78,"props":2300,"children":2301},{},[2302],{"type":75,"value":1456},{"type":69,"tag":194,"props":2304,"children":2306},{"className":1230,"code":2305,"language":1232,"meta":199,"style":199},"\u002F\u002F app\u002Fposts\u002F[id]\u002Fpage.tsx\nexport default function PostPage({ params }: { params: { id: string } }) {\n  \u002F\u002F ...\n}\n",[2307],{"type":69,"tag":99,"props":2308,"children":2309},{"__ignoreMap":199},[2310,2318,2394,2402],{"type":69,"tag":205,"props":2311,"children":2312},{"class":207,"line":208},[2313],{"type":69,"tag":205,"props":2314,"children":2315},{"style":757},[2316],{"type":75,"value":2317},"\u002F\u002F app\u002Fposts\u002F[id]\u002Fpage.tsx\n",{"type":69,"tag":205,"props":2319,"children":2320},{"class":207,"line":281},[2321,2325,2329,2333,2338,2342,2347,2352,2356,2360,2364,2368,2373,2377,2382,2386,2390],{"type":69,"tag":205,"props":2322,"children":2323},{"style":766},[2324],{"type":75,"value":893},{"type":69,"tag":205,"props":2326,"children":2327},{"style":766},[2328],{"type":75,"value":898},{"type":69,"tag":205,"props":2330,"children":2331},{"style":1041},[2332],{"type":75,"value":1336},{"type":69,"tag":205,"props":2334,"children":2335},{"style":901},[2336],{"type":75,"value":2337}," PostPage",{"type":69,"tag":205,"props":2339,"children":2340},{"style":772},[2341],{"type":75,"value":1550},{"type":69,"tag":205,"props":2343,"children":2344},{"style":1553},[2345],{"type":75,"value":2346}," params",{"type":69,"tag":205,"props":2348,"children":2349},{"style":772},[2350],{"type":75,"value":2351}," }:",{"type":69,"tag":205,"props":2353,"children":2354},{"style":772},[2355],{"type":75,"value":775},{"type":69,"tag":205,"props":2357,"children":2358},{"style":920},[2359],{"type":75,"value":2346},{"type":69,"tag":205,"props":2361,"children":2362},{"style":772},[2363],{"type":75,"value":928},{"type":69,"tag":205,"props":2365,"children":2366},{"style":772},[2367],{"type":75,"value":775},{"type":69,"tag":205,"props":2369,"children":2370},{"style":920},[2371],{"type":75,"value":2372}," id",{"type":69,"tag":205,"props":2374,"children":2375},{"style":772},[2376],{"type":75,"value":928},{"type":69,"tag":205,"props":2378,"children":2379},{"style":212},[2380],{"type":75,"value":2381}," string",{"type":69,"tag":205,"props":2383,"children":2384},{"style":772},[2385],{"type":75,"value":786},{"type":69,"tag":205,"props":2387,"children":2388},{"style":772},[2389],{"type":75,"value":1561},{"type":69,"tag":205,"props":2391,"children":2392},{"style":772},[2393],{"type":75,"value":1096},{"type":69,"tag":205,"props":2395,"children":2396},{"class":207,"line":809},[2397],{"type":69,"tag":205,"props":2398,"children":2399},{"style":757},[2400],{"type":75,"value":2401},"  \u002F\u002F ...\n",{"type":69,"tag":205,"props":2403,"children":2404},{"class":207,"line":847},[2405],{"type":69,"tag":205,"props":2406,"children":2407},{"style":772},[2408],{"type":75,"value":1221},{"type":69,"tag":78,"props":2410,"children":2411},{},[2412],{"type":75,"value":1667},{"type":69,"tag":194,"props":2414,"children":2416},{"className":1230,"code":2415,"language":1232,"meta":199,"style":199},"\u002F\u002F src\u002Froutes\u002Fposts\u002F$postId.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  component: PostPage,\n})\n\nfunction PostPage() {\n  const { postId } = Route.useParams()\n  \u002F\u002F ...\n}\n",[2417],{"type":69,"tag":99,"props":2418,"children":2419},{"__ignoreMap":199},[2420,2428,2464,2471,2520,2539,2550,2557,2576,2620,2627],{"type":69,"tag":205,"props":2421,"children":2422},{"class":207,"line":208},[2423],{"type":69,"tag":205,"props":2424,"children":2425},{"style":757},[2426],{"type":75,"value":2427},"\u002F\u002F src\u002Froutes\u002Fposts\u002F$postId.tsx\n",{"type":69,"tag":205,"props":2429,"children":2430},{"class":207,"line":281},[2431,2435,2439,2444,2448,2452,2456,2460],{"type":69,"tag":205,"props":2432,"children":2433},{"style":766},[2434],{"type":75,"value":769},{"type":69,"tag":205,"props":2436,"children":2437},{"style":772},[2438],{"type":75,"value":775},{"type":69,"tag":205,"props":2440,"children":2441},{"style":778},[2442],{"type":75,"value":2443}," createFileRoute",{"type":69,"tag":205,"props":2445,"children":2446},{"style":772},[2447],{"type":75,"value":786},{"type":69,"tag":205,"props":2449,"children":2450},{"style":766},[2451],{"type":75,"value":791},{"type":69,"tag":205,"props":2453,"children":2454},{"style":772},[2455],{"type":75,"value":796},{"type":69,"tag":205,"props":2457,"children":2458},{"style":218},[2459],{"type":75,"value":570},{"type":69,"tag":205,"props":2461,"children":2462},{"style":772},[2463],{"type":75,"value":806},{"type":69,"tag":205,"props":2465,"children":2466},{"class":207,"line":809},[2467],{"type":69,"tag":205,"props":2468,"children":2469},{"emptyLinePlaceholder":183},[2470],{"type":75,"value":884},{"type":69,"tag":205,"props":2472,"children":2473},{"class":207,"line":847},[2474,2478,2482,2486,2490,2494,2498,2502,2507,2511,2516],{"type":69,"tag":205,"props":2475,"children":2476},{"style":766},[2477],{"type":75,"value":893},{"type":69,"tag":205,"props":2479,"children":2480},{"style":1041},[2481],{"type":75,"value":1483},{"type":69,"tag":205,"props":2483,"children":2484},{"style":778},[2485],{"type":75,"value":1828},{"type":69,"tag":205,"props":2487,"children":2488},{"style":772},[2489],{"type":75,"value":1493},{"type":69,"tag":205,"props":2491,"children":2492},{"style":901},[2493],{"type":75,"value":2443},{"type":69,"tag":205,"props":2495,"children":2496},{"style":778},[2497],{"type":75,"value":908},{"type":69,"tag":205,"props":2499,"children":2500},{"style":772},[2501],{"type":75,"value":1520},{"type":69,"tag":205,"props":2503,"children":2504},{"style":218},[2505],{"type":75,"value":2506},"\u002Fposts\u002F$postId",{"type":69,"tag":205,"props":2508,"children":2509},{"style":772},[2510],{"type":75,"value":1520},{"type":69,"tag":205,"props":2512,"children":2513},{"style":778},[2514],{"type":75,"value":2515},")(",{"type":69,"tag":205,"props":2517,"children":2518},{"style":772},[2519],{"type":75,"value":913},{"type":69,"tag":205,"props":2521,"children":2522},{"class":207,"line":878},[2523,2527,2531,2535],{"type":69,"tag":205,"props":2524,"children":2525},{"style":920},[2526],{"type":75,"value":2060},{"type":69,"tag":205,"props":2528,"children":2529},{"style":772},[2530],{"type":75,"value":928},{"type":69,"tag":205,"props":2532,"children":2533},{"style":778},[2534],{"type":75,"value":2337},{"type":69,"tag":205,"props":2536,"children":2537},{"style":772},[2538],{"type":75,"value":975},{"type":69,"tag":205,"props":2540,"children":2541},{"class":207,"line":887},[2542,2546],{"type":69,"tag":205,"props":2543,"children":2544},{"style":772},[2545],{"type":75,"value":997},{"type":69,"tag":205,"props":2547,"children":2548},{"style":778},[2549],{"type":75,"value":1002},{"type":69,"tag":205,"props":2551,"children":2552},{"class":207,"line":916},[2553],{"type":69,"tag":205,"props":2554,"children":2555},{"emptyLinePlaceholder":183},[2556],{"type":75,"value":884},{"type":69,"tag":205,"props":2558,"children":2559},{"class":207,"line":936},[2560,2564,2568,2572],{"type":69,"tag":205,"props":2561,"children":2562},{"style":1041},[2563],{"type":75,"value":2102},{"type":69,"tag":205,"props":2565,"children":2566},{"style":901},[2567],{"type":75,"value":2337},{"type":69,"tag":205,"props":2569,"children":2570},{"style":772},[2571],{"type":75,"value":947},{"type":69,"tag":205,"props":2573,"children":2574},{"style":772},[2575],{"type":75,"value":1096},{"type":69,"tag":205,"props":2577,"children":2578},{"class":207,"line":960},[2579,2583,2587,2592,2596,2600,2605,2610,2615],{"type":69,"tag":205,"props":2580,"children":2581},{"style":1041},[2582],{"type":75,"value":1357},{"type":69,"tag":205,"props":2584,"children":2585},{"style":772},[2586],{"type":75,"value":775},{"type":69,"tag":205,"props":2588,"children":2589},{"style":778},[2590],{"type":75,"value":2591}," postId",{"type":69,"tag":205,"props":2593,"children":2594},{"style":772},[2595],{"type":75,"value":786},{"type":69,"tag":205,"props":2597,"children":2598},{"style":772},[2599],{"type":75,"value":1367},{"type":69,"tag":205,"props":2601,"children":2602},{"style":778},[2603],{"type":75,"value":2604}," Route",{"type":69,"tag":205,"props":2606,"children":2607},{"style":772},[2608],{"type":75,"value":2609},".",{"type":69,"tag":205,"props":2611,"children":2612},{"style":901},[2613],{"type":75,"value":2614},"useParams",{"type":69,"tag":205,"props":2616,"children":2617},{"style":920},[2618],{"type":75,"value":2619},"()\n",{"type":69,"tag":205,"props":2621,"children":2622},{"class":207,"line":978},[2623],{"type":69,"tag":205,"props":2624,"children":2625},{"style":757},[2626],{"type":75,"value":2401},{"type":69,"tag":205,"props":2628,"children":2629},{"class":207,"line":991},[2630],{"type":69,"tag":205,"props":2631,"children":2632},{"style":772},[2633],{"type":75,"value":1221},{"type":69,"tag":78,"props":2635,"children":2636},{},[2637],{"type":75,"value":2638},"Key differences:",{"type":69,"tag":169,"props":2640,"children":2641},{},[2642,2661,2674],{"type":69,"tag":175,"props":2643,"children":2644},{},[2645,2647,2653,2655],{"type":75,"value":2646},"Dynamic segments use ",{"type":69,"tag":99,"props":2648,"children":2650},{"className":2649},[],[2651],{"type":75,"value":2652},"$param",{"type":75,"value":2654}," not ",{"type":69,"tag":99,"props":2656,"children":2658},{"className":2657},[],[2659],{"type":75,"value":2660},"[param]",{"type":69,"tag":175,"props":2662,"children":2663},{},[2664,2666,2672],{"type":75,"value":2665},"Params accessed via ",{"type":69,"tag":99,"props":2667,"children":2669},{"className":2668},[],[2670],{"type":75,"value":2671},"Route.useParams()",{"type":75,"value":2673}," not component props",{"type":69,"tag":175,"props":2675,"children":2676},{},[2677,2679,2684,2685,2691],{"type":75,"value":2678},"Route path in filename uses ",{"type":69,"tag":99,"props":2680,"children":2682},{"className":2681},[],[2683],{"type":75,"value":2609},{"type":75,"value":140},{"type":69,"tag":99,"props":2686,"children":2688},{"className":2687},[],[2689],{"type":75,"value":2690},"\u002F",{"type":75,"value":2692}," separators",{"type":69,"tag":162,"props":2694,"children":2696},{"id":2695},"step-5-convert-server-actions-server-functions",[2697],{"type":75,"value":2698},"Step 5: Convert Server Actions → Server Functions",{"type":69,"tag":78,"props":2700,"children":2701},{},[2702],{"type":75,"value":1456},{"type":69,"tag":194,"props":2704,"children":2706},{"className":1230,"code":2705,"language":1232,"meta":199,"style":199},"\u002F\u002F app\u002Factions.ts\n'use server'\nexport async function createPost(formData: FormData) {\n  const title = formData.get('title') as string\n  await db.posts.create({ title })\n}\n",[2707],{"type":69,"tag":99,"props":2708,"children":2709},{"__ignoreMap":199},[2710,2718,2734,2781,2842,2894],{"type":69,"tag":205,"props":2711,"children":2712},{"class":207,"line":208},[2713],{"type":69,"tag":205,"props":2714,"children":2715},{"style":757},[2716],{"type":75,"value":2717},"\u002F\u002F app\u002Factions.ts\n",{"type":69,"tag":205,"props":2719,"children":2720},{"class":207,"line":281},[2721,2725,2730],{"type":69,"tag":205,"props":2722,"children":2723},{"style":772},[2724],{"type":75,"value":1520},{"type":69,"tag":205,"props":2726,"children":2727},{"style":218},[2728],{"type":75,"value":2729},"use server",{"type":69,"tag":205,"props":2731,"children":2732},{"style":772},[2733],{"type":75,"value":806},{"type":69,"tag":205,"props":2735,"children":2736},{"class":207,"line":809},[2737,2741,2746,2750,2755,2759,2764,2768,2773,2777],{"type":69,"tag":205,"props":2738,"children":2739},{"style":766},[2740],{"type":75,"value":893},{"type":69,"tag":205,"props":2742,"children":2743},{"style":1041},[2744],{"type":75,"value":2745}," async",{"type":69,"tag":205,"props":2747,"children":2748},{"style":1041},[2749],{"type":75,"value":1336},{"type":69,"tag":205,"props":2751,"children":2752},{"style":901},[2753],{"type":75,"value":2754}," createPost",{"type":69,"tag":205,"props":2756,"children":2757},{"style":772},[2758],{"type":75,"value":908},{"type":69,"tag":205,"props":2760,"children":2761},{"style":1553},[2762],{"type":75,"value":2763},"formData",{"type":69,"tag":205,"props":2765,"children":2766},{"style":772},[2767],{"type":75,"value":928},{"type":69,"tag":205,"props":2769,"children":2770},{"style":212},[2771],{"type":75,"value":2772}," FormData",{"type":69,"tag":205,"props":2774,"children":2775},{"style":772},[2776],{"type":75,"value":2047},{"type":69,"tag":205,"props":2778,"children":2779},{"style":772},[2780],{"type":75,"value":1096},{"type":69,"tag":205,"props":2782,"children":2783},{"class":207,"line":847},[2784,2788,2792,2796,2801,2805,2810,2814,2818,2823,2827,2832,2837],{"type":69,"tag":205,"props":2785,"children":2786},{"style":1041},[2787],{"type":75,"value":1357},{"type":69,"tag":205,"props":2789,"children":2790},{"style":778},[2791],{"type":75,"value":1502},{"type":69,"tag":205,"props":2793,"children":2794},{"style":772},[2795],{"type":75,"value":1367},{"type":69,"tag":205,"props":2797,"children":2798},{"style":778},[2799],{"type":75,"value":2800}," formData",{"type":69,"tag":205,"props":2802,"children":2803},{"style":772},[2804],{"type":75,"value":2609},{"type":69,"tag":205,"props":2806,"children":2807},{"style":901},[2808],{"type":75,"value":2809},"get",{"type":69,"tag":205,"props":2811,"children":2812},{"style":920},[2813],{"type":75,"value":908},{"type":69,"tag":205,"props":2815,"children":2816},{"style":772},[2817],{"type":75,"value":1520},{"type":69,"tag":205,"props":2819,"children":2820},{"style":218},[2821],{"type":75,"value":2822},"title",{"type":69,"tag":205,"props":2824,"children":2825},{"style":772},[2826],{"type":75,"value":1520},{"type":69,"tag":205,"props":2828,"children":2829},{"style":920},[2830],{"type":75,"value":2831},") ",{"type":69,"tag":205,"props":2833,"children":2834},{"style":766},[2835],{"type":75,"value":2836},"as",{"type":69,"tag":205,"props":2838,"children":2839},{"style":212},[2840],{"type":75,"value":2841}," string\n",{"type":69,"tag":205,"props":2843,"children":2844},{"class":207,"line":878},[2845,2850,2855,2859,2864,2868,2873,2877,2882,2886,2890],{"type":69,"tag":205,"props":2846,"children":2847},{"style":766},[2848],{"type":75,"value":2849},"  await",{"type":69,"tag":205,"props":2851,"children":2852},{"style":778},[2853],{"type":75,"value":2854}," db",{"type":69,"tag":205,"props":2856,"children":2857},{"style":772},[2858],{"type":75,"value":2609},{"type":69,"tag":205,"props":2860,"children":2861},{"style":778},[2862],{"type":75,"value":2863},"posts",{"type":69,"tag":205,"props":2865,"children":2866},{"style":772},[2867],{"type":75,"value":2609},{"type":69,"tag":205,"props":2869,"children":2870},{"style":901},[2871],{"type":75,"value":2872},"create",{"type":69,"tag":205,"props":2874,"children":2875},{"style":920},[2876],{"type":75,"value":908},{"type":69,"tag":205,"props":2878,"children":2879},{"style":772},[2880],{"type":75,"value":2881},"{",{"type":69,"tag":205,"props":2883,"children":2884},{"style":778},[2885],{"type":75,"value":1502},{"type":69,"tag":205,"props":2887,"children":2888},{"style":772},[2889],{"type":75,"value":786},{"type":69,"tag":205,"props":2891,"children":2892},{"style":920},[2893],{"type":75,"value":1002},{"type":69,"tag":205,"props":2895,"children":2896},{"class":207,"line":887},[2897],{"type":69,"tag":205,"props":2898,"children":2899},{"style":772},[2900],{"type":75,"value":1221},{"type":69,"tag":78,"props":2902,"children":2903},{},[2904],{"type":75,"value":1667},{"type":69,"tag":194,"props":2906,"children":2908},{"className":1230,"code":2907,"language":1232,"meta":199,"style":199},"\u002F\u002F src\u002Futils\u002Fposts.functions.ts\nimport { createServerFn } from '@tanstack\u002Freact-start'\n\nexport const createPost = createServerFn({ method: 'POST' })\n  .validator((data) => {\n    if (!(data instanceof FormData)) throw new Error('Expected FormData')\n    return { title: data.get('title')?.toString() || '' }\n  })\n  .handler(async ({ data }) => {\n    await db.posts.create({ title: data.title })\n    return { success: true }\n  })\n",[2909],{"type":69,"tag":99,"props":2910,"children":2911},{"__ignoreMap":199},[2912,2920,2957,2964,3026,3064,3139,3221,3232,3274,3338,3366],{"type":69,"tag":205,"props":2913,"children":2914},{"class":207,"line":208},[2915],{"type":69,"tag":205,"props":2916,"children":2917},{"style":757},[2918],{"type":75,"value":2919},"\u002F\u002F src\u002Futils\u002Fposts.functions.ts\n",{"type":69,"tag":205,"props":2921,"children":2922},{"class":207,"line":281},[2923,2927,2931,2936,2940,2944,2948,2953],{"type":69,"tag":205,"props":2924,"children":2925},{"style":766},[2926],{"type":75,"value":769},{"type":69,"tag":205,"props":2928,"children":2929},{"style":772},[2930],{"type":75,"value":775},{"type":69,"tag":205,"props":2932,"children":2933},{"style":778},[2934],{"type":75,"value":2935}," createServerFn",{"type":69,"tag":205,"props":2937,"children":2938},{"style":772},[2939],{"type":75,"value":786},{"type":69,"tag":205,"props":2941,"children":2942},{"style":766},[2943],{"type":75,"value":791},{"type":69,"tag":205,"props":2945,"children":2946},{"style":772},[2947],{"type":75,"value":796},{"type":69,"tag":205,"props":2949,"children":2950},{"style":218},[2951],{"type":75,"value":2952},"@tanstack\u002Freact-start",{"type":69,"tag":205,"props":2954,"children":2955},{"style":772},[2956],{"type":75,"value":806},{"type":69,"tag":205,"props":2958,"children":2959},{"class":207,"line":809},[2960],{"type":69,"tag":205,"props":2961,"children":2962},{"emptyLinePlaceholder":183},[2963],{"type":75,"value":884},{"type":69,"tag":205,"props":2965,"children":2966},{"class":207,"line":847},[2967,2971,2975,2980,2984,2988,2992,2996,3001,3005,3009,3014,3018,3022],{"type":69,"tag":205,"props":2968,"children":2969},{"style":766},[2970],{"type":75,"value":893},{"type":69,"tag":205,"props":2972,"children":2973},{"style":1041},[2974],{"type":75,"value":1483},{"type":69,"tag":205,"props":2976,"children":2977},{"style":778},[2978],{"type":75,"value":2979}," createPost ",{"type":69,"tag":205,"props":2981,"children":2982},{"style":772},[2983],{"type":75,"value":1493},{"type":69,"tag":205,"props":2985,"children":2986},{"style":901},[2987],{"type":75,"value":2935},{"type":69,"tag":205,"props":2989,"children":2990},{"style":778},[2991],{"type":75,"value":908},{"type":69,"tag":205,"props":2993,"children":2994},{"style":772},[2995],{"type":75,"value":2881},{"type":69,"tag":205,"props":2997,"children":2998},{"style":920},[2999],{"type":75,"value":3000}," method",{"type":69,"tag":205,"props":3002,"children":3003},{"style":772},[3004],{"type":75,"value":928},{"type":69,"tag":205,"props":3006,"children":3007},{"style":772},[3008],{"type":75,"value":796},{"type":69,"tag":205,"props":3010,"children":3011},{"style":218},[3012],{"type":75,"value":3013},"POST",{"type":69,"tag":205,"props":3015,"children":3016},{"style":772},[3017],{"type":75,"value":1520},{"type":69,"tag":205,"props":3019,"children":3020},{"style":772},[3021],{"type":75,"value":786},{"type":69,"tag":205,"props":3023,"children":3024},{"style":778},[3025],{"type":75,"value":1002},{"type":69,"tag":205,"props":3027,"children":3028},{"class":207,"line":878},[3029,3034,3039,3043,3047,3052,3056,3060],{"type":69,"tag":205,"props":3030,"children":3031},{"style":772},[3032],{"type":75,"value":3033},"  .",{"type":69,"tag":205,"props":3035,"children":3036},{"style":901},[3037],{"type":75,"value":3038},"validator",{"type":69,"tag":205,"props":3040,"children":3041},{"style":778},[3042],{"type":75,"value":908},{"type":69,"tag":205,"props":3044,"children":3045},{"style":772},[3046],{"type":75,"value":908},{"type":69,"tag":205,"props":3048,"children":3049},{"style":1553},[3050],{"type":75,"value":3051},"data",{"type":69,"tag":205,"props":3053,"children":3054},{"style":772},[3055],{"type":75,"value":2047},{"type":69,"tag":205,"props":3057,"children":3058},{"style":1041},[3059],{"type":75,"value":1867},{"type":69,"tag":205,"props":3061,"children":3062},{"style":772},[3063],{"type":75,"value":1096},{"type":69,"tag":205,"props":3065,"children":3066},{"class":207,"line":887},[3067,3072,3076,3081,3085,3089,3094,3098,3103,3108,3113,3118,3122,3126,3131,3135],{"type":69,"tag":205,"props":3068,"children":3069},{"style":766},[3070],{"type":75,"value":3071},"    if",{"type":69,"tag":205,"props":3073,"children":3074},{"style":920},[3075],{"type":75,"value":1872},{"type":69,"tag":205,"props":3077,"children":3078},{"style":772},[3079],{"type":75,"value":3080},"!",{"type":69,"tag":205,"props":3082,"children":3083},{"style":920},[3084],{"type":75,"value":908},{"type":69,"tag":205,"props":3086,"children":3087},{"style":778},[3088],{"type":75,"value":3051},{"type":69,"tag":205,"props":3090,"children":3091},{"style":772},[3092],{"type":75,"value":3093}," instanceof",{"type":69,"tag":205,"props":3095,"children":3096},{"style":212},[3097],{"type":75,"value":2772},{"type":69,"tag":205,"props":3099,"children":3100},{"style":920},[3101],{"type":75,"value":3102},")) ",{"type":69,"tag":205,"props":3104,"children":3105},{"style":766},[3106],{"type":75,"value":3107},"throw",{"type":69,"tag":205,"props":3109,"children":3110},{"style":772},[3111],{"type":75,"value":3112}," new",{"type":69,"tag":205,"props":3114,"children":3115},{"style":901},[3116],{"type":75,"value":3117}," Error",{"type":69,"tag":205,"props":3119,"children":3120},{"style":920},[3121],{"type":75,"value":908},{"type":69,"tag":205,"props":3123,"children":3124},{"style":772},[3125],{"type":75,"value":1520},{"type":69,"tag":205,"props":3127,"children":3128},{"style":218},[3129],{"type":75,"value":3130},"Expected FormData",{"type":69,"tag":205,"props":3132,"children":3133},{"style":772},[3134],{"type":75,"value":1520},{"type":69,"tag":205,"props":3136,"children":3137},{"style":920},[3138],{"type":75,"value":1002},{"type":69,"tag":205,"props":3140,"children":3141},{"class":207,"line":916},[3142,3147,3151,3155,3159,3164,3168,3172,3176,3180,3184,3188,3192,3197,3202,3207,3212,3217],{"type":69,"tag":205,"props":3143,"children":3144},{"style":766},[3145],{"type":75,"value":3146},"    return",{"type":69,"tag":205,"props":3148,"children":3149},{"style":772},[3150],{"type":75,"value":775},{"type":69,"tag":205,"props":3152,"children":3153},{"style":920},[3154],{"type":75,"value":1502},{"type":69,"tag":205,"props":3156,"children":3157},{"style":772},[3158],{"type":75,"value":928},{"type":69,"tag":205,"props":3160,"children":3161},{"style":778},[3162],{"type":75,"value":3163}," data",{"type":69,"tag":205,"props":3165,"children":3166},{"style":772},[3167],{"type":75,"value":2609},{"type":69,"tag":205,"props":3169,"children":3170},{"style":901},[3171],{"type":75,"value":2809},{"type":69,"tag":205,"props":3173,"children":3174},{"style":920},[3175],{"type":75,"value":908},{"type":69,"tag":205,"props":3177,"children":3178},{"style":772},[3179],{"type":75,"value":1520},{"type":69,"tag":205,"props":3181,"children":3182},{"style":218},[3183],{"type":75,"value":2822},{"type":69,"tag":205,"props":3185,"children":3186},{"style":772},[3187],{"type":75,"value":1520},{"type":69,"tag":205,"props":3189,"children":3190},{"style":920},[3191],{"type":75,"value":2047},{"type":69,"tag":205,"props":3193,"children":3194},{"style":772},[3195],{"type":75,"value":3196},"?.",{"type":69,"tag":205,"props":3198,"children":3199},{"style":901},[3200],{"type":75,"value":3201},"toString",{"type":69,"tag":205,"props":3203,"children":3204},{"style":920},[3205],{"type":75,"value":3206},"() ",{"type":69,"tag":205,"props":3208,"children":3209},{"style":772},[3210],{"type":75,"value":3211},"||",{"type":69,"tag":205,"props":3213,"children":3214},{"style":772},[3215],{"type":75,"value":3216}," ''",{"type":69,"tag":205,"props":3218,"children":3219},{"style":772},[3220],{"type":75,"value":1525},{"type":69,"tag":205,"props":3222,"children":3223},{"class":207,"line":936},[3224,3228],{"type":69,"tag":205,"props":3225,"children":3226},{"style":772},[3227],{"type":75,"value":1421},{"type":69,"tag":205,"props":3229,"children":3230},{"style":778},[3231],{"type":75,"value":1002},{"type":69,"tag":205,"props":3233,"children":3234},{"class":207,"line":960},[3235,3239,3244,3248,3253,3258,3262,3266,3270],{"type":69,"tag":205,"props":3236,"children":3237},{"style":772},[3238],{"type":75,"value":3033},{"type":69,"tag":205,"props":3240,"children":3241},{"style":901},[3242],{"type":75,"value":3243},"handler",{"type":69,"tag":205,"props":3245,"children":3246},{"style":778},[3247],{"type":75,"value":908},{"type":69,"tag":205,"props":3249,"children":3250},{"style":1041},[3251],{"type":75,"value":3252},"async",{"type":69,"tag":205,"props":3254,"children":3255},{"style":772},[3256],{"type":75,"value":3257}," ({",{"type":69,"tag":205,"props":3259,"children":3260},{"style":1553},[3261],{"type":75,"value":3163},{"type":69,"tag":205,"props":3263,"children":3264},{"style":772},[3265],{"type":75,"value":1561},{"type":69,"tag":205,"props":3267,"children":3268},{"style":1041},[3269],{"type":75,"value":1867},{"type":69,"tag":205,"props":3271,"children":3272},{"style":772},[3273],{"type":75,"value":1096},{"type":69,"tag":205,"props":3275,"children":3276},{"class":207,"line":978},[3277,3282,3286,3290,3294,3298,3302,3306,3310,3314,3318,3322,3326,3330,3334],{"type":69,"tag":205,"props":3278,"children":3279},{"style":766},[3280],{"type":75,"value":3281},"    await",{"type":69,"tag":205,"props":3283,"children":3284},{"style":778},[3285],{"type":75,"value":2854},{"type":69,"tag":205,"props":3287,"children":3288},{"style":772},[3289],{"type":75,"value":2609},{"type":69,"tag":205,"props":3291,"children":3292},{"style":778},[3293],{"type":75,"value":2863},{"type":69,"tag":205,"props":3295,"children":3296},{"style":772},[3297],{"type":75,"value":2609},{"type":69,"tag":205,"props":3299,"children":3300},{"style":901},[3301],{"type":75,"value":2872},{"type":69,"tag":205,"props":3303,"children":3304},{"style":920},[3305],{"type":75,"value":908},{"type":69,"tag":205,"props":3307,"children":3308},{"style":772},[3309],{"type":75,"value":2881},{"type":69,"tag":205,"props":3311,"children":3312},{"style":920},[3313],{"type":75,"value":1502},{"type":69,"tag":205,"props":3315,"children":3316},{"style":772},[3317],{"type":75,"value":928},{"type":69,"tag":205,"props":3319,"children":3320},{"style":778},[3321],{"type":75,"value":3163},{"type":69,"tag":205,"props":3323,"children":3324},{"style":772},[3325],{"type":75,"value":2609},{"type":69,"tag":205,"props":3327,"children":3328},{"style":778},[3329],{"type":75,"value":2822},{"type":69,"tag":205,"props":3331,"children":3332},{"style":772},[3333],{"type":75,"value":786},{"type":69,"tag":205,"props":3335,"children":3336},{"style":920},[3337],{"type":75,"value":1002},{"type":69,"tag":205,"props":3339,"children":3340},{"class":207,"line":991},[3341,3345,3349,3354,3358,3362],{"type":69,"tag":205,"props":3342,"children":3343},{"style":766},[3344],{"type":75,"value":3146},{"type":69,"tag":205,"props":3346,"children":3347},{"style":772},[3348],{"type":75,"value":775},{"type":69,"tag":205,"props":3350,"children":3351},{"style":920},[3352],{"type":75,"value":3353}," success",{"type":69,"tag":205,"props":3355,"children":3356},{"style":772},[3357],{"type":75,"value":928},{"type":69,"tag":205,"props":3359,"children":3360},{"style":1406},[3361],{"type":75,"value":1409},{"type":69,"tag":205,"props":3363,"children":3364},{"style":772},[3365],{"type":75,"value":1525},{"type":69,"tag":205,"props":3367,"children":3368},{"class":207,"line":1879},[3369,3373],{"type":69,"tag":205,"props":3370,"children":3371},{"style":772},[3372],{"type":75,"value":1421},{"type":69,"tag":205,"props":3374,"children":3375},{"style":778},[3376],{"type":75,"value":1002},{"type":69,"tag":162,"props":3378,"children":3380},{"id":3379},"step-6-convert-data-fetching",[3381],{"type":75,"value":3382},"Step 6: Convert Data Fetching",{"type":69,"tag":78,"props":3384,"children":3385},{},[3386],{"type":75,"value":3387},"Next.js Server Component:",{"type":69,"tag":194,"props":3389,"children":3391},{"className":1230,"code":3390,"language":1232,"meta":199,"style":199},"\u002F\u002F app\u002Fposts\u002Fpage.tsx (Server Component — server-only by default)\nexport default async function PostsPage() {\n  const posts = await db.posts.findMany()\n  return \u003CPostList posts={posts} \u002F>\n}\n",[3392],{"type":69,"tag":99,"props":3393,"children":3394},{"__ignoreMap":199},[3395,3403,3435,3481,3516],{"type":69,"tag":205,"props":3396,"children":3397},{"class":207,"line":208},[3398],{"type":69,"tag":205,"props":3399,"children":3400},{"style":757},[3401],{"type":75,"value":3402},"\u002F\u002F app\u002Fposts\u002Fpage.tsx (Server Component — server-only by default)\n",{"type":69,"tag":205,"props":3404,"children":3405},{"class":207,"line":281},[3406,3410,3414,3418,3422,3427,3431],{"type":69,"tag":205,"props":3407,"children":3408},{"style":766},[3409],{"type":75,"value":893},{"type":69,"tag":205,"props":3411,"children":3412},{"style":766},[3413],{"type":75,"value":898},{"type":69,"tag":205,"props":3415,"children":3416},{"style":1041},[3417],{"type":75,"value":2745},{"type":69,"tag":205,"props":3419,"children":3420},{"style":1041},[3421],{"type":75,"value":1336},{"type":69,"tag":205,"props":3423,"children":3424},{"style":901},[3425],{"type":75,"value":3426}," PostsPage",{"type":69,"tag":205,"props":3428,"children":3429},{"style":772},[3430],{"type":75,"value":947},{"type":69,"tag":205,"props":3432,"children":3433},{"style":772},[3434],{"type":75,"value":1096},{"type":69,"tag":205,"props":3436,"children":3437},{"class":207,"line":809},[3438,3442,3447,3451,3456,3460,3464,3468,3472,3477],{"type":69,"tag":205,"props":3439,"children":3440},{"style":1041},[3441],{"type":75,"value":1357},{"type":69,"tag":205,"props":3443,"children":3444},{"style":778},[3445],{"type":75,"value":3446}," posts",{"type":69,"tag":205,"props":3448,"children":3449},{"style":772},[3450],{"type":75,"value":1367},{"type":69,"tag":205,"props":3452,"children":3453},{"style":766},[3454],{"type":75,"value":3455}," await",{"type":69,"tag":205,"props":3457,"children":3458},{"style":778},[3459],{"type":75,"value":2854},{"type":69,"tag":205,"props":3461,"children":3462},{"style":772},[3463],{"type":75,"value":2609},{"type":69,"tag":205,"props":3465,"children":3466},{"style":778},[3467],{"type":75,"value":2863},{"type":69,"tag":205,"props":3469,"children":3470},{"style":772},[3471],{"type":75,"value":2609},{"type":69,"tag":205,"props":3473,"children":3474},{"style":901},[3475],{"type":75,"value":3476},"findMany",{"type":69,"tag":205,"props":3478,"children":3479},{"style":920},[3480],{"type":75,"value":2619},{"type":69,"tag":205,"props":3482,"children":3483},{"class":207,"line":847},[3484,3488,3493,3498,3502,3507,3511],{"type":69,"tag":205,"props":3485,"children":3486},{"style":766},[3487],{"type":75,"value":1433},{"type":69,"tag":205,"props":3489,"children":3490},{"style":772},[3491],{"type":75,"value":3492}," \u003C",{"type":69,"tag":205,"props":3494,"children":3495},{"style":212},[3496],{"type":75,"value":3497},"PostList",{"type":69,"tag":205,"props":3499,"children":3500},{"style":1041},[3501],{"type":75,"value":3446},{"type":69,"tag":205,"props":3503,"children":3504},{"style":772},[3505],{"type":75,"value":3506},"={",{"type":69,"tag":205,"props":3508,"children":3509},{"style":778},[3510],{"type":75,"value":2863},{"type":69,"tag":205,"props":3512,"children":3513},{"style":772},[3514],{"type":75,"value":3515},"} \u002F>\n",{"type":69,"tag":205,"props":3517,"children":3518},{"class":207,"line":878},[3519],{"type":69,"tag":205,"props":3520,"children":3521},{"style":772},[3522],{"type":75,"value":1221},{"type":69,"tag":78,"props":3524,"children":3525},{},[3526],{"type":75,"value":1667},{"type":69,"tag":194,"props":3528,"children":3530},{"className":1230,"code":3529,"language":1232,"meta":199,"style":199},"\u002F\u002F src\u002Froutes\u002Fposts.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\nimport { createServerFn } from '@tanstack\u002Freact-start'\n\nconst getPosts = createServerFn({ method: 'GET' }).handler(async () => {\n  return db.posts.findMany()\n})\n\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: () => getPosts(), \u002F\u002F loader is isomorphic, getPosts runs on server\n  component: PostsPage,\n})\n\nfunction PostsPage() {\n  const posts = Route.useLoaderData()\n  return \u003CPostList posts={posts} \u002F>\n}\n",[3531],{"type":69,"tag":99,"props":3532,"children":3533},{"__ignoreMap":199},[3534,3542,3577,3612,3619,3705,3736,3747,3754,3802,3840,3859,3870,3877,3896,3928,3959],{"type":69,"tag":205,"props":3535,"children":3536},{"class":207,"line":208},[3537],{"type":69,"tag":205,"props":3538,"children":3539},{"style":757},[3540],{"type":75,"value":3541},"\u002F\u002F src\u002Froutes\u002Fposts.tsx\n",{"type":69,"tag":205,"props":3543,"children":3544},{"class":207,"line":281},[3545,3549,3553,3557,3561,3565,3569,3573],{"type":69,"tag":205,"props":3546,"children":3547},{"style":766},[3548],{"type":75,"value":769},{"type":69,"tag":205,"props":3550,"children":3551},{"style":772},[3552],{"type":75,"value":775},{"type":69,"tag":205,"props":3554,"children":3555},{"style":778},[3556],{"type":75,"value":2443},{"type":69,"tag":205,"props":3558,"children":3559},{"style":772},[3560],{"type":75,"value":786},{"type":69,"tag":205,"props":3562,"children":3563},{"style":766},[3564],{"type":75,"value":791},{"type":69,"tag":205,"props":3566,"children":3567},{"style":772},[3568],{"type":75,"value":796},{"type":69,"tag":205,"props":3570,"children":3571},{"style":218},[3572],{"type":75,"value":570},{"type":69,"tag":205,"props":3574,"children":3575},{"style":772},[3576],{"type":75,"value":806},{"type":69,"tag":205,"props":3578,"children":3579},{"class":207,"line":809},[3580,3584,3588,3592,3596,3600,3604,3608],{"type":69,"tag":205,"props":3581,"children":3582},{"style":766},[3583],{"type":75,"value":769},{"type":69,"tag":205,"props":3585,"children":3586},{"style":772},[3587],{"type":75,"value":775},{"type":69,"tag":205,"props":3589,"children":3590},{"style":778},[3591],{"type":75,"value":2935},{"type":69,"tag":205,"props":3593,"children":3594},{"style":772},[3595],{"type":75,"value":786},{"type":69,"tag":205,"props":3597,"children":3598},{"style":766},[3599],{"type":75,"value":791},{"type":69,"tag":205,"props":3601,"children":3602},{"style":772},[3603],{"type":75,"value":796},{"type":69,"tag":205,"props":3605,"children":3606},{"style":218},[3607],{"type":75,"value":2952},{"type":69,"tag":205,"props":3609,"children":3610},{"style":772},[3611],{"type":75,"value":806},{"type":69,"tag":205,"props":3613,"children":3614},{"class":207,"line":847},[3615],{"type":69,"tag":205,"props":3616,"children":3617},{"emptyLinePlaceholder":183},[3618],{"type":75,"value":884},{"type":69,"tag":205,"props":3620,"children":3621},{"class":207,"line":878},[3622,3627,3632,3636,3640,3644,3648,3652,3656,3660,3665,3669,3673,3677,3681,3685,3689,3693,3697,3701],{"type":69,"tag":205,"props":3623,"children":3624},{"style":1041},[3625],{"type":75,"value":3626},"const",{"type":69,"tag":205,"props":3628,"children":3629},{"style":778},[3630],{"type":75,"value":3631}," getPosts ",{"type":69,"tag":205,"props":3633,"children":3634},{"style":772},[3635],{"type":75,"value":1493},{"type":69,"tag":205,"props":3637,"children":3638},{"style":901},[3639],{"type":75,"value":2935},{"type":69,"tag":205,"props":3641,"children":3642},{"style":778},[3643],{"type":75,"value":908},{"type":69,"tag":205,"props":3645,"children":3646},{"style":772},[3647],{"type":75,"value":2881},{"type":69,"tag":205,"props":3649,"children":3650},{"style":920},[3651],{"type":75,"value":3000},{"type":69,"tag":205,"props":3653,"children":3654},{"style":772},[3655],{"type":75,"value":928},{"type":69,"tag":205,"props":3657,"children":3658},{"style":772},[3659],{"type":75,"value":796},{"type":69,"tag":205,"props":3661,"children":3662},{"style":218},[3663],{"type":75,"value":3664},"GET",{"type":69,"tag":205,"props":3666,"children":3667},{"style":772},[3668],{"type":75,"value":1520},{"type":69,"tag":205,"props":3670,"children":3671},{"style":772},[3672],{"type":75,"value":786},{"type":69,"tag":205,"props":3674,"children":3675},{"style":778},[3676],{"type":75,"value":2047},{"type":69,"tag":205,"props":3678,"children":3679},{"style":772},[3680],{"type":75,"value":2609},{"type":69,"tag":205,"props":3682,"children":3683},{"style":901},[3684],{"type":75,"value":3243},{"type":69,"tag":205,"props":3686,"children":3687},{"style":778},[3688],{"type":75,"value":908},{"type":69,"tag":205,"props":3690,"children":3691},{"style":1041},[3692],{"type":75,"value":3252},{"type":69,"tag":205,"props":3694,"children":3695},{"style":772},[3696],{"type":75,"value":1862},{"type":69,"tag":205,"props":3698,"children":3699},{"style":1041},[3700],{"type":75,"value":1867},{"type":69,"tag":205,"props":3702,"children":3703},{"style":772},[3704],{"type":75,"value":1096},{"type":69,"tag":205,"props":3706,"children":3707},{"class":207,"line":887},[3708,3712,3716,3720,3724,3728,3732],{"type":69,"tag":205,"props":3709,"children":3710},{"style":766},[3711],{"type":75,"value":1433},{"type":69,"tag":205,"props":3713,"children":3714},{"style":778},[3715],{"type":75,"value":2854},{"type":69,"tag":205,"props":3717,"children":3718},{"style":772},[3719],{"type":75,"value":2609},{"type":69,"tag":205,"props":3721,"children":3722},{"style":778},[3723],{"type":75,"value":2863},{"type":69,"tag":205,"props":3725,"children":3726},{"style":772},[3727],{"type":75,"value":2609},{"type":69,"tag":205,"props":3729,"children":3730},{"style":901},[3731],{"type":75,"value":3476},{"type":69,"tag":205,"props":3733,"children":3734},{"style":920},[3735],{"type":75,"value":2619},{"type":69,"tag":205,"props":3737,"children":3738},{"class":207,"line":916},[3739,3743],{"type":69,"tag":205,"props":3740,"children":3741},{"style":772},[3742],{"type":75,"value":997},{"type":69,"tag":205,"props":3744,"children":3745},{"style":778},[3746],{"type":75,"value":1002},{"type":69,"tag":205,"props":3748,"children":3749},{"class":207,"line":936},[3750],{"type":69,"tag":205,"props":3751,"children":3752},{"emptyLinePlaceholder":183},[3753],{"type":75,"value":884},{"type":69,"tag":205,"props":3755,"children":3756},{"class":207,"line":960},[3757,3761,3765,3769,3773,3777,3781,3785,3790,3794,3798],{"type":69,"tag":205,"props":3758,"children":3759},{"style":766},[3760],{"type":75,"value":893},{"type":69,"tag":205,"props":3762,"children":3763},{"style":1041},[3764],{"type":75,"value":1483},{"type":69,"tag":205,"props":3766,"children":3767},{"style":778},[3768],{"type":75,"value":1828},{"type":69,"tag":205,"props":3770,"children":3771},{"style":772},[3772],{"type":75,"value":1493},{"type":69,"tag":205,"props":3774,"children":3775},{"style":901},[3776],{"type":75,"value":2443},{"type":69,"tag":205,"props":3778,"children":3779},{"style":778},[3780],{"type":75,"value":908},{"type":69,"tag":205,"props":3782,"children":3783},{"style":772},[3784],{"type":75,"value":1520},{"type":69,"tag":205,"props":3786,"children":3787},{"style":218},[3788],{"type":75,"value":3789},"\u002Fposts",{"type":69,"tag":205,"props":3791,"children":3792},{"style":772},[3793],{"type":75,"value":1520},{"type":69,"tag":205,"props":3795,"children":3796},{"style":778},[3797],{"type":75,"value":2515},{"type":69,"tag":205,"props":3799,"children":3800},{"style":772},[3801],{"type":75,"value":913},{"type":69,"tag":205,"props":3803,"children":3804},{"class":207,"line":978},[3805,3810,3814,3818,3822,3827,3831,3835],{"type":69,"tag":205,"props":3806,"children":3807},{"style":901},[3808],{"type":75,"value":3809},"  loader",{"type":69,"tag":205,"props":3811,"children":3812},{"style":772},[3813],{"type":75,"value":928},{"type":69,"tag":205,"props":3815,"children":3816},{"style":772},[3817],{"type":75,"value":1862},{"type":69,"tag":205,"props":3819,"children":3820},{"style":1041},[3821],{"type":75,"value":1867},{"type":69,"tag":205,"props":3823,"children":3824},{"style":901},[3825],{"type":75,"value":3826}," getPosts",{"type":69,"tag":205,"props":3828,"children":3829},{"style":778},[3830],{"type":75,"value":947},{"type":69,"tag":205,"props":3832,"children":3833},{"style":772},[3834],{"type":75,"value":952},{"type":69,"tag":205,"props":3836,"children":3837},{"style":757},[3838],{"type":75,"value":3839}," \u002F\u002F loader is isomorphic, getPosts runs on server\n",{"type":69,"tag":205,"props":3841,"children":3842},{"class":207,"line":991},[3843,3847,3851,3855],{"type":69,"tag":205,"props":3844,"children":3845},{"style":920},[3846],{"type":75,"value":2060},{"type":69,"tag":205,"props":3848,"children":3849},{"style":772},[3850],{"type":75,"value":928},{"type":69,"tag":205,"props":3852,"children":3853},{"style":778},[3854],{"type":75,"value":3426},{"type":69,"tag":205,"props":3856,"children":3857},{"style":772},[3858],{"type":75,"value":975},{"type":69,"tag":205,"props":3860,"children":3861},{"class":207,"line":1879},[3862,3866],{"type":69,"tag":205,"props":3863,"children":3864},{"style":772},[3865],{"type":75,"value":997},{"type":69,"tag":205,"props":3867,"children":3868},{"style":778},[3869],{"type":75,"value":1002},{"type":69,"tag":205,"props":3871,"children":3872},{"class":207,"line":1896},[3873],{"type":69,"tag":205,"props":3874,"children":3875},{"emptyLinePlaceholder":183},[3876],{"type":75,"value":884},{"type":69,"tag":205,"props":3878,"children":3879},{"class":207,"line":1932},[3880,3884,3888,3892],{"type":69,"tag":205,"props":3881,"children":3882},{"style":1041},[3883],{"type":75,"value":2102},{"type":69,"tag":205,"props":3885,"children":3886},{"style":901},[3887],{"type":75,"value":3426},{"type":69,"tag":205,"props":3889,"children":3890},{"style":772},[3891],{"type":75,"value":947},{"type":69,"tag":205,"props":3893,"children":3894},{"style":772},[3895],{"type":75,"value":1096},{"type":69,"tag":205,"props":3897,"children":3898},{"class":207,"line":1992},[3899,3903,3907,3911,3915,3919,3924],{"type":69,"tag":205,"props":3900,"children":3901},{"style":1041},[3902],{"type":75,"value":1357},{"type":69,"tag":205,"props":3904,"children":3905},{"style":778},[3906],{"type":75,"value":3446},{"type":69,"tag":205,"props":3908,"children":3909},{"style":772},[3910],{"type":75,"value":1367},{"type":69,"tag":205,"props":3912,"children":3913},{"style":778},[3914],{"type":75,"value":2604},{"type":69,"tag":205,"props":3916,"children":3917},{"style":772},[3918],{"type":75,"value":2609},{"type":69,"tag":205,"props":3920,"children":3921},{"style":901},[3922],{"type":75,"value":3923},"useLoaderData",{"type":69,"tag":205,"props":3925,"children":3926},{"style":920},[3927],{"type":75,"value":2619},{"type":69,"tag":205,"props":3929,"children":3930},{"class":207,"line":2024},[3931,3935,3939,3943,3947,3951,3955],{"type":69,"tag":205,"props":3932,"children":3933},{"style":766},[3934],{"type":75,"value":1433},{"type":69,"tag":205,"props":3936,"children":3937},{"style":772},[3938],{"type":75,"value":3492},{"type":69,"tag":205,"props":3940,"children":3941},{"style":212},[3942],{"type":75,"value":3497},{"type":69,"tag":205,"props":3944,"children":3945},{"style":1041},[3946],{"type":75,"value":3446},{"type":69,"tag":205,"props":3948,"children":3949},{"style":772},[3950],{"type":75,"value":3506},{"type":69,"tag":205,"props":3952,"children":3953},{"style":778},[3954],{"type":75,"value":2863},{"type":69,"tag":205,"props":3956,"children":3957},{"style":772},[3958],{"type":75,"value":3515},{"type":69,"tag":205,"props":3960,"children":3961},{"class":207,"line":2037},[3962],{"type":69,"tag":205,"props":3963,"children":3964},{"style":772},[3965],{"type":75,"value":1221},{"type":69,"tag":162,"props":3967,"children":3969},{"id":3968},"step-7-convert-api-routes-server-routes",[3970],{"type":75,"value":3971},"Step 7: Convert API Routes → Server Routes",{"type":69,"tag":78,"props":3973,"children":3974},{},[3975],{"type":75,"value":1456},{"type":69,"tag":194,"props":3977,"children":3979},{"className":745,"code":3978,"language":747,"meta":199,"style":199},"\u002F\u002F app\u002Fapi\u002Fusers\u002Froute.ts\nexport async function GET() {\n  const users = await db.users.findMany()\n  return Response.json(users)\n}\n",[3980],{"type":69,"tag":99,"props":3981,"children":3982},{"__ignoreMap":199},[3983,3991,4019,4064,4096],{"type":69,"tag":205,"props":3984,"children":3985},{"class":207,"line":208},[3986],{"type":69,"tag":205,"props":3987,"children":3988},{"style":757},[3989],{"type":75,"value":3990},"\u002F\u002F app\u002Fapi\u002Fusers\u002Froute.ts\n",{"type":69,"tag":205,"props":3992,"children":3993},{"class":207,"line":281},[3994,3998,4002,4006,4011,4015],{"type":69,"tag":205,"props":3995,"children":3996},{"style":766},[3997],{"type":75,"value":893},{"type":69,"tag":205,"props":3999,"children":4000},{"style":1041},[4001],{"type":75,"value":2745},{"type":69,"tag":205,"props":4003,"children":4004},{"style":1041},[4005],{"type":75,"value":1336},{"type":69,"tag":205,"props":4007,"children":4008},{"style":901},[4009],{"type":75,"value":4010}," GET",{"type":69,"tag":205,"props":4012,"children":4013},{"style":772},[4014],{"type":75,"value":947},{"type":69,"tag":205,"props":4016,"children":4017},{"style":772},[4018],{"type":75,"value":1096},{"type":69,"tag":205,"props":4020,"children":4021},{"class":207,"line":809},[4022,4026,4031,4035,4039,4043,4047,4052,4056,4060],{"type":69,"tag":205,"props":4023,"children":4024},{"style":1041},[4025],{"type":75,"value":1357},{"type":69,"tag":205,"props":4027,"children":4028},{"style":778},[4029],{"type":75,"value":4030}," users",{"type":69,"tag":205,"props":4032,"children":4033},{"style":772},[4034],{"type":75,"value":1367},{"type":69,"tag":205,"props":4036,"children":4037},{"style":766},[4038],{"type":75,"value":3455},{"type":69,"tag":205,"props":4040,"children":4041},{"style":778},[4042],{"type":75,"value":2854},{"type":69,"tag":205,"props":4044,"children":4045},{"style":772},[4046],{"type":75,"value":2609},{"type":69,"tag":205,"props":4048,"children":4049},{"style":778},[4050],{"type":75,"value":4051},"users",{"type":69,"tag":205,"props":4053,"children":4054},{"style":772},[4055],{"type":75,"value":2609},{"type":69,"tag":205,"props":4057,"children":4058},{"style":901},[4059],{"type":75,"value":3476},{"type":69,"tag":205,"props":4061,"children":4062},{"style":920},[4063],{"type":75,"value":2619},{"type":69,"tag":205,"props":4065,"children":4066},{"class":207,"line":847},[4067,4071,4076,4080,4084,4088,4092],{"type":69,"tag":205,"props":4068,"children":4069},{"style":766},[4070],{"type":75,"value":1433},{"type":69,"tag":205,"props":4072,"children":4073},{"style":778},[4074],{"type":75,"value":4075}," Response",{"type":69,"tag":205,"props":4077,"children":4078},{"style":772},[4079],{"type":75,"value":2609},{"type":69,"tag":205,"props":4081,"children":4082},{"style":901},[4083],{"type":75,"value":1019},{"type":69,"tag":205,"props":4085,"children":4086},{"style":920},[4087],{"type":75,"value":908},{"type":69,"tag":205,"props":4089,"children":4090},{"style":778},[4091],{"type":75,"value":4051},{"type":69,"tag":205,"props":4093,"children":4094},{"style":920},[4095],{"type":75,"value":1002},{"type":69,"tag":205,"props":4097,"children":4098},{"class":207,"line":878},[4099],{"type":69,"tag":205,"props":4100,"children":4101},{"style":772},[4102],{"type":75,"value":1221},{"type":69,"tag":78,"props":4104,"children":4105},{},[4106],{"type":75,"value":1667},{"type":69,"tag":194,"props":4108,"children":4110},{"className":745,"code":4109,"language":747,"meta":199,"style":199},"\u002F\u002F src\u002Froutes\u002Fapi\u002Fusers.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fapi\u002Fusers')({\n  server: {\n    handlers: {\n      GET: async () => {\n        const users = await db.users.findMany()\n        return Response.json(users)\n      },\n    },\n  },\n})\n",[4111],{"type":69,"tag":99,"props":4112,"children":4113},{"__ignoreMap":199},[4114,4122,4157,4164,4212,4228,4244,4272,4316,4348,4356,4364,4372],{"type":69,"tag":205,"props":4115,"children":4116},{"class":207,"line":208},[4117],{"type":69,"tag":205,"props":4118,"children":4119},{"style":757},[4120],{"type":75,"value":4121},"\u002F\u002F src\u002Froutes\u002Fapi\u002Fusers.ts\n",{"type":69,"tag":205,"props":4123,"children":4124},{"class":207,"line":281},[4125,4129,4133,4137,4141,4145,4149,4153],{"type":69,"tag":205,"props":4126,"children":4127},{"style":766},[4128],{"type":75,"value":769},{"type":69,"tag":205,"props":4130,"children":4131},{"style":772},[4132],{"type":75,"value":775},{"type":69,"tag":205,"props":4134,"children":4135},{"style":778},[4136],{"type":75,"value":2443},{"type":69,"tag":205,"props":4138,"children":4139},{"style":772},[4140],{"type":75,"value":786},{"type":69,"tag":205,"props":4142,"children":4143},{"style":766},[4144],{"type":75,"value":791},{"type":69,"tag":205,"props":4146,"children":4147},{"style":772},[4148],{"type":75,"value":796},{"type":69,"tag":205,"props":4150,"children":4151},{"style":218},[4152],{"type":75,"value":570},{"type":69,"tag":205,"props":4154,"children":4155},{"style":772},[4156],{"type":75,"value":806},{"type":69,"tag":205,"props":4158,"children":4159},{"class":207,"line":809},[4160],{"type":69,"tag":205,"props":4161,"children":4162},{"emptyLinePlaceholder":183},[4163],{"type":75,"value":884},{"type":69,"tag":205,"props":4165,"children":4166},{"class":207,"line":847},[4167,4171,4175,4179,4183,4187,4191,4195,4200,4204,4208],{"type":69,"tag":205,"props":4168,"children":4169},{"style":766},[4170],{"type":75,"value":893},{"type":69,"tag":205,"props":4172,"children":4173},{"style":1041},[4174],{"type":75,"value":1483},{"type":69,"tag":205,"props":4176,"children":4177},{"style":778},[4178],{"type":75,"value":1828},{"type":69,"tag":205,"props":4180,"children":4181},{"style":772},[4182],{"type":75,"value":1493},{"type":69,"tag":205,"props":4184,"children":4185},{"style":901},[4186],{"type":75,"value":2443},{"type":69,"tag":205,"props":4188,"children":4189},{"style":778},[4190],{"type":75,"value":908},{"type":69,"tag":205,"props":4192,"children":4193},{"style":772},[4194],{"type":75,"value":1520},{"type":69,"tag":205,"props":4196,"children":4197},{"style":218},[4198],{"type":75,"value":4199},"\u002Fapi\u002Fusers",{"type":69,"tag":205,"props":4201,"children":4202},{"style":772},[4203],{"type":75,"value":1520},{"type":69,"tag":205,"props":4205,"children":4206},{"style":778},[4207],{"type":75,"value":2515},{"type":69,"tag":205,"props":4209,"children":4210},{"style":772},[4211],{"type":75,"value":913},{"type":69,"tag":205,"props":4213,"children":4214},{"class":207,"line":878},[4215,4220,4224],{"type":69,"tag":205,"props":4216,"children":4217},{"style":920},[4218],{"type":75,"value":4219},"  server",{"type":69,"tag":205,"props":4221,"children":4222},{"style":772},[4223],{"type":75,"value":928},{"type":69,"tag":205,"props":4225,"children":4226},{"style":772},[4227],{"type":75,"value":1096},{"type":69,"tag":205,"props":4229,"children":4230},{"class":207,"line":887},[4231,4236,4240],{"type":69,"tag":205,"props":4232,"children":4233},{"style":920},[4234],{"type":75,"value":4235},"    handlers",{"type":69,"tag":205,"props":4237,"children":4238},{"style":772},[4239],{"type":75,"value":928},{"type":69,"tag":205,"props":4241,"children":4242},{"style":772},[4243],{"type":75,"value":1096},{"type":69,"tag":205,"props":4245,"children":4246},{"class":207,"line":916},[4247,4252,4256,4260,4264,4268],{"type":69,"tag":205,"props":4248,"children":4249},{"style":901},[4250],{"type":75,"value":4251},"      GET",{"type":69,"tag":205,"props":4253,"children":4254},{"style":772},[4255],{"type":75,"value":928},{"type":69,"tag":205,"props":4257,"children":4258},{"style":1041},[4259],{"type":75,"value":2745},{"type":69,"tag":205,"props":4261,"children":4262},{"style":772},[4263],{"type":75,"value":1862},{"type":69,"tag":205,"props":4265,"children":4266},{"style":1041},[4267],{"type":75,"value":1867},{"type":69,"tag":205,"props":4269,"children":4270},{"style":772},[4271],{"type":75,"value":1096},{"type":69,"tag":205,"props":4273,"children":4274},{"class":207,"line":936},[4275,4280,4284,4288,4292,4296,4300,4304,4308,4312],{"type":69,"tag":205,"props":4276,"children":4277},{"style":1041},[4278],{"type":75,"value":4279},"        const",{"type":69,"tag":205,"props":4281,"children":4282},{"style":778},[4283],{"type":75,"value":4030},{"type":69,"tag":205,"props":4285,"children":4286},{"style":772},[4287],{"type":75,"value":1367},{"type":69,"tag":205,"props":4289,"children":4290},{"style":766},[4291],{"type":75,"value":3455},{"type":69,"tag":205,"props":4293,"children":4294},{"style":778},[4295],{"type":75,"value":2854},{"type":69,"tag":205,"props":4297,"children":4298},{"style":772},[4299],{"type":75,"value":2609},{"type":69,"tag":205,"props":4301,"children":4302},{"style":778},[4303],{"type":75,"value":4051},{"type":69,"tag":205,"props":4305,"children":4306},{"style":772},[4307],{"type":75,"value":2609},{"type":69,"tag":205,"props":4309,"children":4310},{"style":901},[4311],{"type":75,"value":3476},{"type":69,"tag":205,"props":4313,"children":4314},{"style":920},[4315],{"type":75,"value":2619},{"type":69,"tag":205,"props":4317,"children":4318},{"class":207,"line":960},[4319,4324,4328,4332,4336,4340,4344],{"type":69,"tag":205,"props":4320,"children":4321},{"style":766},[4322],{"type":75,"value":4323},"        return",{"type":69,"tag":205,"props":4325,"children":4326},{"style":778},[4327],{"type":75,"value":4075},{"type":69,"tag":205,"props":4329,"children":4330},{"style":772},[4331],{"type":75,"value":2609},{"type":69,"tag":205,"props":4333,"children":4334},{"style":901},[4335],{"type":75,"value":1019},{"type":69,"tag":205,"props":4337,"children":4338},{"style":920},[4339],{"type":75,"value":908},{"type":69,"tag":205,"props":4341,"children":4342},{"style":778},[4343],{"type":75,"value":4051},{"type":69,"tag":205,"props":4345,"children":4346},{"style":920},[4347],{"type":75,"value":1002},{"type":69,"tag":205,"props":4349,"children":4350},{"class":207,"line":978},[4351],{"type":69,"tag":205,"props":4352,"children":4353},{"style":772},[4354],{"type":75,"value":4355},"      },\n",{"type":69,"tag":205,"props":4357,"children":4358},{"class":207,"line":991},[4359],{"type":69,"tag":205,"props":4360,"children":4361},{"style":772},[4362],{"type":75,"value":4363},"    },\n",{"type":69,"tag":205,"props":4365,"children":4366},{"class":207,"line":1879},[4367],{"type":69,"tag":205,"props":4368,"children":4369},{"style":772},[4370],{"type":75,"value":4371},"  },\n",{"type":69,"tag":205,"props":4373,"children":4374},{"class":207,"line":1896},[4375,4379],{"type":69,"tag":205,"props":4376,"children":4377},{"style":772},[4378],{"type":75,"value":997},{"type":69,"tag":205,"props":4380,"children":4381},{"style":778},[4382],{"type":75,"value":1002},{"type":69,"tag":162,"props":4384,"children":4386},{"id":4385},"step-8-convert-navigation",[4387],{"type":75,"value":4388},"Step 8: Convert Navigation",{"type":69,"tag":78,"props":4390,"children":4391},{},[4392],{"type":75,"value":1456},{"type":69,"tag":194,"props":4394,"children":4396},{"className":1230,"code":4395,"language":1232,"meta":199,"style":199},"import Link from 'next\u002Flink'\n;\u003CLink href={`\u002Fposts\u002F${post.id}`}>View Post\u003C\u002FLink>\n",[4397],{"type":69,"tag":99,"props":4398,"children":4399},{"__ignoreMap":199},[4400,4428],{"type":69,"tag":205,"props":4401,"children":4402},{"class":207,"line":208},[4403,4407,4412,4416,4420,4424],{"type":69,"tag":205,"props":4404,"children":4405},{"style":766},[4406],{"type":75,"value":769},{"type":69,"tag":205,"props":4408,"children":4409},{"style":778},[4410],{"type":75,"value":4411}," Link ",{"type":69,"tag":205,"props":4413,"children":4414},{"style":766},[4415],{"type":75,"value":862},{"type":69,"tag":205,"props":4417,"children":4418},{"style":772},[4419],{"type":75,"value":796},{"type":69,"tag":205,"props":4421,"children":4422},{"style":218},[4423],{"type":75,"value":582},{"type":69,"tag":205,"props":4425,"children":4426},{"style":772},[4427],{"type":75,"value":806},{"type":69,"tag":205,"props":4429,"children":4430},{"class":207,"line":281},[4431,4436,4441,4445,4450,4455,4460,4465,4469,4474,4479,4484,4489,4494,4498],{"type":69,"tag":205,"props":4432,"children":4433},{"style":772},[4434],{"type":75,"value":4435},";\u003C",{"type":69,"tag":205,"props":4437,"children":4438},{"style":778},[4439],{"type":75,"value":4440},"Link href",{"type":69,"tag":205,"props":4442,"children":4443},{"style":772},[4444],{"type":75,"value":3506},{"type":69,"tag":205,"props":4446,"children":4447},{"style":772},[4448],{"type":75,"value":4449},"`",{"type":69,"tag":205,"props":4451,"children":4452},{"style":920},[4453],{"type":75,"value":4454},"\u002Fposts\u002F",{"type":69,"tag":205,"props":4456,"children":4457},{"style":772},[4458],{"type":75,"value":4459},"${",{"type":69,"tag":205,"props":4461,"children":4462},{"style":778},[4463],{"type":75,"value":4464},"post",{"type":69,"tag":205,"props":4466,"children":4467},{"style":772},[4468],{"type":75,"value":2609},{"type":69,"tag":205,"props":4470,"children":4471},{"style":778},[4472],{"type":75,"value":4473},"id",{"type":69,"tag":205,"props":4475,"children":4476},{"style":772},[4477],{"type":75,"value":4478},"}`",{"type":69,"tag":205,"props":4480,"children":4481},{"style":772},[4482],{"type":75,"value":4483},"}>",{"type":69,"tag":205,"props":4485,"children":4486},{"style":778},[4487],{"type":75,"value":4488},"View Post",{"type":69,"tag":205,"props":4490,"children":4491},{"style":772},[4492],{"type":75,"value":4493},"\u003C\u002F",{"type":69,"tag":205,"props":4495,"children":4496},{"style":778},[4497],{"type":75,"value":589},{"type":69,"tag":205,"props":4499,"children":4500},{"style":772},[4501],{"type":75,"value":1595},{"type":69,"tag":78,"props":4503,"children":4504},{},[4505],{"type":75,"value":1667},{"type":69,"tag":194,"props":4507,"children":4509},{"className":1230,"code":4508,"language":1232,"meta":199,"style":199},"import { Link } from '@tanstack\u002Freact-router'\n;\u003CLink to=\"\u002Fposts\u002F$postId\" params={{ postId: post.id }}>\n  View Post\n\u003C\u002FLink>\n",[4510],{"type":69,"tag":99,"props":4511,"children":4512},{"__ignoreMap":199},[4513,4549,4612,4620],{"type":69,"tag":205,"props":4514,"children":4515},{"class":207,"line":208},[4516,4520,4524,4529,4533,4537,4541,4545],{"type":69,"tag":205,"props":4517,"children":4518},{"style":766},[4519],{"type":75,"value":769},{"type":69,"tag":205,"props":4521,"children":4522},{"style":772},[4523],{"type":75,"value":775},{"type":69,"tag":205,"props":4525,"children":4526},{"style":778},[4527],{"type":75,"value":4528}," Link",{"type":69,"tag":205,"props":4530,"children":4531},{"style":772},[4532],{"type":75,"value":786},{"type":69,"tag":205,"props":4534,"children":4535},{"style":766},[4536],{"type":75,"value":791},{"type":69,"tag":205,"props":4538,"children":4539},{"style":772},[4540],{"type":75,"value":796},{"type":69,"tag":205,"props":4542,"children":4543},{"style":218},[4544],{"type":75,"value":570},{"type":69,"tag":205,"props":4546,"children":4547},{"style":772},[4548],{"type":75,"value":806},{"type":69,"tag":205,"props":4550,"children":4551},{"class":207,"line":281},[4552,4556,4561,4565,4569,4573,4577,4581,4586,4590,4594,4599,4603,4607],{"type":69,"tag":205,"props":4553,"children":4554},{"style":772},[4555],{"type":75,"value":4435},{"type":69,"tag":205,"props":4557,"children":4558},{"style":778},[4559],{"type":75,"value":4560},"Link to",{"type":69,"tag":205,"props":4562,"children":4563},{"style":772},[4564],{"type":75,"value":1493},{"type":69,"tag":205,"props":4566,"children":4567},{"style":772},[4568],{"type":75,"value":1049},{"type":69,"tag":205,"props":4570,"children":4571},{"style":218},[4572],{"type":75,"value":2506},{"type":69,"tag":205,"props":4574,"children":4575},{"style":772},[4576],{"type":75,"value":1049},{"type":69,"tag":205,"props":4578,"children":4579},{"style":778},[4580],{"type":75,"value":2346},{"type":69,"tag":205,"props":4582,"children":4583},{"style":772},[4584],{"type":75,"value":4585},"={{",{"type":69,"tag":205,"props":4587,"children":4588},{"style":212},[4589],{"type":75,"value":2591},{"type":69,"tag":205,"props":4591,"children":4592},{"style":772},[4593],{"type":75,"value":928},{"type":69,"tag":205,"props":4595,"children":4596},{"style":778},[4597],{"type":75,"value":4598}," post",{"type":69,"tag":205,"props":4600,"children":4601},{"style":772},[4602],{"type":75,"value":2609},{"type":69,"tag":205,"props":4604,"children":4605},{"style":778},[4606],{"type":75,"value":4473},{"type":69,"tag":205,"props":4608,"children":4609},{"style":772},[4610],{"type":75,"value":4611}," }}>\n",{"type":69,"tag":205,"props":4613,"children":4614},{"class":207,"line":809},[4615],{"type":69,"tag":205,"props":4616,"children":4617},{"style":778},[4618],{"type":75,"value":4619},"  View Post\n",{"type":69,"tag":205,"props":4621,"children":4622},{"class":207,"line":847},[4623,4627,4631],{"type":69,"tag":205,"props":4624,"children":4625},{"style":772},[4626],{"type":75,"value":4493},{"type":69,"tag":205,"props":4628,"children":4629},{"style":778},[4630],{"type":75,"value":589},{"type":69,"tag":205,"props":4632,"children":4633},{"style":772},[4634],{"type":75,"value":1595},{"type":69,"tag":78,"props":4636,"children":4637},{},[4638,4640,4646,4648,4654],{"type":75,"value":4639},"Never interpolate params into the ",{"type":69,"tag":99,"props":4641,"children":4643},{"className":4642},[],[4644],{"type":75,"value":4645},"to",{"type":75,"value":4647}," string. Use ",{"type":69,"tag":99,"props":4649,"children":4651},{"className":4650},[],[4652],{"type":75,"value":4653},"params",{"type":75,"value":4655}," prop.",{"type":69,"tag":162,"props":4657,"children":4659},{"id":4658},"step-9-convert-middleware",[4660],{"type":75,"value":4661},"Step 9: Convert Middleware",{"type":69,"tag":78,"props":4663,"children":4664},{},[4665],{"type":75,"value":1456},{"type":69,"tag":194,"props":4667,"children":4669},{"className":745,"code":4668,"language":747,"meta":199,"style":199},"\u002F\u002F middleware.ts\nexport function middleware(request: NextRequest) {\n  const token = request.cookies.get('session')\n  if (!token) return NextResponse.redirect(new URL('\u002Flogin', request.url))\n}\nexport const config = { matcher: ['\u002Fdashboard\u002F:path*'] }\n",[4670],{"type":69,"tag":99,"props":4671,"children":4672},{"__ignoreMap":199},[4673,4681,4723,4782,4878,4885],{"type":69,"tag":205,"props":4674,"children":4675},{"class":207,"line":208},[4676],{"type":69,"tag":205,"props":4677,"children":4678},{"style":757},[4679],{"type":75,"value":4680},"\u002F\u002F middleware.ts\n",{"type":69,"tag":205,"props":4682,"children":4683},{"class":207,"line":281},[4684,4688,4692,4697,4701,4706,4710,4715,4719],{"type":69,"tag":205,"props":4685,"children":4686},{"style":766},[4687],{"type":75,"value":893},{"type":69,"tag":205,"props":4689,"children":4690},{"style":1041},[4691],{"type":75,"value":1336},{"type":69,"tag":205,"props":4693,"children":4694},{"style":901},[4695],{"type":75,"value":4696}," middleware",{"type":69,"tag":205,"props":4698,"children":4699},{"style":772},[4700],{"type":75,"value":908},{"type":69,"tag":205,"props":4702,"children":4703},{"style":1553},[4704],{"type":75,"value":4705},"request",{"type":69,"tag":205,"props":4707,"children":4708},{"style":772},[4709],{"type":75,"value":928},{"type":69,"tag":205,"props":4711,"children":4712},{"style":212},[4713],{"type":75,"value":4714}," NextRequest",{"type":69,"tag":205,"props":4716,"children":4717},{"style":772},[4718],{"type":75,"value":2047},{"type":69,"tag":205,"props":4720,"children":4721},{"style":772},[4722],{"type":75,"value":1096},{"type":69,"tag":205,"props":4724,"children":4725},{"class":207,"line":809},[4726,4730,4735,4739,4744,4748,4753,4757,4761,4765,4769,4774,4778],{"type":69,"tag":205,"props":4727,"children":4728},{"style":1041},[4729],{"type":75,"value":1357},{"type":69,"tag":205,"props":4731,"children":4732},{"style":778},[4733],{"type":75,"value":4734}," token",{"type":69,"tag":205,"props":4736,"children":4737},{"style":772},[4738],{"type":75,"value":1367},{"type":69,"tag":205,"props":4740,"children":4741},{"style":778},[4742],{"type":75,"value":4743}," request",{"type":69,"tag":205,"props":4745,"children":4746},{"style":772},[4747],{"type":75,"value":2609},{"type":69,"tag":205,"props":4749,"children":4750},{"style":778},[4751],{"type":75,"value":4752},"cookies",{"type":69,"tag":205,"props":4754,"children":4755},{"style":772},[4756],{"type":75,"value":2609},{"type":69,"tag":205,"props":4758,"children":4759},{"style":901},[4760],{"type":75,"value":2809},{"type":69,"tag":205,"props":4762,"children":4763},{"style":920},[4764],{"type":75,"value":908},{"type":69,"tag":205,"props":4766,"children":4767},{"style":772},[4768],{"type":75,"value":1520},{"type":69,"tag":205,"props":4770,"children":4771},{"style":218},[4772],{"type":75,"value":4773},"session",{"type":69,"tag":205,"props":4775,"children":4776},{"style":772},[4777],{"type":75,"value":1520},{"type":69,"tag":205,"props":4779,"children":4780},{"style":920},[4781],{"type":75,"value":1002},{"type":69,"tag":205,"props":4783,"children":4784},{"class":207,"line":847},[4785,4790,4794,4798,4803,4807,4812,4817,4821,4826,4830,4835,4840,4844,4848,4853,4857,4861,4865,4869,4873],{"type":69,"tag":205,"props":4786,"children":4787},{"style":766},[4788],{"type":75,"value":4789},"  if",{"type":69,"tag":205,"props":4791,"children":4792},{"style":920},[4793],{"type":75,"value":1872},{"type":69,"tag":205,"props":4795,"children":4796},{"style":772},[4797],{"type":75,"value":3080},{"type":69,"tag":205,"props":4799,"children":4800},{"style":778},[4801],{"type":75,"value":4802},"token",{"type":69,"tag":205,"props":4804,"children":4805},{"style":920},[4806],{"type":75,"value":2831},{"type":69,"tag":205,"props":4808,"children":4809},{"style":766},[4810],{"type":75,"value":4811},"return",{"type":69,"tag":205,"props":4813,"children":4814},{"style":778},[4815],{"type":75,"value":4816}," NextResponse",{"type":69,"tag":205,"props":4818,"children":4819},{"style":772},[4820],{"type":75,"value":2609},{"type":69,"tag":205,"props":4822,"children":4823},{"style":901},[4824],{"type":75,"value":4825},"redirect",{"type":69,"tag":205,"props":4827,"children":4828},{"style":920},[4829],{"type":75,"value":908},{"type":69,"tag":205,"props":4831,"children":4832},{"style":772},[4833],{"type":75,"value":4834},"new",{"type":69,"tag":205,"props":4836,"children":4837},{"style":901},[4838],{"type":75,"value":4839}," URL",{"type":69,"tag":205,"props":4841,"children":4842},{"style":920},[4843],{"type":75,"value":908},{"type":69,"tag":205,"props":4845,"children":4846},{"style":772},[4847],{"type":75,"value":1520},{"type":69,"tag":205,"props":4849,"children":4850},{"style":218},[4851],{"type":75,"value":4852},"\u002Flogin",{"type":69,"tag":205,"props":4854,"children":4855},{"style":772},[4856],{"type":75,"value":1520},{"type":69,"tag":205,"props":4858,"children":4859},{"style":772},[4860],{"type":75,"value":952},{"type":69,"tag":205,"props":4862,"children":4863},{"style":778},[4864],{"type":75,"value":4743},{"type":69,"tag":205,"props":4866,"children":4867},{"style":772},[4868],{"type":75,"value":2609},{"type":69,"tag":205,"props":4870,"children":4871},{"style":778},[4872],{"type":75,"value":46},{"type":69,"tag":205,"props":4874,"children":4875},{"style":920},[4876],{"type":75,"value":4877},"))\n",{"type":69,"tag":205,"props":4879,"children":4880},{"class":207,"line":878},[4881],{"type":69,"tag":205,"props":4882,"children":4883},{"style":772},[4884],{"type":75,"value":1221},{"type":69,"tag":205,"props":4886,"children":4887},{"class":207,"line":887},[4888,4892,4896,4901,4905,4909,4914,4918,4923,4927,4932,4936,4941],{"type":69,"tag":205,"props":4889,"children":4890},{"style":766},[4891],{"type":75,"value":893},{"type":69,"tag":205,"props":4893,"children":4894},{"style":1041},[4895],{"type":75,"value":1483},{"type":69,"tag":205,"props":4897,"children":4898},{"style":778},[4899],{"type":75,"value":4900}," config ",{"type":69,"tag":205,"props":4902,"children":4903},{"style":772},[4904],{"type":75,"value":1493},{"type":69,"tag":205,"props":4906,"children":4907},{"style":772},[4908],{"type":75,"value":775},{"type":69,"tag":205,"props":4910,"children":4911},{"style":920},[4912],{"type":75,"value":4913}," matcher",{"type":69,"tag":205,"props":4915,"children":4916},{"style":772},[4917],{"type":75,"value":928},{"type":69,"tag":205,"props":4919,"children":4920},{"style":778},[4921],{"type":75,"value":4922}," [",{"type":69,"tag":205,"props":4924,"children":4925},{"style":772},[4926],{"type":75,"value":1520},{"type":69,"tag":205,"props":4928,"children":4929},{"style":218},[4930],{"type":75,"value":4931},"\u002Fdashboard\u002F:path*",{"type":69,"tag":205,"props":4933,"children":4934},{"style":772},[4935],{"type":75,"value":1520},{"type":69,"tag":205,"props":4937,"children":4938},{"style":778},[4939],{"type":75,"value":4940},"] ",{"type":69,"tag":205,"props":4942,"children":4943},{"style":772},[4944],{"type":75,"value":1221},{"type":69,"tag":78,"props":4946,"children":4947},{},[4948],{"type":75,"value":1667},{"type":69,"tag":194,"props":4950,"children":4952},{"className":1230,"code":4951,"language":1232,"meta":199,"style":199},"\u002F\u002F src\u002Fstart.ts — must be manually created\nimport { createStart, createMiddleware } from '@tanstack\u002Freact-start'\nimport { redirect } from '@tanstack\u002Freact-router'\n\nconst authMiddleware = createMiddleware().server(async ({ next, request }) => {\n  const cookie = request.headers.get('cookie')\n  if (!cookie?.includes('session=')) {\n    throw redirect({ to: '\u002Flogin' })\n  }\n  return next()\n})\n\nexport const startInstance = createStart(() => ({\n  requestMiddleware: [authMiddleware],\n}))\n",[4953],{"type":69,"tag":99,"props":4954,"children":4955},{"__ignoreMap":199},[4956,4964,5009,5045,5052,5121,5179,5232,5281,5288,5303,5314,5321,5365,5386],{"type":69,"tag":205,"props":4957,"children":4958},{"class":207,"line":208},[4959],{"type":69,"tag":205,"props":4960,"children":4961},{"style":757},[4962],{"type":75,"value":4963},"\u002F\u002F src\u002Fstart.ts — must be manually created\n",{"type":69,"tag":205,"props":4965,"children":4966},{"class":207,"line":281},[4967,4971,4975,4980,4984,4989,4993,4997,5001,5005],{"type":69,"tag":205,"props":4968,"children":4969},{"style":766},[4970],{"type":75,"value":769},{"type":69,"tag":205,"props":4972,"children":4973},{"style":772},[4974],{"type":75,"value":775},{"type":69,"tag":205,"props":4976,"children":4977},{"style":778},[4978],{"type":75,"value":4979}," createStart",{"type":69,"tag":205,"props":4981,"children":4982},{"style":772},[4983],{"type":75,"value":952},{"type":69,"tag":205,"props":4985,"children":4986},{"style":778},[4987],{"type":75,"value":4988}," createMiddleware",{"type":69,"tag":205,"props":4990,"children":4991},{"style":772},[4992],{"type":75,"value":786},{"type":69,"tag":205,"props":4994,"children":4995},{"style":766},[4996],{"type":75,"value":791},{"type":69,"tag":205,"props":4998,"children":4999},{"style":772},[5000],{"type":75,"value":796},{"type":69,"tag":205,"props":5002,"children":5003},{"style":218},[5004],{"type":75,"value":2952},{"type":69,"tag":205,"props":5006,"children":5007},{"style":772},[5008],{"type":75,"value":806},{"type":69,"tag":205,"props":5010,"children":5011},{"class":207,"line":809},[5012,5016,5020,5025,5029,5033,5037,5041],{"type":69,"tag":205,"props":5013,"children":5014},{"style":766},[5015],{"type":75,"value":769},{"type":69,"tag":205,"props":5017,"children":5018},{"style":772},[5019],{"type":75,"value":775},{"type":69,"tag":205,"props":5021,"children":5022},{"style":778},[5023],{"type":75,"value":5024}," redirect",{"type":69,"tag":205,"props":5026,"children":5027},{"style":772},[5028],{"type":75,"value":786},{"type":69,"tag":205,"props":5030,"children":5031},{"style":766},[5032],{"type":75,"value":791},{"type":69,"tag":205,"props":5034,"children":5035},{"style":772},[5036],{"type":75,"value":796},{"type":69,"tag":205,"props":5038,"children":5039},{"style":218},[5040],{"type":75,"value":570},{"type":69,"tag":205,"props":5042,"children":5043},{"style":772},[5044],{"type":75,"value":806},{"type":69,"tag":205,"props":5046,"children":5047},{"class":207,"line":847},[5048],{"type":69,"tag":205,"props":5049,"children":5050},{"emptyLinePlaceholder":183},[5051],{"type":75,"value":884},{"type":69,"tag":205,"props":5053,"children":5054},{"class":207,"line":878},[5055,5059,5064,5068,5072,5076,5080,5085,5089,5093,5097,5101,5105,5109,5113,5117],{"type":69,"tag":205,"props":5056,"children":5057},{"style":1041},[5058],{"type":75,"value":3626},{"type":69,"tag":205,"props":5060,"children":5061},{"style":778},[5062],{"type":75,"value":5063}," authMiddleware ",{"type":69,"tag":205,"props":5065,"children":5066},{"style":772},[5067],{"type":75,"value":1493},{"type":69,"tag":205,"props":5069,"children":5070},{"style":901},[5071],{"type":75,"value":4988},{"type":69,"tag":205,"props":5073,"children":5074},{"style":778},[5075],{"type":75,"value":947},{"type":69,"tag":205,"props":5077,"children":5078},{"style":772},[5079],{"type":75,"value":2609},{"type":69,"tag":205,"props":5081,"children":5082},{"style":901},[5083],{"type":75,"value":5084},"server",{"type":69,"tag":205,"props":5086,"children":5087},{"style":778},[5088],{"type":75,"value":908},{"type":69,"tag":205,"props":5090,"children":5091},{"style":1041},[5092],{"type":75,"value":3252},{"type":69,"tag":205,"props":5094,"children":5095},{"style":772},[5096],{"type":75,"value":3257},{"type":69,"tag":205,"props":5098,"children":5099},{"style":1553},[5100],{"type":75,"value":346},{"type":69,"tag":205,"props":5102,"children":5103},{"style":772},[5104],{"type":75,"value":952},{"type":69,"tag":205,"props":5106,"children":5107},{"style":1553},[5108],{"type":75,"value":4743},{"type":69,"tag":205,"props":5110,"children":5111},{"style":772},[5112],{"type":75,"value":1561},{"type":69,"tag":205,"props":5114,"children":5115},{"style":1041},[5116],{"type":75,"value":1867},{"type":69,"tag":205,"props":5118,"children":5119},{"style":772},[5120],{"type":75,"value":1096},{"type":69,"tag":205,"props":5122,"children":5123},{"class":207,"line":887},[5124,5128,5133,5137,5141,5145,5150,5154,5158,5162,5166,5171,5175],{"type":69,"tag":205,"props":5125,"children":5126},{"style":1041},[5127],{"type":75,"value":1357},{"type":69,"tag":205,"props":5129,"children":5130},{"style":778},[5131],{"type":75,"value":5132}," cookie",{"type":69,"tag":205,"props":5134,"children":5135},{"style":772},[5136],{"type":75,"value":1367},{"type":69,"tag":205,"props":5138,"children":5139},{"style":778},[5140],{"type":75,"value":4743},{"type":69,"tag":205,"props":5142,"children":5143},{"style":772},[5144],{"type":75,"value":2609},{"type":69,"tag":205,"props":5146,"children":5147},{"style":778},[5148],{"type":75,"value":5149},"headers",{"type":69,"tag":205,"props":5151,"children":5152},{"style":772},[5153],{"type":75,"value":2609},{"type":69,"tag":205,"props":5155,"children":5156},{"style":901},[5157],{"type":75,"value":2809},{"type":69,"tag":205,"props":5159,"children":5160},{"style":920},[5161],{"type":75,"value":908},{"type":69,"tag":205,"props":5163,"children":5164},{"style":772},[5165],{"type":75,"value":1520},{"type":69,"tag":205,"props":5167,"children":5168},{"style":218},[5169],{"type":75,"value":5170},"cookie",{"type":69,"tag":205,"props":5172,"children":5173},{"style":772},[5174],{"type":75,"value":1520},{"type":69,"tag":205,"props":5176,"children":5177},{"style":920},[5178],{"type":75,"value":1002},{"type":69,"tag":205,"props":5180,"children":5181},{"class":207,"line":916},[5182,5186,5190,5194,5198,5202,5207,5211,5215,5220,5224,5228],{"type":69,"tag":205,"props":5183,"children":5184},{"style":766},[5185],{"type":75,"value":4789},{"type":69,"tag":205,"props":5187,"children":5188},{"style":920},[5189],{"type":75,"value":1872},{"type":69,"tag":205,"props":5191,"children":5192},{"style":772},[5193],{"type":75,"value":3080},{"type":69,"tag":205,"props":5195,"children":5196},{"style":778},[5197],{"type":75,"value":5170},{"type":69,"tag":205,"props":5199,"children":5200},{"style":772},[5201],{"type":75,"value":3196},{"type":69,"tag":205,"props":5203,"children":5204},{"style":901},[5205],{"type":75,"value":5206},"includes",{"type":69,"tag":205,"props":5208,"children":5209},{"style":920},[5210],{"type":75,"value":908},{"type":69,"tag":205,"props":5212,"children":5213},{"style":772},[5214],{"type":75,"value":1520},{"type":69,"tag":205,"props":5216,"children":5217},{"style":218},[5218],{"type":75,"value":5219},"session=",{"type":69,"tag":205,"props":5221,"children":5222},{"style":772},[5223],{"type":75,"value":1520},{"type":69,"tag":205,"props":5225,"children":5226},{"style":920},[5227],{"type":75,"value":3102},{"type":69,"tag":205,"props":5229,"children":5230},{"style":772},[5231],{"type":75,"value":913},{"type":69,"tag":205,"props":5233,"children":5234},{"class":207,"line":936},[5235,5240,5244,5248,5252,5257,5261,5265,5269,5273,5277],{"type":69,"tag":205,"props":5236,"children":5237},{"style":766},[5238],{"type":75,"value":5239},"    throw",{"type":69,"tag":205,"props":5241,"children":5242},{"style":901},[5243],{"type":75,"value":5024},{"type":69,"tag":205,"props":5245,"children":5246},{"style":920},[5247],{"type":75,"value":908},{"type":69,"tag":205,"props":5249,"children":5250},{"style":772},[5251],{"type":75,"value":2881},{"type":69,"tag":205,"props":5253,"children":5254},{"style":920},[5255],{"type":75,"value":5256}," to",{"type":69,"tag":205,"props":5258,"children":5259},{"style":772},[5260],{"type":75,"value":928},{"type":69,"tag":205,"props":5262,"children":5263},{"style":772},[5264],{"type":75,"value":796},{"type":69,"tag":205,"props":5266,"children":5267},{"style":218},[5268],{"type":75,"value":4852},{"type":69,"tag":205,"props":5270,"children":5271},{"style":772},[5272],{"type":75,"value":1520},{"type":69,"tag":205,"props":5274,"children":5275},{"style":772},[5276],{"type":75,"value":786},{"type":69,"tag":205,"props":5278,"children":5279},{"style":920},[5280],{"type":75,"value":1002},{"type":69,"tag":205,"props":5282,"children":5283},{"class":207,"line":960},[5284],{"type":69,"tag":205,"props":5285,"children":5286},{"style":772},[5287],{"type":75,"value":1213},{"type":69,"tag":205,"props":5289,"children":5290},{"class":207,"line":978},[5291,5295,5299],{"type":69,"tag":205,"props":5292,"children":5293},{"style":766},[5294],{"type":75,"value":1433},{"type":69,"tag":205,"props":5296,"children":5297},{"style":901},[5298],{"type":75,"value":346},{"type":69,"tag":205,"props":5300,"children":5301},{"style":920},[5302],{"type":75,"value":2619},{"type":69,"tag":205,"props":5304,"children":5305},{"class":207,"line":991},[5306,5310],{"type":69,"tag":205,"props":5307,"children":5308},{"style":772},[5309],{"type":75,"value":997},{"type":69,"tag":205,"props":5311,"children":5312},{"style":778},[5313],{"type":75,"value":1002},{"type":69,"tag":205,"props":5315,"children":5316},{"class":207,"line":1879},[5317],{"type":69,"tag":205,"props":5318,"children":5319},{"emptyLinePlaceholder":183},[5320],{"type":75,"value":884},{"type":69,"tag":205,"props":5322,"children":5323},{"class":207,"line":1896},[5324,5328,5332,5337,5341,5345,5349,5353,5357,5361],{"type":69,"tag":205,"props":5325,"children":5326},{"style":766},[5327],{"type":75,"value":893},{"type":69,"tag":205,"props":5329,"children":5330},{"style":1041},[5331],{"type":75,"value":1483},{"type":69,"tag":205,"props":5333,"children":5334},{"style":778},[5335],{"type":75,"value":5336}," startInstance ",{"type":69,"tag":205,"props":5338,"children":5339},{"style":772},[5340],{"type":75,"value":1493},{"type":69,"tag":205,"props":5342,"children":5343},{"style":901},[5344],{"type":75,"value":4979},{"type":69,"tag":205,"props":5346,"children":5347},{"style":778},[5348],{"type":75,"value":908},{"type":69,"tag":205,"props":5350,"children":5351},{"style":772},[5352],{"type":75,"value":947},{"type":69,"tag":205,"props":5354,"children":5355},{"style":1041},[5356],{"type":75,"value":1867},{"type":69,"tag":205,"props":5358,"children":5359},{"style":778},[5360],{"type":75,"value":1872},{"type":69,"tag":205,"props":5362,"children":5363},{"style":772},[5364],{"type":75,"value":913},{"type":69,"tag":205,"props":5366,"children":5367},{"class":207,"line":1932},[5368,5373,5377,5382],{"type":69,"tag":205,"props":5369,"children":5370},{"style":920},[5371],{"type":75,"value":5372},"  requestMiddleware",{"type":69,"tag":205,"props":5374,"children":5375},{"style":772},[5376],{"type":75,"value":928},{"type":69,"tag":205,"props":5378,"children":5379},{"style":778},[5380],{"type":75,"value":5381}," [authMiddleware]",{"type":69,"tag":205,"props":5383,"children":5384},{"style":772},[5385],{"type":75,"value":975},{"type":69,"tag":205,"props":5387,"children":5388},{"class":207,"line":1992},[5389,5393],{"type":69,"tag":205,"props":5390,"children":5391},{"style":772},[5392],{"type":75,"value":997},{"type":69,"tag":205,"props":5394,"children":5395},{"style":778},[5396],{"type":75,"value":4877},{"type":69,"tag":162,"props":5398,"children":5400},{"id":5399},"step-10-convert-metadataseo",[5401],{"type":75,"value":5402},"Step 10: Convert Metadata\u002FSEO",{"type":69,"tag":78,"props":5404,"children":5405},{},[5406],{"type":75,"value":1456},{"type":69,"tag":194,"props":5408,"children":5410},{"className":1230,"code":5409,"language":1232,"meta":199,"style":199},"export const metadata = {\n  title: 'Post Title',\n  description: 'Post description',\n}\n",[5411],{"type":69,"tag":99,"props":5412,"children":5413},{"__ignoreMap":199},[5414,5437,5466,5495],{"type":69,"tag":205,"props":5415,"children":5416},{"class":207,"line":208},[5417,5421,5425,5429,5433],{"type":69,"tag":205,"props":5418,"children":5419},{"style":766},[5420],{"type":75,"value":893},{"type":69,"tag":205,"props":5422,"children":5423},{"style":1041},[5424],{"type":75,"value":1483},{"type":69,"tag":205,"props":5426,"children":5427},{"style":778},[5428],{"type":75,"value":1488},{"type":69,"tag":205,"props":5430,"children":5431},{"style":772},[5432],{"type":75,"value":1493},{"type":69,"tag":205,"props":5434,"children":5435},{"style":772},[5436],{"type":75,"value":1096},{"type":69,"tag":205,"props":5438,"children":5439},{"class":207,"line":281},[5440,5445,5449,5453,5458,5462],{"type":69,"tag":205,"props":5441,"children":5442},{"style":920},[5443],{"type":75,"value":5444},"  title",{"type":69,"tag":205,"props":5446,"children":5447},{"style":772},[5448],{"type":75,"value":928},{"type":69,"tag":205,"props":5450,"children":5451},{"style":772},[5452],{"type":75,"value":796},{"type":69,"tag":205,"props":5454,"children":5455},{"style":218},[5456],{"type":75,"value":5457},"Post Title",{"type":69,"tag":205,"props":5459,"children":5460},{"style":772},[5461],{"type":75,"value":1520},{"type":69,"tag":205,"props":5463,"children":5464},{"style":772},[5465],{"type":75,"value":975},{"type":69,"tag":205,"props":5467,"children":5468},{"class":207,"line":809},[5469,5474,5478,5482,5487,5491],{"type":69,"tag":205,"props":5470,"children":5471},{"style":920},[5472],{"type":75,"value":5473},"  description",{"type":69,"tag":205,"props":5475,"children":5476},{"style":772},[5477],{"type":75,"value":928},{"type":69,"tag":205,"props":5479,"children":5480},{"style":772},[5481],{"type":75,"value":796},{"type":69,"tag":205,"props":5483,"children":5484},{"style":218},[5485],{"type":75,"value":5486},"Post description",{"type":69,"tag":205,"props":5488,"children":5489},{"style":772},[5490],{"type":75,"value":1520},{"type":69,"tag":205,"props":5492,"children":5493},{"style":772},[5494],{"type":75,"value":975},{"type":69,"tag":205,"props":5496,"children":5497},{"class":207,"line":847},[5498],{"type":69,"tag":205,"props":5499,"children":5500},{"style":772},[5501],{"type":75,"value":1221},{"type":69,"tag":78,"props":5503,"children":5504},{},[5505],{"type":75,"value":1667},{"type":69,"tag":194,"props":5507,"children":5509},{"className":1230,"code":5508,"language":1232,"meta":199,"style":199},"export const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: async ({ params }) => fetchPost(params.postId),\n  head: ({ loaderData }) => ({\n    meta: [\n      { title: loaderData.title },\n      { name: 'description', content: loaderData.excerpt },\n      { property: 'og:title', content: loaderData.title },\n    ],\n  }),\n})\n",[5510],{"type":69,"tag":99,"props":5511,"children":5512},{"__ignoreMap":199},[5513,5560,5614,5650,5665,5698,5755,5812,5823,5838],{"type":69,"tag":205,"props":5514,"children":5515},{"class":207,"line":208},[5516,5520,5524,5528,5532,5536,5540,5544,5548,5552,5556],{"type":69,"tag":205,"props":5517,"children":5518},{"style":766},[5519],{"type":75,"value":893},{"type":69,"tag":205,"props":5521,"children":5522},{"style":1041},[5523],{"type":75,"value":1483},{"type":69,"tag":205,"props":5525,"children":5526},{"style":778},[5527],{"type":75,"value":1828},{"type":69,"tag":205,"props":5529,"children":5530},{"style":772},[5531],{"type":75,"value":1493},{"type":69,"tag":205,"props":5533,"children":5534},{"style":901},[5535],{"type":75,"value":2443},{"type":69,"tag":205,"props":5537,"children":5538},{"style":778},[5539],{"type":75,"value":908},{"type":69,"tag":205,"props":5541,"children":5542},{"style":772},[5543],{"type":75,"value":1520},{"type":69,"tag":205,"props":5545,"children":5546},{"style":218},[5547],{"type":75,"value":2506},{"type":69,"tag":205,"props":5549,"children":5550},{"style":772},[5551],{"type":75,"value":1520},{"type":69,"tag":205,"props":5553,"children":5554},{"style":778},[5555],{"type":75,"value":2515},{"type":69,"tag":205,"props":5557,"children":5558},{"style":772},[5559],{"type":75,"value":913},{"type":69,"tag":205,"props":5561,"children":5562},{"class":207,"line":281},[5563,5567,5571,5575,5579,5583,5587,5591,5596,5601,5605,5610],{"type":69,"tag":205,"props":5564,"children":5565},{"style":901},[5566],{"type":75,"value":3809},{"type":69,"tag":205,"props":5568,"children":5569},{"style":772},[5570],{"type":75,"value":928},{"type":69,"tag":205,"props":5572,"children":5573},{"style":1041},[5574],{"type":75,"value":2745},{"type":69,"tag":205,"props":5576,"children":5577},{"style":772},[5578],{"type":75,"value":3257},{"type":69,"tag":205,"props":5580,"children":5581},{"style":1553},[5582],{"type":75,"value":2346},{"type":69,"tag":205,"props":5584,"children":5585},{"style":772},[5586],{"type":75,"value":1561},{"type":69,"tag":205,"props":5588,"children":5589},{"style":1041},[5590],{"type":75,"value":1867},{"type":69,"tag":205,"props":5592,"children":5593},{"style":901},[5594],{"type":75,"value":5595}," fetchPost",{"type":69,"tag":205,"props":5597,"children":5598},{"style":778},[5599],{"type":75,"value":5600},"(params",{"type":69,"tag":205,"props":5602,"children":5603},{"style":772},[5604],{"type":75,"value":2609},{"type":69,"tag":205,"props":5606,"children":5607},{"style":778},[5608],{"type":75,"value":5609},"postId)",{"type":69,"tag":205,"props":5611,"children":5612},{"style":772},[5613],{"type":75,"value":975},{"type":69,"tag":205,"props":5615,"children":5616},{"class":207,"line":809},[5617,5621,5625,5629,5634,5638,5642,5646],{"type":69,"tag":205,"props":5618,"children":5619},{"style":901},[5620],{"type":75,"value":1853},{"type":69,"tag":205,"props":5622,"children":5623},{"style":772},[5624],{"type":75,"value":928},{"type":69,"tag":205,"props":5626,"children":5627},{"style":772},[5628],{"type":75,"value":3257},{"type":69,"tag":205,"props":5630,"children":5631},{"style":1553},[5632],{"type":75,"value":5633}," loaderData",{"type":69,"tag":205,"props":5635,"children":5636},{"style":772},[5637],{"type":75,"value":1561},{"type":69,"tag":205,"props":5639,"children":5640},{"style":1041},[5641],{"type":75,"value":1867},{"type":69,"tag":205,"props":5643,"children":5644},{"style":778},[5645],{"type":75,"value":1872},{"type":69,"tag":205,"props":5647,"children":5648},{"style":772},[5649],{"type":75,"value":913},{"type":69,"tag":205,"props":5651,"children":5652},{"class":207,"line":847},[5653,5657,5661],{"type":69,"tag":205,"props":5654,"children":5655},{"style":920},[5656],{"type":75,"value":1885},{"type":69,"tag":205,"props":5658,"children":5659},{"style":772},[5660],{"type":75,"value":928},{"type":69,"tag":205,"props":5662,"children":5663},{"style":778},[5664],{"type":75,"value":933},{"type":69,"tag":205,"props":5666,"children":5667},{"class":207,"line":878},[5668,5672,5676,5680,5684,5688,5693],{"type":69,"tag":205,"props":5669,"children":5670},{"style":772},[5671],{"type":75,"value":1902},{"type":69,"tag":205,"props":5673,"children":5674},{"style":920},[5675],{"type":75,"value":1502},{"type":69,"tag":205,"props":5677,"children":5678},{"style":772},[5679],{"type":75,"value":928},{"type":69,"tag":205,"props":5681,"children":5682},{"style":778},[5683],{"type":75,"value":5633},{"type":69,"tag":205,"props":5685,"children":5686},{"style":772},[5687],{"type":75,"value":2609},{"type":69,"tag":205,"props":5689,"children":5690},{"style":778},[5691],{"type":75,"value":5692},"title ",{"type":69,"tag":205,"props":5694,"children":5695},{"style":772},[5696],{"type":75,"value":5697},"},\n",{"type":69,"tag":205,"props":5699,"children":5700},{"class":207,"line":887},[5701,5705,5709,5713,5717,5722,5726,5730,5734,5738,5742,5746,5751],{"type":69,"tag":205,"props":5702,"children":5703},{"style":772},[5704],{"type":75,"value":1902},{"type":69,"tag":205,"props":5706,"children":5707},{"style":920},[5708],{"type":75,"value":1942},{"type":69,"tag":205,"props":5710,"children":5711},{"style":772},[5712],{"type":75,"value":928},{"type":69,"tag":205,"props":5714,"children":5715},{"style":772},[5716],{"type":75,"value":796},{"type":69,"tag":205,"props":5718,"children":5719},{"style":218},[5720],{"type":75,"value":5721},"description",{"type":69,"tag":205,"props":5723,"children":5724},{"style":772},[5725],{"type":75,"value":1520},{"type":69,"tag":205,"props":5727,"children":5728},{"style":772},[5729],{"type":75,"value":952},{"type":69,"tag":205,"props":5731,"children":5732},{"style":920},[5733],{"type":75,"value":1968},{"type":69,"tag":205,"props":5735,"children":5736},{"style":772},[5737],{"type":75,"value":928},{"type":69,"tag":205,"props":5739,"children":5740},{"style":778},[5741],{"type":75,"value":5633},{"type":69,"tag":205,"props":5743,"children":5744},{"style":772},[5745],{"type":75,"value":2609},{"type":69,"tag":205,"props":5747,"children":5748},{"style":778},[5749],{"type":75,"value":5750},"excerpt ",{"type":69,"tag":205,"props":5752,"children":5753},{"style":772},[5754],{"type":75,"value":5697},{"type":69,"tag":205,"props":5756,"children":5757},{"class":207,"line":916},[5758,5762,5767,5771,5775,5780,5784,5788,5792,5796,5800,5804,5808],{"type":69,"tag":205,"props":5759,"children":5760},{"style":772},[5761],{"type":75,"value":1902},{"type":69,"tag":205,"props":5763,"children":5764},{"style":920},[5765],{"type":75,"value":5766}," property",{"type":69,"tag":205,"props":5768,"children":5769},{"style":772},[5770],{"type":75,"value":928},{"type":69,"tag":205,"props":5772,"children":5773},{"style":772},[5774],{"type":75,"value":796},{"type":69,"tag":205,"props":5776,"children":5777},{"style":218},[5778],{"type":75,"value":5779},"og:title",{"type":69,"tag":205,"props":5781,"children":5782},{"style":772},[5783],{"type":75,"value":1520},{"type":69,"tag":205,"props":5785,"children":5786},{"style":772},[5787],{"type":75,"value":952},{"type":69,"tag":205,"props":5789,"children":5790},{"style":920},[5791],{"type":75,"value":1968},{"type":69,"tag":205,"props":5793,"children":5794},{"style":772},[5795],{"type":75,"value":928},{"type":69,"tag":205,"props":5797,"children":5798},{"style":778},[5799],{"type":75,"value":5633},{"type":69,"tag":205,"props":5801,"children":5802},{"style":772},[5803],{"type":75,"value":2609},{"type":69,"tag":205,"props":5805,"children":5806},{"style":778},[5807],{"type":75,"value":5692},{"type":69,"tag":205,"props":5809,"children":5810},{"style":772},[5811],{"type":75,"value":5697},{"type":69,"tag":205,"props":5813,"children":5814},{"class":207,"line":936},[5815,5819],{"type":69,"tag":205,"props":5816,"children":5817},{"style":778},[5818],{"type":75,"value":2030},{"type":69,"tag":205,"props":5820,"children":5821},{"style":772},[5822],{"type":75,"value":975},{"type":69,"tag":205,"props":5824,"children":5825},{"class":207,"line":960},[5826,5830,5834],{"type":69,"tag":205,"props":5827,"children":5828},{"style":772},[5829],{"type":75,"value":1421},{"type":69,"tag":205,"props":5831,"children":5832},{"style":778},[5833],{"type":75,"value":2047},{"type":69,"tag":205,"props":5835,"children":5836},{"style":772},[5837],{"type":75,"value":975},{"type":69,"tag":205,"props":5839,"children":5840},{"class":207,"line":978},[5841,5845],{"type":69,"tag":205,"props":5842,"children":5843},{"style":772},[5844],{"type":75,"value":997},{"type":69,"tag":205,"props":5846,"children":5847},{"style":778},[5848],{"type":75,"value":1002},{"type":69,"tag":162,"props":5850,"children":5852},{"id":5851},"post-migration-checklist",[5853],{"type":75,"value":5854},"Post-Migration Checklist",{"type":69,"tag":169,"props":5856,"children":5858},{"className":5857},[172],[5859,5882,5904,5927,5948,5965,5982,5998],{"type":69,"tag":175,"props":5860,"children":5862},{"className":5861},[178],[5863,5866,5868,5873,5875,5880],{"type":69,"tag":181,"props":5864,"children":5865},{"disabled":183,"type":184},[],{"type":75,"value":5867}," Remove all ",{"type":69,"tag":99,"props":5869,"children":5871},{"className":5870},[],[5872],{"type":75,"value":131},{"type":75,"value":5874}," and ",{"type":69,"tag":99,"props":5876,"children":5878},{"className":5877},[],[5879],{"type":75,"value":146},{"type":75,"value":5881}," directives",{"type":69,"tag":175,"props":5883,"children":5885},{"className":5884},[178],[5886,5889,5891,5896,5898],{"type":69,"tag":181,"props":5887,"children":5888},{"disabled":183,"type":184},[],{"type":75,"value":5890}," Remove ",{"type":69,"tag":99,"props":5892,"children":5894},{"className":5893},[],[5895],{"type":75,"value":679},{"type":75,"value":5897}," \u002F ",{"type":69,"tag":99,"props":5899,"children":5901},{"className":5900},[],[5902],{"type":75,"value":5903},"next.config.ts",{"type":69,"tag":175,"props":5905,"children":5907},{"className":5906},[178],[5908,5911,5912,5918,5920,5926],{"type":69,"tag":181,"props":5909,"children":5910},{"disabled":183,"type":184},[],{"type":75,"value":5890},{"type":69,"tag":99,"props":5913,"children":5915},{"className":5914},[],[5916],{"type":75,"value":5917},"app\u002F",{"type":75,"value":5919}," directory (replaced by ",{"type":69,"tag":99,"props":5921,"children":5923},{"className":5922},[],[5924],{"type":75,"value":5925},"src\u002Froutes\u002F",{"type":75,"value":2047},{"type":69,"tag":175,"props":5928,"children":5930},{"className":5929},[178],[5931,5934,5935,5940,5942,5947],{"type":69,"tag":181,"props":5932,"children":5933},{"disabled":183,"type":184},[],{"type":75,"value":5890},{"type":69,"tag":99,"props":5936,"children":5938},{"className":5937},[],[5939],{"type":75,"value":648},{"type":75,"value":5941}," (replaced by ",{"type":69,"tag":99,"props":5943,"children":5945},{"className":5944},[],[5946],{"type":75,"value":667},{"type":75,"value":2047},{"type":69,"tag":175,"props":5949,"children":5951},{"className":5950},[178],[5952,5955,5957,5963],{"type":69,"tag":181,"props":5953,"children":5954},{"disabled":183,"type":184},[],{"type":75,"value":5956}," Verify no ",{"type":69,"tag":99,"props":5958,"children":5960},{"className":5959},[],[5961],{"type":75,"value":5962},"next\u002F*",{"type":75,"value":5964}," imports remain",{"type":69,"tag":175,"props":5966,"children":5968},{"className":5967},[178],[5969,5972,5974,5980],{"type":69,"tag":181,"props":5970,"children":5971},{"disabled":183,"type":184},[],{"type":75,"value":5973}," Run ",{"type":69,"tag":99,"props":5975,"children":5977},{"className":5976},[],[5978],{"type":75,"value":5979},"npm run dev",{"type":75,"value":5981}," and check all routes",{"type":69,"tag":175,"props":5983,"children":5985},{"className":5984},[178],[5986,5989,5991,5996],{"type":69,"tag":181,"props":5987,"children":5988},{"disabled":183,"type":184},[],{"type":75,"value":5990}," Verify server-only code is inside ",{"type":69,"tag":99,"props":5992,"children":5994},{"className":5993},[],[5995],{"type":75,"value":104},{"type":75,"value":5997}," (not bare in components\u002Floaders)",{"type":69,"tag":175,"props":5999,"children":6001},{"className":6000},[178],[6002,6005,6007,6013,6015],{"type":69,"tag":181,"props":6003,"children":6004},{"disabled":183,"type":184},[],{"type":75,"value":6006}," Check that ",{"type":69,"tag":99,"props":6008,"children":6010},{"className":6009},[],[6011],{"type":75,"value":6012},"\u003CScripts \u002F>",{"type":75,"value":6014}," is in the root route ",{"type":69,"tag":99,"props":6016,"children":6018},{"className":6017},[],[6019],{"type":75,"value":6020},"\u003Cbody>",{"type":69,"tag":162,"props":6022,"children":6024},{"id":6023},"common-mistakes",[6025],{"type":75,"value":6026},"Common Mistakes",{"type":69,"tag":6028,"props":6029,"children":6031},"h3",{"id":6030},"_1-critical-keeping-server-component-mental-model",[6032],{"type":75,"value":6033},"1. CRITICAL: Keeping Server Component mental model",{"type":69,"tag":194,"props":6035,"children":6037},{"className":1230,"code":6036,"language":1232,"meta":199,"style":199},"\u002F\u002F WRONG — treating component as server-only (Next.js habit)\nfunction PostsPage() {\n  const posts = await db.posts.findMany() \u002F\u002F fails on client\n  return \u003Cdiv>{posts.map(...)}\u003C\u002Fdiv>\n}\n\n\u002F\u002F CORRECT — use server function + loader\nconst getPosts = createServerFn({ method: 'GET' }).handler(async () => {\n  return db.posts.findMany()\n})\n\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: () => getPosts(),\n  component: PostsPage,\n})\n",[6038],{"type":69,"tag":99,"props":6039,"children":6040},{"__ignoreMap":199},[6041,6049,6068,6116,6174,6181,6188,6196,6279,6310,6321,6328,6375,6406,6425],{"type":69,"tag":205,"props":6042,"children":6043},{"class":207,"line":208},[6044],{"type":69,"tag":205,"props":6045,"children":6046},{"style":757},[6047],{"type":75,"value":6048},"\u002F\u002F WRONG — treating component as server-only (Next.js habit)\n",{"type":69,"tag":205,"props":6050,"children":6051},{"class":207,"line":281},[6052,6056,6060,6064],{"type":69,"tag":205,"props":6053,"children":6054},{"style":1041},[6055],{"type":75,"value":2102},{"type":69,"tag":205,"props":6057,"children":6058},{"style":901},[6059],{"type":75,"value":3426},{"type":69,"tag":205,"props":6061,"children":6062},{"style":772},[6063],{"type":75,"value":947},{"type":69,"tag":205,"props":6065,"children":6066},{"style":772},[6067],{"type":75,"value":1096},{"type":69,"tag":205,"props":6069,"children":6070},{"class":207,"line":809},[6071,6075,6079,6083,6087,6091,6095,6099,6103,6107,6111],{"type":69,"tag":205,"props":6072,"children":6073},{"style":1041},[6074],{"type":75,"value":1357},{"type":69,"tag":205,"props":6076,"children":6077},{"style":778},[6078],{"type":75,"value":3446},{"type":69,"tag":205,"props":6080,"children":6081},{"style":772},[6082],{"type":75,"value":1367},{"type":69,"tag":205,"props":6084,"children":6085},{"style":766},[6086],{"type":75,"value":3455},{"type":69,"tag":205,"props":6088,"children":6089},{"style":778},[6090],{"type":75,"value":2854},{"type":69,"tag":205,"props":6092,"children":6093},{"style":772},[6094],{"type":75,"value":2609},{"type":69,"tag":205,"props":6096,"children":6097},{"style":778},[6098],{"type":75,"value":2863},{"type":69,"tag":205,"props":6100,"children":6101},{"style":772},[6102],{"type":75,"value":2609},{"type":69,"tag":205,"props":6104,"children":6105},{"style":901},[6106],{"type":75,"value":3476},{"type":69,"tag":205,"props":6108,"children":6109},{"style":920},[6110],{"type":75,"value":3206},{"type":69,"tag":205,"props":6112,"children":6113},{"style":757},[6114],{"type":75,"value":6115},"\u002F\u002F fails on client\n",{"type":69,"tag":205,"props":6117,"children":6118},{"class":207,"line":847},[6119,6123,6127,6132,6136,6140,6144,6149,6153,6158,6162,6166,6170],{"type":69,"tag":205,"props":6120,"children":6121},{"style":766},[6122],{"type":75,"value":1433},{"type":69,"tag":205,"props":6124,"children":6125},{"style":772},[6126],{"type":75,"value":3492},{"type":69,"tag":205,"props":6128,"children":6129},{"style":920},[6130],{"type":75,"value":6131},"div",{"type":69,"tag":205,"props":6133,"children":6134},{"style":772},[6135],{"type":75,"value":1613},{"type":69,"tag":205,"props":6137,"children":6138},{"style":778},[6139],{"type":75,"value":2863},{"type":69,"tag":205,"props":6141,"children":6142},{"style":772},[6143],{"type":75,"value":2609},{"type":69,"tag":205,"props":6145,"children":6146},{"style":901},[6147],{"type":75,"value":6148},"map",{"type":69,"tag":205,"props":6150,"children":6151},{"style":778},[6152],{"type":75,"value":908},{"type":69,"tag":205,"props":6154,"children":6155},{"style":772},[6156],{"type":75,"value":6157},"...",{"type":69,"tag":205,"props":6159,"children":6160},{"style":778},[6161],{"type":75,"value":2047},{"type":69,"tag":205,"props":6163,"children":6164},{"style":772},[6165],{"type":75,"value":1623},{"type":69,"tag":205,"props":6167,"children":6168},{"style":920},[6169],{"type":75,"value":6131},{"type":69,"tag":205,"props":6171,"children":6172},{"style":772},[6173],{"type":75,"value":1595},{"type":69,"tag":205,"props":6175,"children":6176},{"class":207,"line":878},[6177],{"type":69,"tag":205,"props":6178,"children":6179},{"style":772},[6180],{"type":75,"value":1221},{"type":69,"tag":205,"props":6182,"children":6183},{"class":207,"line":887},[6184],{"type":69,"tag":205,"props":6185,"children":6186},{"emptyLinePlaceholder":183},[6187],{"type":75,"value":884},{"type":69,"tag":205,"props":6189,"children":6190},{"class":207,"line":916},[6191],{"type":69,"tag":205,"props":6192,"children":6193},{"style":757},[6194],{"type":75,"value":6195},"\u002F\u002F CORRECT — use server function + loader\n",{"type":69,"tag":205,"props":6197,"children":6198},{"class":207,"line":936},[6199,6203,6207,6211,6215,6219,6223,6227,6231,6235,6239,6243,6247,6251,6255,6259,6263,6267,6271,6275],{"type":69,"tag":205,"props":6200,"children":6201},{"style":1041},[6202],{"type":75,"value":3626},{"type":69,"tag":205,"props":6204,"children":6205},{"style":778},[6206],{"type":75,"value":3631},{"type":69,"tag":205,"props":6208,"children":6209},{"style":772},[6210],{"type":75,"value":1493},{"type":69,"tag":205,"props":6212,"children":6213},{"style":901},[6214],{"type":75,"value":2935},{"type":69,"tag":205,"props":6216,"children":6217},{"style":778},[6218],{"type":75,"value":908},{"type":69,"tag":205,"props":6220,"children":6221},{"style":772},[6222],{"type":75,"value":2881},{"type":69,"tag":205,"props":6224,"children":6225},{"style":920},[6226],{"type":75,"value":3000},{"type":69,"tag":205,"props":6228,"children":6229},{"style":772},[6230],{"type":75,"value":928},{"type":69,"tag":205,"props":6232,"children":6233},{"style":772},[6234],{"type":75,"value":796},{"type":69,"tag":205,"props":6236,"children":6237},{"style":218},[6238],{"type":75,"value":3664},{"type":69,"tag":205,"props":6240,"children":6241},{"style":772},[6242],{"type":75,"value":1520},{"type":69,"tag":205,"props":6244,"children":6245},{"style":772},[6246],{"type":75,"value":786},{"type":69,"tag":205,"props":6248,"children":6249},{"style":778},[6250],{"type":75,"value":2047},{"type":69,"tag":205,"props":6252,"children":6253},{"style":772},[6254],{"type":75,"value":2609},{"type":69,"tag":205,"props":6256,"children":6257},{"style":901},[6258],{"type":75,"value":3243},{"type":69,"tag":205,"props":6260,"children":6261},{"style":778},[6262],{"type":75,"value":908},{"type":69,"tag":205,"props":6264,"children":6265},{"style":1041},[6266],{"type":75,"value":3252},{"type":69,"tag":205,"props":6268,"children":6269},{"style":772},[6270],{"type":75,"value":1862},{"type":69,"tag":205,"props":6272,"children":6273},{"style":1041},[6274],{"type":75,"value":1867},{"type":69,"tag":205,"props":6276,"children":6277},{"style":772},[6278],{"type":75,"value":1096},{"type":69,"tag":205,"props":6280,"children":6281},{"class":207,"line":960},[6282,6286,6290,6294,6298,6302,6306],{"type":69,"tag":205,"props":6283,"children":6284},{"style":766},[6285],{"type":75,"value":1433},{"type":69,"tag":205,"props":6287,"children":6288},{"style":778},[6289],{"type":75,"value":2854},{"type":69,"tag":205,"props":6291,"children":6292},{"style":772},[6293],{"type":75,"value":2609},{"type":69,"tag":205,"props":6295,"children":6296},{"style":778},[6297],{"type":75,"value":2863},{"type":69,"tag":205,"props":6299,"children":6300},{"style":772},[6301],{"type":75,"value":2609},{"type":69,"tag":205,"props":6303,"children":6304},{"style":901},[6305],{"type":75,"value":3476},{"type":69,"tag":205,"props":6307,"children":6308},{"style":920},[6309],{"type":75,"value":2619},{"type":69,"tag":205,"props":6311,"children":6312},{"class":207,"line":978},[6313,6317],{"type":69,"tag":205,"props":6314,"children":6315},{"style":772},[6316],{"type":75,"value":997},{"type":69,"tag":205,"props":6318,"children":6319},{"style":778},[6320],{"type":75,"value":1002},{"type":69,"tag":205,"props":6322,"children":6323},{"class":207,"line":991},[6324],{"type":69,"tag":205,"props":6325,"children":6326},{"emptyLinePlaceholder":183},[6327],{"type":75,"value":884},{"type":69,"tag":205,"props":6329,"children":6330},{"class":207,"line":1879},[6331,6335,6339,6343,6347,6351,6355,6359,6363,6367,6371],{"type":69,"tag":205,"props":6332,"children":6333},{"style":766},[6334],{"type":75,"value":893},{"type":69,"tag":205,"props":6336,"children":6337},{"style":1041},[6338],{"type":75,"value":1483},{"type":69,"tag":205,"props":6340,"children":6341},{"style":778},[6342],{"type":75,"value":1828},{"type":69,"tag":205,"props":6344,"children":6345},{"style":772},[6346],{"type":75,"value":1493},{"type":69,"tag":205,"props":6348,"children":6349},{"style":901},[6350],{"type":75,"value":2443},{"type":69,"tag":205,"props":6352,"children":6353},{"style":778},[6354],{"type":75,"value":908},{"type":69,"tag":205,"props":6356,"children":6357},{"style":772},[6358],{"type":75,"value":1520},{"type":69,"tag":205,"props":6360,"children":6361},{"style":218},[6362],{"type":75,"value":3789},{"type":69,"tag":205,"props":6364,"children":6365},{"style":772},[6366],{"type":75,"value":1520},{"type":69,"tag":205,"props":6368,"children":6369},{"style":778},[6370],{"type":75,"value":2515},{"type":69,"tag":205,"props":6372,"children":6373},{"style":772},[6374],{"type":75,"value":913},{"type":69,"tag":205,"props":6376,"children":6377},{"class":207,"line":1896},[6378,6382,6386,6390,6394,6398,6402],{"type":69,"tag":205,"props":6379,"children":6380},{"style":901},[6381],{"type":75,"value":3809},{"type":69,"tag":205,"props":6383,"children":6384},{"style":772},[6385],{"type":75,"value":928},{"type":69,"tag":205,"props":6387,"children":6388},{"style":772},[6389],{"type":75,"value":1862},{"type":69,"tag":205,"props":6391,"children":6392},{"style":1041},[6393],{"type":75,"value":1867},{"type":69,"tag":205,"props":6395,"children":6396},{"style":901},[6397],{"type":75,"value":3826},{"type":69,"tag":205,"props":6399,"children":6400},{"style":778},[6401],{"type":75,"value":947},{"type":69,"tag":205,"props":6403,"children":6404},{"style":772},[6405],{"type":75,"value":975},{"type":69,"tag":205,"props":6407,"children":6408},{"class":207,"line":1932},[6409,6413,6417,6421],{"type":69,"tag":205,"props":6410,"children":6411},{"style":920},[6412],{"type":75,"value":2060},{"type":69,"tag":205,"props":6414,"children":6415},{"style":772},[6416],{"type":75,"value":928},{"type":69,"tag":205,"props":6418,"children":6419},{"style":778},[6420],{"type":75,"value":3426},{"type":69,"tag":205,"props":6422,"children":6423},{"style":772},[6424],{"type":75,"value":975},{"type":69,"tag":205,"props":6426,"children":6427},{"class":207,"line":1992},[6428,6432],{"type":69,"tag":205,"props":6429,"children":6430},{"style":772},[6431],{"type":75,"value":997},{"type":69,"tag":205,"props":6433,"children":6434},{"style":778},[6435],{"type":75,"value":1002},{"type":69,"tag":6028,"props":6437,"children":6439},{"id":6438},"_2-critical-using-use-server-directive",[6440],{"type":75,"value":6441},"2. CRITICAL: Using \"use server\" directive",{"type":69,"tag":194,"props":6443,"children":6445},{"className":1230,"code":6444,"language":1232,"meta":199,"style":199},"\u002F\u002F WRONG — \"use server\" is Next.js\u002FReact pattern\n'use server'\nexport async function myAction() { ... }\n\n\u002F\u002F CORRECT — use createServerFn\nexport const myAction = createServerFn({ method: 'POST' })\n  .handler(async () => { ... })\n",[6446],{"type":69,"tag":99,"props":6447,"children":6448},{"__ignoreMap":199},[6449,6457,6472,6509,6516,6524,6584],{"type":69,"tag":205,"props":6450,"children":6451},{"class":207,"line":208},[6452],{"type":69,"tag":205,"props":6453,"children":6454},{"style":757},[6455],{"type":75,"value":6456},"\u002F\u002F WRONG — \"use server\" is Next.js\u002FReact pattern\n",{"type":69,"tag":205,"props":6458,"children":6459},{"class":207,"line":281},[6460,6464,6468],{"type":69,"tag":205,"props":6461,"children":6462},{"style":772},[6463],{"type":75,"value":1520},{"type":69,"tag":205,"props":6465,"children":6466},{"style":218},[6467],{"type":75,"value":2729},{"type":69,"tag":205,"props":6469,"children":6470},{"style":772},[6471],{"type":75,"value":806},{"type":69,"tag":205,"props":6473,"children":6474},{"class":207,"line":809},[6475,6479,6483,6487,6492,6496,6500,6505],{"type":69,"tag":205,"props":6476,"children":6477},{"style":766},[6478],{"type":75,"value":893},{"type":69,"tag":205,"props":6480,"children":6481},{"style":1041},[6482],{"type":75,"value":2745},{"type":69,"tag":205,"props":6484,"children":6485},{"style":1041},[6486],{"type":75,"value":1336},{"type":69,"tag":205,"props":6488,"children":6489},{"style":901},[6490],{"type":75,"value":6491}," myAction",{"type":69,"tag":205,"props":6493,"children":6494},{"style":772},[6495],{"type":75,"value":947},{"type":69,"tag":205,"props":6497,"children":6498},{"style":772},[6499],{"type":75,"value":775},{"type":69,"tag":205,"props":6501,"children":6502},{"style":772},[6503],{"type":75,"value":6504}," ...",{"type":69,"tag":205,"props":6506,"children":6507},{"style":772},[6508],{"type":75,"value":1525},{"type":69,"tag":205,"props":6510,"children":6511},{"class":207,"line":847},[6512],{"type":69,"tag":205,"props":6513,"children":6514},{"emptyLinePlaceholder":183},[6515],{"type":75,"value":884},{"type":69,"tag":205,"props":6517,"children":6518},{"class":207,"line":878},[6519],{"type":69,"tag":205,"props":6520,"children":6521},{"style":757},[6522],{"type":75,"value":6523},"\u002F\u002F CORRECT — use createServerFn\n",{"type":69,"tag":205,"props":6525,"children":6526},{"class":207,"line":887},[6527,6531,6535,6540,6544,6548,6552,6556,6560,6564,6568,6572,6576,6580],{"type":69,"tag":205,"props":6528,"children":6529},{"style":766},[6530],{"type":75,"value":893},{"type":69,"tag":205,"props":6532,"children":6533},{"style":1041},[6534],{"type":75,"value":1483},{"type":69,"tag":205,"props":6536,"children":6537},{"style":778},[6538],{"type":75,"value":6539}," myAction ",{"type":69,"tag":205,"props":6541,"children":6542},{"style":772},[6543],{"type":75,"value":1493},{"type":69,"tag":205,"props":6545,"children":6546},{"style":901},[6547],{"type":75,"value":2935},{"type":69,"tag":205,"props":6549,"children":6550},{"style":778},[6551],{"type":75,"value":908},{"type":69,"tag":205,"props":6553,"children":6554},{"style":772},[6555],{"type":75,"value":2881},{"type":69,"tag":205,"props":6557,"children":6558},{"style":920},[6559],{"type":75,"value":3000},{"type":69,"tag":205,"props":6561,"children":6562},{"style":772},[6563],{"type":75,"value":928},{"type":69,"tag":205,"props":6565,"children":6566},{"style":772},[6567],{"type":75,"value":796},{"type":69,"tag":205,"props":6569,"children":6570},{"style":218},[6571],{"type":75,"value":3013},{"type":69,"tag":205,"props":6573,"children":6574},{"style":772},[6575],{"type":75,"value":1520},{"type":69,"tag":205,"props":6577,"children":6578},{"style":772},[6579],{"type":75,"value":786},{"type":69,"tag":205,"props":6581,"children":6582},{"style":778},[6583],{"type":75,"value":1002},{"type":69,"tag":205,"props":6585,"children":6586},{"class":207,"line":916},[6587,6591,6595,6599,6603,6607,6611,6615,6619,6623],{"type":69,"tag":205,"props":6588,"children":6589},{"style":772},[6590],{"type":75,"value":3033},{"type":69,"tag":205,"props":6592,"children":6593},{"style":901},[6594],{"type":75,"value":3243},{"type":69,"tag":205,"props":6596,"children":6597},{"style":778},[6598],{"type":75,"value":908},{"type":69,"tag":205,"props":6600,"children":6601},{"style":1041},[6602],{"type":75,"value":3252},{"type":69,"tag":205,"props":6604,"children":6605},{"style":772},[6606],{"type":75,"value":1862},{"type":69,"tag":205,"props":6608,"children":6609},{"style":1041},[6610],{"type":75,"value":1867},{"type":69,"tag":205,"props":6612,"children":6613},{"style":772},[6614],{"type":75,"value":775},{"type":69,"tag":205,"props":6616,"children":6617},{"style":772},[6618],{"type":75,"value":6504},{"type":69,"tag":205,"props":6620,"children":6621},{"style":772},[6622],{"type":75,"value":786},{"type":69,"tag":205,"props":6624,"children":6625},{"style":778},[6626],{"type":75,"value":1002},{"type":69,"tag":6028,"props":6628,"children":6630},{"id":6629},"_3-high-interpolating-params-into-link-href",[6631],{"type":75,"value":6632},"3. HIGH: Interpolating params into Link href",{"type":69,"tag":194,"props":6634,"children":6636},{"className":1230,"code":6635,"language":1232,"meta":199,"style":199},"\u002F\u002F WRONG — Next.js pattern\n\u003CLink to={`\u002Fposts\u002F${post.id}`}>View\u003C\u002FLink>\n\n\u002F\u002F CORRECT — TanStack Router pattern\n\u003CLink to=\"\u002Fposts\u002F$postId\" params={{ postId: post.id }}>View\u003C\u002FLink>\n",[6637],{"type":69,"tag":99,"props":6638,"children":6639},{"__ignoreMap":199},[6640,6648,6717,6724,6732],{"type":69,"tag":205,"props":6641,"children":6642},{"class":207,"line":208},[6643],{"type":69,"tag":205,"props":6644,"children":6645},{"style":757},[6646],{"type":75,"value":6647},"\u002F\u002F WRONG — Next.js pattern\n",{"type":69,"tag":205,"props":6649,"children":6650},{"class":207,"line":281},[6651,6656,6660,6664,6668,6672,6676,6680,6684,6688,6692,6696,6700,6705,6709,6713],{"type":69,"tag":205,"props":6652,"children":6653},{"style":772},[6654],{"type":75,"value":6655},"\u003C",{"type":69,"tag":205,"props":6657,"children":6658},{"style":212},[6659],{"type":75,"value":589},{"type":69,"tag":205,"props":6661,"children":6662},{"style":1041},[6663],{"type":75,"value":5256},{"type":69,"tag":205,"props":6665,"children":6666},{"style":772},[6667],{"type":75,"value":3506},{"type":69,"tag":205,"props":6669,"children":6670},{"style":772},[6671],{"type":75,"value":4449},{"type":69,"tag":205,"props":6673,"children":6674},{"style":218},[6675],{"type":75,"value":4454},{"type":69,"tag":205,"props":6677,"children":6678},{"style":772},[6679],{"type":75,"value":4459},{"type":69,"tag":205,"props":6681,"children":6682},{"style":778},[6683],{"type":75,"value":4464},{"type":69,"tag":205,"props":6685,"children":6686},{"style":772},[6687],{"type":75,"value":2609},{"type":69,"tag":205,"props":6689,"children":6690},{"style":778},[6691],{"type":75,"value":4473},{"type":69,"tag":205,"props":6693,"children":6694},{"style":772},[6695],{"type":75,"value":4478},{"type":69,"tag":205,"props":6697,"children":6698},{"style":772},[6699],{"type":75,"value":4483},{"type":69,"tag":205,"props":6701,"children":6702},{"style":778},[6703],{"type":75,"value":6704},"View",{"type":69,"tag":205,"props":6706,"children":6707},{"style":772},[6708],{"type":75,"value":4493},{"type":69,"tag":205,"props":6710,"children":6711},{"style":212},[6712],{"type":75,"value":589},{"type":69,"tag":205,"props":6714,"children":6715},{"style":772},[6716],{"type":75,"value":1595},{"type":69,"tag":205,"props":6718,"children":6719},{"class":207,"line":809},[6720],{"type":69,"tag":205,"props":6721,"children":6722},{"emptyLinePlaceholder":183},[6723],{"type":75,"value":884},{"type":69,"tag":205,"props":6725,"children":6726},{"class":207,"line":847},[6727],{"type":69,"tag":205,"props":6728,"children":6729},{"style":757},[6730],{"type":75,"value":6731},"\u002F\u002F CORRECT — TanStack Router pattern\n",{"type":69,"tag":205,"props":6733,"children":6734},{"class":207,"line":878},[6735,6739,6743,6747,6751,6755,6759,6763,6767,6771,6775,6779,6783,6787,6792,6797,6801,6805,6809],{"type":69,"tag":205,"props":6736,"children":6737},{"style":772},[6738],{"type":75,"value":6655},{"type":69,"tag":205,"props":6740,"children":6741},{"style":212},[6742],{"type":75,"value":589},{"type":69,"tag":205,"props":6744,"children":6745},{"style":1041},[6746],{"type":75,"value":5256},{"type":69,"tag":205,"props":6748,"children":6749},{"style":772},[6750],{"type":75,"value":1493},{"type":69,"tag":205,"props":6752,"children":6753},{"style":772},[6754],{"type":75,"value":1049},{"type":69,"tag":205,"props":6756,"children":6757},{"style":218},[6758],{"type":75,"value":2506},{"type":69,"tag":205,"props":6760,"children":6761},{"style":772},[6762],{"type":75,"value":1049},{"type":69,"tag":205,"props":6764,"children":6765},{"style":1041},[6766],{"type":75,"value":2346},{"type":69,"tag":205,"props":6768,"children":6769},{"style":772},[6770],{"type":75,"value":4585},{"type":69,"tag":205,"props":6772,"children":6773},{"style":920},[6774],{"type":75,"value":2591},{"type":69,"tag":205,"props":6776,"children":6777},{"style":772},[6778],{"type":75,"value":928},{"type":69,"tag":205,"props":6780,"children":6781},{"style":778},[6782],{"type":75,"value":4598},{"type":69,"tag":205,"props":6784,"children":6785},{"style":772},[6786],{"type":75,"value":2609},{"type":69,"tag":205,"props":6788,"children":6789},{"style":778},[6790],{"type":75,"value":6791},"id ",{"type":69,"tag":205,"props":6793,"children":6794},{"style":772},[6795],{"type":75,"value":6796},"}}>",{"type":69,"tag":205,"props":6798,"children":6799},{"style":778},[6800],{"type":75,"value":6704},{"type":69,"tag":205,"props":6802,"children":6803},{"style":772},[6804],{"type":75,"value":4493},{"type":69,"tag":205,"props":6806,"children":6807},{"style":212},[6808],{"type":75,"value":589},{"type":69,"tag":205,"props":6810,"children":6811},{"style":772},[6812],{"type":75,"value":1595},{"type":69,"tag":162,"props":6814,"children":6816},{"id":6815},"cross-references",[6817],{"type":75,"value":6818},"Cross-References",{"type":69,"tag":169,"props":6820,"children":6821},{},[6822,6833,6844],{"type":69,"tag":175,"props":6823,"children":6824},{},[6825,6831],{"type":69,"tag":6826,"props":6827,"children":6829},"a",{"href":6828},"..\u002F..\u002Freact-start\u002FSKILL.md",[6830],{"type":75,"value":60},{"type":75,"value":6832}," — full React Start setup",{"type":69,"tag":175,"props":6834,"children":6835},{},[6836,6842],{"type":69,"tag":6826,"props":6837,"children":6839},{"href":6838},"..\u002F..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-functions\u002FSKILL.md",[6840],{"type":75,"value":6841},"start-core\u002Fserver-functions",{"type":75,"value":6843}," — server function patterns",{"type":69,"tag":175,"props":6845,"children":6846},{},[6847,6853],{"type":69,"tag":6826,"props":6848,"children":6850},{"href":6849},"..\u002F..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fexecution-model\u002FSKILL.md",[6851],{"type":75,"value":6852},"start-core\u002Fexecution-model",{"type":75,"value":6854}," — isomorphic execution",{"type":69,"tag":6856,"props":6857,"children":6858},"style",{},[6859],{"type":75,"value":6860},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6862,"total":2247},[6863,6878,6893,6909,6922,6941,6952],{"slug":6864,"name":6864,"fn":6865,"description":6866,"org":6867,"tags":6868,"stars":25,"repoUrl":26,"updatedAt":6877},"auth-and-guards","implement route protection in TanStack Router","Route protection with beforeLoad, redirect()\u002Fthrow redirect(), isRedirect helper, authenticated layout routes (_authenticated), non-redirect auth (inline login), RBAC with roles and permissions, auth provider integration (Auth0, Clerk, Supabase), router context for auth state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6869,6872,6873,6875,6876],{"name":6870,"slug":6871,"type":15},"Auth","auth",{"name":23,"slug":24,"type":15},{"name":6874,"slug":37,"type":15},"Routing",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:07.639032",{"slug":6879,"name":6879,"fn":6880,"description":6881,"org":6882,"tags":6883,"stars":25,"repoUrl":26,"updatedAt":6892},"auth-server-primitives","implement server-side authentication primitives","Server-side authentication primitives for TanStack Start: session cookies (HttpOnly, Secure, SameSite, __Host- prefix), session read\u002Fissue\u002Fdestroy via createServerFn and middleware, OAuth authorization-code flow with state and PKCE, password-reset enumeration defense, CSRF for non-GET RPCs, rate limiting auth endpoints, session rotation on privilege change. Pairs with router-core\u002Fauth-and-guards for the routing side.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6884,6885,6888,6891],{"name":6870,"slug":6871,"type":15},{"name":6886,"slug":6887,"type":15},"OAuth","oauth",{"name":6889,"slug":6890,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":6894,"name":6894,"fn":6895,"description":6896,"org":6897,"tags":6898,"stars":25,"repoUrl":26,"updatedAt":6908},"code-splitting","configure code splitting in TanStack Router","Automatic code splitting (autoCodeSplitting), .lazy.tsx convention, createLazyFileRoute, createLazyRoute, lazyRouteComponent, getRouteApi for typed hooks in split files, codeSplitGroupings per-route override, splitBehavior programmatic config, critical vs non-critical properties.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6899,6902,6903,6906,6907],{"name":6900,"slug":6901,"type":15},"Engineering","engineering",{"name":23,"slug":24,"type":15},{"name":6904,"slug":6905,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:11.494406",{"slug":6910,"name":6910,"fn":6911,"description":6912,"org":6913,"tags":6914,"stars":25,"repoUrl":26,"updatedAt":6921},"data-loading","manage data loading in TanStack Router","Route loader option, loaderDeps for cache keys, staleTime\u002FgcTime\u002F defaultPreloadStaleTime SWR caching, pendingComponent\u002FpendingMs\u002F pendingMinMs, errorComponent\u002FonError\u002FonCatch, beforeLoad, router context and createRootRouteWithContext DI pattern, router.invalidate, Await component, deferred data loading with unawaited promises.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6915,6918,6919,6920],{"name":6916,"slug":6917,"type":15},"Caching","caching",{"name":6904,"slug":6905,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:26:54.487943",{"slug":6923,"name":6923,"fn":6924,"description":6925,"org":6926,"tags":6927,"stars":25,"repoUrl":26,"updatedAt":6940},"deployment","deploy TanStack Start applications","Deploy to Cloudflare Workers, Netlify, Vercel, Node.js\u002FDocker, Bun, Railway. Selective SSR (ssr option per route), SPA mode, static prerendering, ISR with Cache-Control headers, SEO and head management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6928,6931,6933,6936,6937],{"name":6929,"slug":6930,"type":15},"Cloudflare","cloudflare",{"name":6932,"slug":6923,"type":15},"Deployment",{"name":6934,"slug":6935,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":6938,"slug":6939,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":6942,"name":6942,"fn":6943,"description":6944,"org":6945,"tags":6946,"stars":25,"repoUrl":26,"updatedAt":6951},"execution-model","manage isomorphic execution models","Isomorphic-by-default principle, environment boundary functions (createServerFn, createServerOnlyFn, createClientOnlyFn, createIsomorphicFn), ClientOnly component, useHydrated hook, import protection, dead code elimination, environment variable safety (VITE_ prefix, process.env).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6947,6950],{"name":6948,"slug":6949,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":6953,"name":6953,"fn":6954,"description":6955,"org":6956,"tags":6957,"stars":25,"repoUrl":26,"updatedAt":6965},"middleware","implement TanStack Router middleware","createMiddleware, request middleware (.server only), server function middleware (.client + .server), context passing via next({ context }), sendContext for client-server transfer, global middleware via createStart in src\u002Fstart.ts, middleware factories, method order enforcement, fetch override precedence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6958,6961,6962,6964],{"name":6959,"slug":6960,"type":15},"Backend","backend",{"name":23,"slug":24,"type":15},{"name":6963,"slug":6953,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019",{"items":6967,"total":7105},[6968,6982,6994,7006,7019,7031,7041,7051,7064,7074,7085,7095],{"slug":6969,"name":6969,"fn":6970,"description":6971,"org":6972,"tags":6973,"stars":6979,"repoUrl":6980,"updatedAt":6981},"aggregation","perform data aggregation in TanStack Table","Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6974,6977,6978],{"name":6975,"slug":6976,"type":15},"Data Analysis","data-analysis",{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":6983,"name":6983,"fn":6984,"description":6985,"org":6986,"tags":6987,"stars":6979,"repoUrl":6980,"updatedAt":6993},"api-not-found","diagnose TanStack Table API errors","Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[6988,6991,6992],{"name":6989,"slug":6990,"type":15},"Debugging","debugging",{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":6995,"name":6995,"fn":6996,"description":6997,"org":6998,"tags":6999,"stars":6979,"repoUrl":6980,"updatedAt":7005},"cell-selection","select rectangular cell ranges in tables","Select rectangular cell ranges with cellSelectionFeature: two-corner range state keyed by row and column id, mousedown\u002Fmouseenter handlers, selection edges, render-order resolution under pinning, and autoResetCellSelection. Load when ranges widen unexpectedly after sorting or column reordering, when a drag re-renders the whole table, or when building copy-to-clipboard from a selection.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7000,7001,7002],{"name":6975,"slug":6976,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":7007,"name":7007,"fn":7008,"description":7009,"org":7010,"tags":7011,"stars":6979,"repoUrl":6980,"updatedAt":7018},"client-vs-server","manage TanStack Table data pipelines","Choose client or server ownership for filtering, grouping, sorting, expanding, and pagination in TanStack Table v9. Load for manual* flags, mixed pipelines, server counts, or deciding which dataset each row-model stage receives.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7012,7015,7016,7017],{"name":7013,"slug":7014,"type":15},"Data Pipeline","data-pipeline",{"name":23,"slug":24,"type":15},{"name":6904,"slug":6905,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":7020,"name":7020,"fn":7021,"description":7022,"org":7023,"tags":7024,"stars":6979,"repoUrl":6980,"updatedAt":7030},"column-faceting","build faceted filter UIs","Build faceted filter UIs with columnFacetingFeature, facetedRowModel, facetedUniqueValues, and facetedMinMaxValues. Load for facet counts, numeric ranges, own-filter exclusion, or server-page facet completeness.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7025,7028,7029],{"name":7026,"slug":7027,"type":15},"Data Visualization","data-visualization",{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":7032,"name":7032,"fn":7033,"description":7034,"org":7035,"tags":7036,"stars":6979,"repoUrl":6980,"updatedAt":7040},"column-filtering","implement column filtering in TanStack Table","Filter columns with columnFilteringFeature, filteredRowModel, filterFns, filterMeta, nested-row direction, and manualFiltering. Load for accessor compatibility, controlled filter updaters, fuzzy metadata, or client\u002Fserver ownership.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7037,7038,7039],{"name":6975,"slug":6976,"type":15},{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":7042,"name":7042,"fn":7043,"description":7044,"org":7045,"tags":7046,"stars":6979,"repoUrl":6980,"updatedAt":7050},"column-ordering","manage TanStack Table column ordering","Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7047,7048,7049],{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:26:03.37801",{"slug":7052,"name":7052,"fn":7053,"description":7054,"org":7055,"tags":7056,"stars":6979,"repoUrl":6980,"updatedAt":7063},"column-pinning","configure column pinning in TanStack Table","Pin columns into logical start, center, and end regions with columnPinningFeature and renderer-owned sticky CSS. Load for RTL offsets, z-index, backgrounds, overflow, widths, gaps, or overlaps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7057,7060,7061,7062],{"name":7058,"slug":7059,"type":15},"CSS","css",{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:25:55.377366",{"slug":7065,"name":7065,"fn":7066,"description":7067,"org":7068,"tags":7069,"stars":6979,"repoUrl":6980,"updatedAt":7073},"column-resizing","implement column resizing in TanStack Table","Wire columnResizingFeature, header.getResizeHandler, resize mode and direction, pointer or touch events, and performant CSS-variable updates. Load when resize state changes but widths do not, or large tables resize slowly.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7070,7071,7072],{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:25:51.400011",{"slug":7075,"name":7075,"fn":7076,"description":7077,"org":7078,"tags":7079,"stars":6979,"repoUrl":6980,"updatedAt":7084},"column-sizing","configure column sizing in TanStack Table","Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing\u002Fpinning layout mismatch.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7080,7081,7082,7083],{"name":7058,"slug":7059,"type":15},{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:25:48.703799",{"slug":7086,"name":7086,"fn":7087,"description":7088,"org":7089,"tags":7090,"stars":6979,"repoUrl":6980,"updatedAt":7094},"column-visibility","manage column visibility in TanStack Table","Hide columns with columnVisibilityFeature while rendering visibility-aware header, column, and cell collections. Load when hidden columns remain in the DOM, false-versus-absent state is confused, or enableHiding is misunderstood.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7091,7092,7093],{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:25:47.367943",{"slug":7096,"name":7096,"fn":7097,"description":7098,"org":7099,"tags":7100,"stars":6979,"repoUrl":6980,"updatedAt":7104},"core","build data grids with TanStack Table","Use TanStack Table v9 as a headless data-grid state and row-processing engine. Load for first-table architecture, stable data and columns, row numbering with getDisplayIndex, semantic rendering, framework adapter choice, or deciding what Table owns versus the renderer.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[7101,7102,7103],{"name":6975,"slug":6976,"type":15},{"name":23,"slug":24,"type":15},{"name":7003,"slug":7004,"type":15},"2026-07-30T05:25:52.366295",125]