[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-router-plugin":3,"mdc-4diiu9-key":52,"related-repo-tanstack-router-plugin":3281,"related-org-tanstack-router-plugin":3386},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":47,"sourceUrl":50,"mdContent":51},"router-plugin","generate routes with TanStack Router plugin","TanStack Router bundler plugin for route generation and automatic code splitting. Supports Vite, Webpack, Rspack, and esbuild. Configures autoCodeSplitting, routesDirectory, target framework, and code split groupings.",{"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,23],{"name":13,"slug":14,"type":15},"TanStack Router","tanstack-router","tag",{"name":17,"slug":18,"type":15},"Routing","routing",{"name":20,"slug":21,"type":15},"Vite","vite",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},"Frontend","frontend",14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:27:03.499486",null,1761,[32,33,34,35,36,37,18,38,39,40,41,42,43,44,45,46],"framework","fullstack","javascript","react","route","router","rpc","search","searchparams","server-functions","ssr","state-management","typesafe","typescript","url",{"repoUrl":27,"stars":26,"forks":30,"topics":48,"description":49},[32,33,34,35,36,37,18,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\u002Frouter-plugin\u002Fskills\u002Frouter-plugin","---\nname: router-plugin\ndescription: >-\n  TanStack Router bundler plugin for route generation and automatic\n  code splitting. Supports Vite, Webpack, Rspack, and esbuild.\n  Configures autoCodeSplitting, routesDirectory, target framework,\n  and code split groupings.\nmetadata:\n  type: core\n  library: tanstack-router\n  library_version: '1.168.23'\nsources:\n  - TanStack\u002Frouter:packages\u002Frouter-plugin\u002Fsrc\n  - TanStack\u002Frouter:docs\u002Frouter\u002Frouting\u002Ffile-based-routing.md\n  - TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Fcode-splitting.md\n---\n\n# Router Plugin (`@tanstack\u002Frouter-plugin`)\n\nBundler plugin that powers TanStack Router's file-based routing and automatic code splitting. Works with Vite, Webpack, Rspack, and esbuild via unplugin.\n\n> **CRITICAL**: The router plugin MUST come before the framework plugin (React, Solid, Vue) in the Vite config. Wrong order causes route generation and code splitting to fail silently.\n\n## Install\n\n```bash\nnpm install -D @tanstack\u002Frouter-plugin\n```\n\n## Bundler Setup\n\n### Vite (most common)\n\n```ts\n\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport react from '@vitejs\u002Fplugin-react'\nimport { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fvite'\n\nexport default defineConfig({\n  plugins: [\n    \u002F\u002F MUST come before react()\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n    react(),\n  ],\n})\n```\n\n### Webpack\n\n```ts\n\u002F\u002F webpack.config.js\nconst { tanstackRouter } = require('@tanstack\u002Frouter-plugin\u002Fwebpack')\n\nmodule.exports = {\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n}\n```\n\n### Rspack\n\n```ts\n\u002F\u002F rspack.config.js\nconst { tanstackRouter } = require('@tanstack\u002Frouter-plugin\u002Frspack')\n\nmodule.exports = {\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n}\n```\n\n### esbuild\n\n```ts\nimport { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fesbuild'\nimport esbuild from 'esbuild'\n\nesbuild.build({\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n})\n```\n\n## Configuration Options\n\n### Core Options\n\n| Option                  | Type                          | Default                    | Description                                |\n| ----------------------- | ----------------------------- | -------------------------- | ------------------------------------------ |\n| `target`                | `'react' \\| 'solid' \\| 'vue'` | `'react'`                  | Target framework                           |\n| `routesDirectory`       | `string`                      | `'.\u002Fsrc\u002Froutes'`           | Directory containing route files           |\n| `generatedRouteTree`    | `string`                      | `'.\u002Fsrc\u002FrouteTree.gen.ts'` | Path for generated route tree              |\n| `autoCodeSplitting`     | `boolean`                     | `undefined`                | Enable automatic code splitting            |\n| `enableRouteGeneration` | `boolean`                     | `true`                     | Set to `false` to disable route generation |\n\n### File Convention Options\n\n| Option                   | Type                                                    | Default     | Description                          |\n| ------------------------ | ------------------------------------------------------- | ----------- | ------------------------------------ |\n| `routeFilePrefix`        | `string`                                                | `undefined` | Prefix filter for route files        |\n| `routeFileIgnorePrefix`  | `string`                                                | `'-'`       | Prefix to exclude files from routing |\n| `routeFileIgnorePattern` | `string`                                                | `undefined` | Pattern to exclude from routing      |\n| `indexToken`             | `string \\| RegExp \\| { regex: string; flags?: string }` | `'index'`   | Token identifying index routes       |\n| `routeToken`             | `string \\| RegExp \\| { regex: string; flags?: string }` | `'route'`   | Token identifying route config files |\n\n### Code Splitting Options\n\n```ts\ntanstackRouter({\n  target: 'react',\n  autoCodeSplitting: true,\n  codeSplittingOptions: {\n    \u002F\u002F Default groupings for all routes\n    defaultBehavior: [['component'], ['errorComponent'], ['notFoundComponent']],\n\n    \u002F\u002F Per-route custom splitting\n    splitBehavior: ({ routeId }) => {\n      if (routeId === '\u002Fdashboard') {\n        \u002F\u002F Keep loader and component together for dashboard\n        return [['loader', 'component'], ['errorComponent']]\n      }\n      \u002F\u002F Return undefined to use defaultBehavior\n    },\n  },\n})\n```\n\n### Output Options\n\n| Option                      | Type                   | Default    | Description                      |\n| --------------------------- | ---------------------- | ---------- | -------------------------------- |\n| `quoteStyle`                | `'single' \\| 'double'` | `'single'` | Quote style in generated code    |\n| `semicolons`                | `boolean`              | `false`    | Use semicolons in generated code |\n| `disableTypes`              | `boolean`              | `false`    | Disable TypeScript types         |\n| `disableLogging`            | `boolean`              | `false`    | Suppress plugin logs             |\n| `addExtensions`             | `boolean \\| string`    | `false`    | Add file extensions to imports   |\n| `enableRouteTreeFormatting` | `boolean`              | `true`     | Format generated route tree      |\n\n### Virtual Route Config\n\n```ts\nimport { routes } from '.\u002Froutes'\n\ntanstackRouter({\n  target: 'react',\n  virtualRouteConfig: routes, \u002F\u002F or '.\u002Froutes.ts'\n})\n```\n\n## How It Works\n\nThe composed plugin assembles up to 3 sub-plugins:\n\n1. **Route Generator** (always) — Watches route files and generates `routeTree.gen.ts`\n2. **Code Splitter** (when `autoCodeSplitting: true`) — Splits route files into lazy-loaded chunks using virtual modules\n3. **HMR** (dev mode, when code splitter is off) — Hot-reloads route changes without full refresh\n\n## Route Refactor Workflow\n\nWhen moving, renaming, adding, or deleting file routes:\n\n1. Change the source files under `routesDirectory`. Keep the exported route identifier named `Route`.\n2. Let the bundler plugin regenerate the tree, or run `pnpm exec tsr generate` when the project uses the CLI.\n3. Inspect the generated diff for the expected route IDs, parents, paths, and imports. Never repair `routeTree.gen.ts` by hand.\n4. Update links, redirects, `from` narrowing, params, preload calls, and tests that reference the old route.\n5. Run route-generation tests, type tests, and a production build. A passing editor typecheck does not prove the plugin generated or split the new route correctly.\n\nCommit `routeTree.gen.ts`; it is generated source used by the application at runtime.\n\n## Individual Plugin Exports\n\nFor advanced use, each sub-plugin is exported separately from the Vite entry:\n\n```ts\nimport {\n  tanstackRouter, \u002F\u002F Composed (default)\n  tanstackRouterGenerator, \u002F\u002F Generator only\n  tanStackRouterCodeSplitter, \u002F\u002F Code splitter only\n} from '@tanstack\u002Frouter-plugin\u002Fvite'\n```\n\n## Common Mistakes\n\n### 1. CRITICAL: Wrong plugin order in Vite config\n\nThe router plugin must come before the framework plugin. Otherwise, route generation and code splitting fail silently.\n\n```ts\n\u002F\u002F WRONG — react() before tanstackRouter()\nplugins: [react(), tanstackRouter({ target: 'react' })]\n\n\u002F\u002F CORRECT — tanstackRouter() first\nplugins: [tanstackRouter({ target: 'react' }), react()]\n```\n\n### 2. HIGH: Missing target option for non-React frameworks\n\nThe `target` defaults to `'react'`. For Solid or Vue, you must set it explicitly.\n\n```ts\n\u002F\u002F WRONG for Solid — generates React imports\ntanstackRouter({ autoCodeSplitting: true })\n\n\u002F\u002F CORRECT for Solid\ntanstackRouter({ target: 'solid', autoCodeSplitting: true })\n```\n\n### 3. MEDIUM: Confusing autoCodeSplitting with manual lazy routes\n\nWhen `autoCodeSplitting` is enabled, the plugin handles splitting automatically. You do NOT need manual `createLazyRoute` or `lazyRouteComponent` calls — the plugin transforms your route files at build time.\n\n```tsx\n\u002F\u002F WRONG — manual lazy loading with autoCodeSplitting enabled\nconst LazyAbout = lazyRouteComponent(() => import('.\u002Fabout'))\n\n\u002F\u002F CORRECT — just write normal route files, plugin handles splitting\n\u002F\u002F src\u002Froutes\u002Fabout.tsx\nexport const Route = createFileRoute('\u002Fabout')({\n  component: AboutPage,\n})\n\nfunction AboutPage() {\n  return \u003Ch1>About\u003C\u002Fh1>\n}\n```\n\n### 4. HIGH: Editing the generated route tree\n\nChanges to `routeTree.gen.ts` are overwritten and can leave source routes, generated types, and runtime routing out of sync. Fix route filenames or plugin configuration, regenerate, and verify the generated diff instead.\n\n## Cross-References\n\n- [router-core\u002Fcode-splitting](..\u002F..\u002F..\u002Frouter-core\u002Fskills\u002Frouter-core\u002Fcode-splitting\u002FSKILL.md) — manual code splitting concepts\n- [virtual-file-routes](..\u002F..\u002F..\u002Fvirtual-file-routes\u002Fskills\u002Fvirtual-file-routes\u002FSKILL.md) — programmatic route trees\n",{"data":53,"body":61},{"name":4,"description":6,"metadata":54,"sources":57},{"type":55,"library":14,"library_version":56},"core","1.168.23",[58,59,60],"TanStack\u002Frouter:packages\u002Frouter-plugin\u002Fsrc","TanStack\u002Frouter:docs\u002Frouter\u002Frouting\u002Ffile-based-routing.md","TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Fcode-splitting.md",{"type":62,"children":63},"root",[64,82,88,103,110,149,155,162,496,502,704,710,904,909,1125,1131,1137,1356,1362,1559,1565,1972,1978,2207,2213,2342,2348,2353,2402,2408,2413,2477,2489,2495,2500,2592,2598,2604,2609,2779,2785,2804,2930,2936,2964,3224,3230,3242,3248,3275],{"type":65,"tag":66,"props":67,"children":69},"element","h1",{"id":68},"router-plugin-tanstackrouter-plugin",[70,73,80],{"type":71,"value":72},"text","Router Plugin (",{"type":65,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":71,"value":79},"@tanstack\u002Frouter-plugin",{"type":71,"value":81},")",{"type":65,"tag":83,"props":84,"children":85},"p",{},[86],{"type":71,"value":87},"Bundler plugin that powers TanStack Router's file-based routing and automatic code splitting. Works with Vite, Webpack, Rspack, and esbuild via unplugin.",{"type":65,"tag":89,"props":90,"children":91},"blockquote",{},[92],{"type":65,"tag":83,"props":93,"children":94},{},[95,101],{"type":65,"tag":96,"props":97,"children":98},"strong",{},[99],{"type":71,"value":100},"CRITICAL",{"type":71,"value":102},": The router plugin MUST come before the framework plugin (React, Solid, Vue) in the Vite config. Wrong order causes route generation and code splitting to fail silently.",{"type":65,"tag":104,"props":105,"children":107},"h2",{"id":106},"install",[108],{"type":71,"value":109},"Install",{"type":65,"tag":111,"props":112,"children":117},"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install -D @tanstack\u002Frouter-plugin\n","bash","",[118],{"type":65,"tag":74,"props":119,"children":120},{"__ignoreMap":116},[121],{"type":65,"tag":122,"props":123,"children":126},"span",{"class":124,"line":125},"line",1,[127,133,139,144],{"type":65,"tag":122,"props":128,"children":130},{"style":129},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[131],{"type":71,"value":132},"npm",{"type":65,"tag":122,"props":134,"children":136},{"style":135},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[137],{"type":71,"value":138}," install",{"type":65,"tag":122,"props":140,"children":141},{"style":135},[142],{"type":71,"value":143}," -D",{"type":65,"tag":122,"props":145,"children":146},{"style":135},[147],{"type":71,"value":148}," @tanstack\u002Frouter-plugin\n",{"type":65,"tag":104,"props":150,"children":152},{"id":151},"bundler-setup",[153],{"type":71,"value":154},"Bundler Setup",{"type":65,"tag":156,"props":157,"children":159},"h3",{"id":158},"vite-most-common",[160],{"type":71,"value":161},"Vite (most common)",{"type":65,"tag":111,"props":163,"children":167},{"className":164,"code":165,"language":166,"meta":116,"style":116},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport react from '@vitejs\u002Fplugin-react'\nimport { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fvite'\n\nexport default defineConfig({\n  plugins: [\n    \u002F\u002F MUST come before react()\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n    react(),\n  ],\n})\n","ts",[168],{"type":65,"tag":74,"props":169,"children":170},{"__ignoreMap":116},[171,180,226,257,295,305,334,354,363,380,411,434,451,469,482],{"type":65,"tag":122,"props":172,"children":173},{"class":124,"line":125},[174],{"type":65,"tag":122,"props":175,"children":177},{"style":176},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[178],{"type":71,"value":179},"\u002F\u002F vite.config.ts\n",{"type":65,"tag":122,"props":181,"children":183},{"class":124,"line":182},2,[184,190,196,202,207,212,217,221],{"type":65,"tag":122,"props":185,"children":187},{"style":186},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[188],{"type":71,"value":189},"import",{"type":65,"tag":122,"props":191,"children":193},{"style":192},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[194],{"type":71,"value":195}," {",{"type":65,"tag":122,"props":197,"children":199},{"style":198},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[200],{"type":71,"value":201}," defineConfig",{"type":65,"tag":122,"props":203,"children":204},{"style":192},[205],{"type":71,"value":206}," }",{"type":65,"tag":122,"props":208,"children":209},{"style":186},[210],{"type":71,"value":211}," from",{"type":65,"tag":122,"props":213,"children":214},{"style":192},[215],{"type":71,"value":216}," '",{"type":65,"tag":122,"props":218,"children":219},{"style":135},[220],{"type":71,"value":21},{"type":65,"tag":122,"props":222,"children":223},{"style":192},[224],{"type":71,"value":225},"'\n",{"type":65,"tag":122,"props":227,"children":229},{"class":124,"line":228},3,[230,234,239,244,248,253],{"type":65,"tag":122,"props":231,"children":232},{"style":186},[233],{"type":71,"value":189},{"type":65,"tag":122,"props":235,"children":236},{"style":198},[237],{"type":71,"value":238}," react ",{"type":65,"tag":122,"props":240,"children":241},{"style":186},[242],{"type":71,"value":243},"from",{"type":65,"tag":122,"props":245,"children":246},{"style":192},[247],{"type":71,"value":216},{"type":65,"tag":122,"props":249,"children":250},{"style":135},[251],{"type":71,"value":252},"@vitejs\u002Fplugin-react",{"type":65,"tag":122,"props":254,"children":255},{"style":192},[256],{"type":71,"value":225},{"type":65,"tag":122,"props":258,"children":260},{"class":124,"line":259},4,[261,265,269,274,278,282,286,291],{"type":65,"tag":122,"props":262,"children":263},{"style":186},[264],{"type":71,"value":189},{"type":65,"tag":122,"props":266,"children":267},{"style":192},[268],{"type":71,"value":195},{"type":65,"tag":122,"props":270,"children":271},{"style":198},[272],{"type":71,"value":273}," tanstackRouter",{"type":65,"tag":122,"props":275,"children":276},{"style":192},[277],{"type":71,"value":206},{"type":65,"tag":122,"props":279,"children":280},{"style":186},[281],{"type":71,"value":211},{"type":65,"tag":122,"props":283,"children":284},{"style":192},[285],{"type":71,"value":216},{"type":65,"tag":122,"props":287,"children":288},{"style":135},[289],{"type":71,"value":290},"@tanstack\u002Frouter-plugin\u002Fvite",{"type":65,"tag":122,"props":292,"children":293},{"style":192},[294],{"type":71,"value":225},{"type":65,"tag":122,"props":296,"children":298},{"class":124,"line":297},5,[299],{"type":65,"tag":122,"props":300,"children":302},{"emptyLinePlaceholder":301},true,[303],{"type":71,"value":304},"\n",{"type":65,"tag":122,"props":306,"children":308},{"class":124,"line":307},6,[309,314,319,324,329],{"type":65,"tag":122,"props":310,"children":311},{"style":186},[312],{"type":71,"value":313},"export",{"type":65,"tag":122,"props":315,"children":316},{"style":186},[317],{"type":71,"value":318}," default",{"type":65,"tag":122,"props":320,"children":322},{"style":321},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[323],{"type":71,"value":201},{"type":65,"tag":122,"props":325,"children":326},{"style":198},[327],{"type":71,"value":328},"(",{"type":65,"tag":122,"props":330,"children":331},{"style":192},[332],{"type":71,"value":333},"{\n",{"type":65,"tag":122,"props":335,"children":337},{"class":124,"line":336},7,[338,344,349],{"type":65,"tag":122,"props":339,"children":341},{"style":340},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[342],{"type":71,"value":343},"  plugins",{"type":65,"tag":122,"props":345,"children":346},{"style":192},[347],{"type":71,"value":348},":",{"type":65,"tag":122,"props":350,"children":351},{"style":198},[352],{"type":71,"value":353}," [\n",{"type":65,"tag":122,"props":355,"children":357},{"class":124,"line":356},8,[358],{"type":65,"tag":122,"props":359,"children":360},{"style":176},[361],{"type":71,"value":362},"    \u002F\u002F MUST come before react()\n",{"type":65,"tag":122,"props":364,"children":366},{"class":124,"line":365},9,[367,372,376],{"type":65,"tag":122,"props":368,"children":369},{"style":321},[370],{"type":71,"value":371},"    tanstackRouter",{"type":65,"tag":122,"props":373,"children":374},{"style":198},[375],{"type":71,"value":328},{"type":65,"tag":122,"props":377,"children":378},{"style":192},[379],{"type":71,"value":333},{"type":65,"tag":122,"props":381,"children":383},{"class":124,"line":382},10,[384,389,393,397,401,406],{"type":65,"tag":122,"props":385,"children":386},{"style":340},[387],{"type":71,"value":388},"      target",{"type":65,"tag":122,"props":390,"children":391},{"style":192},[392],{"type":71,"value":348},{"type":65,"tag":122,"props":394,"children":395},{"style":192},[396],{"type":71,"value":216},{"type":65,"tag":122,"props":398,"children":399},{"style":135},[400],{"type":71,"value":35},{"type":65,"tag":122,"props":402,"children":403},{"style":192},[404],{"type":71,"value":405},"'",{"type":65,"tag":122,"props":407,"children":408},{"style":192},[409],{"type":71,"value":410},",\n",{"type":65,"tag":122,"props":412,"children":414},{"class":124,"line":413},11,[415,420,424,430],{"type":65,"tag":122,"props":416,"children":417},{"style":340},[418],{"type":71,"value":419},"      autoCodeSplitting",{"type":65,"tag":122,"props":421,"children":422},{"style":192},[423],{"type":71,"value":348},{"type":65,"tag":122,"props":425,"children":427},{"style":426},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[428],{"type":71,"value":429}," true",{"type":65,"tag":122,"props":431,"children":432},{"style":192},[433],{"type":71,"value":410},{"type":65,"tag":122,"props":435,"children":437},{"class":124,"line":436},12,[438,443,447],{"type":65,"tag":122,"props":439,"children":440},{"style":192},[441],{"type":71,"value":442},"    }",{"type":65,"tag":122,"props":444,"children":445},{"style":198},[446],{"type":71,"value":81},{"type":65,"tag":122,"props":448,"children":449},{"style":192},[450],{"type":71,"value":410},{"type":65,"tag":122,"props":452,"children":454},{"class":124,"line":453},13,[455,460,465],{"type":65,"tag":122,"props":456,"children":457},{"style":321},[458],{"type":71,"value":459},"    react",{"type":65,"tag":122,"props":461,"children":462},{"style":198},[463],{"type":71,"value":464},"()",{"type":65,"tag":122,"props":466,"children":467},{"style":192},[468],{"type":71,"value":410},{"type":65,"tag":122,"props":470,"children":472},{"class":124,"line":471},14,[473,478],{"type":65,"tag":122,"props":474,"children":475},{"style":198},[476],{"type":71,"value":477},"  ]",{"type":65,"tag":122,"props":479,"children":480},{"style":192},[481],{"type":71,"value":410},{"type":65,"tag":122,"props":483,"children":485},{"class":124,"line":484},15,[486,491],{"type":65,"tag":122,"props":487,"children":488},{"style":192},[489],{"type":71,"value":490},"}",{"type":65,"tag":122,"props":492,"children":493},{"style":198},[494],{"type":71,"value":495},")\n",{"type":65,"tag":156,"props":497,"children":499},{"id":498},"webpack",[500],{"type":71,"value":501},"Webpack",{"type":65,"tag":111,"props":503,"children":505},{"className":164,"code":504,"language":166,"meta":116,"style":116},"\u002F\u002F webpack.config.js\nconst { tanstackRouter } = require('@tanstack\u002Frouter-plugin\u002Fwebpack')\n\nmodule.exports = {\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n}\n",[506],{"type":65,"tag":74,"props":507,"children":508},{"__ignoreMap":116},[509,517,570,577,594,609,624,651,670,685,696],{"type":65,"tag":122,"props":510,"children":511},{"class":124,"line":125},[512],{"type":65,"tag":122,"props":513,"children":514},{"style":176},[515],{"type":71,"value":516},"\u002F\u002F webpack.config.js\n",{"type":65,"tag":122,"props":518,"children":519},{"class":124,"line":182},[520,526,530,535,539,544,549,553,557,562,566],{"type":65,"tag":122,"props":521,"children":523},{"style":522},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[524],{"type":71,"value":525},"const",{"type":65,"tag":122,"props":527,"children":528},{"style":192},[529],{"type":71,"value":195},{"type":65,"tag":122,"props":531,"children":532},{"style":198},[533],{"type":71,"value":534}," tanstackRouter ",{"type":65,"tag":122,"props":536,"children":537},{"style":192},[538],{"type":71,"value":490},{"type":65,"tag":122,"props":540,"children":541},{"style":192},[542],{"type":71,"value":543}," =",{"type":65,"tag":122,"props":545,"children":546},{"style":321},[547],{"type":71,"value":548}," require",{"type":65,"tag":122,"props":550,"children":551},{"style":198},[552],{"type":71,"value":328},{"type":65,"tag":122,"props":554,"children":555},{"style":192},[556],{"type":71,"value":405},{"type":65,"tag":122,"props":558,"children":559},{"style":135},[560],{"type":71,"value":561},"@tanstack\u002Frouter-plugin\u002Fwebpack",{"type":65,"tag":122,"props":563,"children":564},{"style":192},[565],{"type":71,"value":405},{"type":65,"tag":122,"props":567,"children":568},{"style":198},[569],{"type":71,"value":495},{"type":65,"tag":122,"props":571,"children":572},{"class":124,"line":228},[573],{"type":65,"tag":122,"props":574,"children":575},{"emptyLinePlaceholder":301},[576],{"type":71,"value":304},{"type":65,"tag":122,"props":578,"children":579},{"class":124,"line":259},[580,585,589],{"type":65,"tag":122,"props":581,"children":582},{"style":192},[583],{"type":71,"value":584},"module.exports",{"type":65,"tag":122,"props":586,"children":587},{"style":192},[588],{"type":71,"value":543},{"type":65,"tag":122,"props":590,"children":591},{"style":192},[592],{"type":71,"value":593}," {\n",{"type":65,"tag":122,"props":595,"children":596},{"class":124,"line":297},[597,601,605],{"type":65,"tag":122,"props":598,"children":599},{"style":340},[600],{"type":71,"value":343},{"type":65,"tag":122,"props":602,"children":603},{"style":192},[604],{"type":71,"value":348},{"type":65,"tag":122,"props":606,"children":607},{"style":198},[608],{"type":71,"value":353},{"type":65,"tag":122,"props":610,"children":611},{"class":124,"line":307},[612,616,620],{"type":65,"tag":122,"props":613,"children":614},{"style":321},[615],{"type":71,"value":371},{"type":65,"tag":122,"props":617,"children":618},{"style":198},[619],{"type":71,"value":328},{"type":65,"tag":122,"props":621,"children":622},{"style":192},[623],{"type":71,"value":333},{"type":65,"tag":122,"props":625,"children":626},{"class":124,"line":336},[627,631,635,639,643,647],{"type":65,"tag":122,"props":628,"children":629},{"style":340},[630],{"type":71,"value":388},{"type":65,"tag":122,"props":632,"children":633},{"style":192},[634],{"type":71,"value":348},{"type":65,"tag":122,"props":636,"children":637},{"style":192},[638],{"type":71,"value":216},{"type":65,"tag":122,"props":640,"children":641},{"style":135},[642],{"type":71,"value":35},{"type":65,"tag":122,"props":644,"children":645},{"style":192},[646],{"type":71,"value":405},{"type":65,"tag":122,"props":648,"children":649},{"style":192},[650],{"type":71,"value":410},{"type":65,"tag":122,"props":652,"children":653},{"class":124,"line":356},[654,658,662,666],{"type":65,"tag":122,"props":655,"children":656},{"style":340},[657],{"type":71,"value":419},{"type":65,"tag":122,"props":659,"children":660},{"style":192},[661],{"type":71,"value":348},{"type":65,"tag":122,"props":663,"children":664},{"style":426},[665],{"type":71,"value":429},{"type":65,"tag":122,"props":667,"children":668},{"style":192},[669],{"type":71,"value":410},{"type":65,"tag":122,"props":671,"children":672},{"class":124,"line":365},[673,677,681],{"type":65,"tag":122,"props":674,"children":675},{"style":192},[676],{"type":71,"value":442},{"type":65,"tag":122,"props":678,"children":679},{"style":198},[680],{"type":71,"value":81},{"type":65,"tag":122,"props":682,"children":683},{"style":192},[684],{"type":71,"value":410},{"type":65,"tag":122,"props":686,"children":687},{"class":124,"line":382},[688,692],{"type":65,"tag":122,"props":689,"children":690},{"style":198},[691],{"type":71,"value":477},{"type":65,"tag":122,"props":693,"children":694},{"style":192},[695],{"type":71,"value":410},{"type":65,"tag":122,"props":697,"children":698},{"class":124,"line":413},[699],{"type":65,"tag":122,"props":700,"children":701},{"style":192},[702],{"type":71,"value":703},"}\n",{"type":65,"tag":156,"props":705,"children":707},{"id":706},"rspack",[708],{"type":71,"value":709},"Rspack",{"type":65,"tag":111,"props":711,"children":713},{"className":164,"code":712,"language":166,"meta":116,"style":116},"\u002F\u002F rspack.config.js\nconst { tanstackRouter } = require('@tanstack\u002Frouter-plugin\u002Frspack')\n\nmodule.exports = {\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n}\n",[714],{"type":65,"tag":74,"props":715,"children":716},{"__ignoreMap":116},[717,725,773,780,795,810,825,852,871,886,897],{"type":65,"tag":122,"props":718,"children":719},{"class":124,"line":125},[720],{"type":65,"tag":122,"props":721,"children":722},{"style":176},[723],{"type":71,"value":724},"\u002F\u002F rspack.config.js\n",{"type":65,"tag":122,"props":726,"children":727},{"class":124,"line":182},[728,732,736,740,744,748,752,756,760,765,769],{"type":65,"tag":122,"props":729,"children":730},{"style":522},[731],{"type":71,"value":525},{"type":65,"tag":122,"props":733,"children":734},{"style":192},[735],{"type":71,"value":195},{"type":65,"tag":122,"props":737,"children":738},{"style":198},[739],{"type":71,"value":534},{"type":65,"tag":122,"props":741,"children":742},{"style":192},[743],{"type":71,"value":490},{"type":65,"tag":122,"props":745,"children":746},{"style":192},[747],{"type":71,"value":543},{"type":65,"tag":122,"props":749,"children":750},{"style":321},[751],{"type":71,"value":548},{"type":65,"tag":122,"props":753,"children":754},{"style":198},[755],{"type":71,"value":328},{"type":65,"tag":122,"props":757,"children":758},{"style":192},[759],{"type":71,"value":405},{"type":65,"tag":122,"props":761,"children":762},{"style":135},[763],{"type":71,"value":764},"@tanstack\u002Frouter-plugin\u002Frspack",{"type":65,"tag":122,"props":766,"children":767},{"style":192},[768],{"type":71,"value":405},{"type":65,"tag":122,"props":770,"children":771},{"style":198},[772],{"type":71,"value":495},{"type":65,"tag":122,"props":774,"children":775},{"class":124,"line":228},[776],{"type":65,"tag":122,"props":777,"children":778},{"emptyLinePlaceholder":301},[779],{"type":71,"value":304},{"type":65,"tag":122,"props":781,"children":782},{"class":124,"line":259},[783,787,791],{"type":65,"tag":122,"props":784,"children":785},{"style":192},[786],{"type":71,"value":584},{"type":65,"tag":122,"props":788,"children":789},{"style":192},[790],{"type":71,"value":543},{"type":65,"tag":122,"props":792,"children":793},{"style":192},[794],{"type":71,"value":593},{"type":65,"tag":122,"props":796,"children":797},{"class":124,"line":297},[798,802,806],{"type":65,"tag":122,"props":799,"children":800},{"style":340},[801],{"type":71,"value":343},{"type":65,"tag":122,"props":803,"children":804},{"style":192},[805],{"type":71,"value":348},{"type":65,"tag":122,"props":807,"children":808},{"style":198},[809],{"type":71,"value":353},{"type":65,"tag":122,"props":811,"children":812},{"class":124,"line":307},[813,817,821],{"type":65,"tag":122,"props":814,"children":815},{"style":321},[816],{"type":71,"value":371},{"type":65,"tag":122,"props":818,"children":819},{"style":198},[820],{"type":71,"value":328},{"type":65,"tag":122,"props":822,"children":823},{"style":192},[824],{"type":71,"value":333},{"type":65,"tag":122,"props":826,"children":827},{"class":124,"line":336},[828,832,836,840,844,848],{"type":65,"tag":122,"props":829,"children":830},{"style":340},[831],{"type":71,"value":388},{"type":65,"tag":122,"props":833,"children":834},{"style":192},[835],{"type":71,"value":348},{"type":65,"tag":122,"props":837,"children":838},{"style":192},[839],{"type":71,"value":216},{"type":65,"tag":122,"props":841,"children":842},{"style":135},[843],{"type":71,"value":35},{"type":65,"tag":122,"props":845,"children":846},{"style":192},[847],{"type":71,"value":405},{"type":65,"tag":122,"props":849,"children":850},{"style":192},[851],{"type":71,"value":410},{"type":65,"tag":122,"props":853,"children":854},{"class":124,"line":356},[855,859,863,867],{"type":65,"tag":122,"props":856,"children":857},{"style":340},[858],{"type":71,"value":419},{"type":65,"tag":122,"props":860,"children":861},{"style":192},[862],{"type":71,"value":348},{"type":65,"tag":122,"props":864,"children":865},{"style":426},[866],{"type":71,"value":429},{"type":65,"tag":122,"props":868,"children":869},{"style":192},[870],{"type":71,"value":410},{"type":65,"tag":122,"props":872,"children":873},{"class":124,"line":365},[874,878,882],{"type":65,"tag":122,"props":875,"children":876},{"style":192},[877],{"type":71,"value":442},{"type":65,"tag":122,"props":879,"children":880},{"style":198},[881],{"type":71,"value":81},{"type":65,"tag":122,"props":883,"children":884},{"style":192},[885],{"type":71,"value":410},{"type":65,"tag":122,"props":887,"children":888},{"class":124,"line":382},[889,893],{"type":65,"tag":122,"props":890,"children":891},{"style":198},[892],{"type":71,"value":477},{"type":65,"tag":122,"props":894,"children":895},{"style":192},[896],{"type":71,"value":410},{"type":65,"tag":122,"props":898,"children":899},{"class":124,"line":413},[900],{"type":65,"tag":122,"props":901,"children":902},{"style":192},[903],{"type":71,"value":703},{"type":65,"tag":156,"props":905,"children":907},{"id":906},"esbuild",[908],{"type":71,"value":906},{"type":65,"tag":111,"props":910,"children":912},{"className":164,"code":911,"language":166,"meta":116,"style":116},"import { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fesbuild'\nimport esbuild from 'esbuild'\n\nesbuild.build({\n  plugins: [\n    tanstackRouter({\n      target: 'react',\n      autoCodeSplitting: true,\n    }),\n  ],\n})\n",[913],{"type":65,"tag":74,"props":914,"children":915},{"__ignoreMap":116},[916,952,980,987,1012,1027,1042,1069,1088,1103,1114],{"type":65,"tag":122,"props":917,"children":918},{"class":124,"line":125},[919,923,927,931,935,939,943,948],{"type":65,"tag":122,"props":920,"children":921},{"style":186},[922],{"type":71,"value":189},{"type":65,"tag":122,"props":924,"children":925},{"style":192},[926],{"type":71,"value":195},{"type":65,"tag":122,"props":928,"children":929},{"style":198},[930],{"type":71,"value":273},{"type":65,"tag":122,"props":932,"children":933},{"style":192},[934],{"type":71,"value":206},{"type":65,"tag":122,"props":936,"children":937},{"style":186},[938],{"type":71,"value":211},{"type":65,"tag":122,"props":940,"children":941},{"style":192},[942],{"type":71,"value":216},{"type":65,"tag":122,"props":944,"children":945},{"style":135},[946],{"type":71,"value":947},"@tanstack\u002Frouter-plugin\u002Fesbuild",{"type":65,"tag":122,"props":949,"children":950},{"style":192},[951],{"type":71,"value":225},{"type":65,"tag":122,"props":953,"children":954},{"class":124,"line":182},[955,959,964,968,972,976],{"type":65,"tag":122,"props":956,"children":957},{"style":186},[958],{"type":71,"value":189},{"type":65,"tag":122,"props":960,"children":961},{"style":198},[962],{"type":71,"value":963}," esbuild ",{"type":65,"tag":122,"props":965,"children":966},{"style":186},[967],{"type":71,"value":243},{"type":65,"tag":122,"props":969,"children":970},{"style":192},[971],{"type":71,"value":216},{"type":65,"tag":122,"props":973,"children":974},{"style":135},[975],{"type":71,"value":906},{"type":65,"tag":122,"props":977,"children":978},{"style":192},[979],{"type":71,"value":225},{"type":65,"tag":122,"props":981,"children":982},{"class":124,"line":228},[983],{"type":65,"tag":122,"props":984,"children":985},{"emptyLinePlaceholder":301},[986],{"type":71,"value":304},{"type":65,"tag":122,"props":988,"children":989},{"class":124,"line":259},[990,994,999,1004,1008],{"type":65,"tag":122,"props":991,"children":992},{"style":198},[993],{"type":71,"value":906},{"type":65,"tag":122,"props":995,"children":996},{"style":192},[997],{"type":71,"value":998},".",{"type":65,"tag":122,"props":1000,"children":1001},{"style":321},[1002],{"type":71,"value":1003},"build",{"type":65,"tag":122,"props":1005,"children":1006},{"style":198},[1007],{"type":71,"value":328},{"type":65,"tag":122,"props":1009,"children":1010},{"style":192},[1011],{"type":71,"value":333},{"type":65,"tag":122,"props":1013,"children":1014},{"class":124,"line":297},[1015,1019,1023],{"type":65,"tag":122,"props":1016,"children":1017},{"style":340},[1018],{"type":71,"value":343},{"type":65,"tag":122,"props":1020,"children":1021},{"style":192},[1022],{"type":71,"value":348},{"type":65,"tag":122,"props":1024,"children":1025},{"style":198},[1026],{"type":71,"value":353},{"type":65,"tag":122,"props":1028,"children":1029},{"class":124,"line":307},[1030,1034,1038],{"type":65,"tag":122,"props":1031,"children":1032},{"style":321},[1033],{"type":71,"value":371},{"type":65,"tag":122,"props":1035,"children":1036},{"style":198},[1037],{"type":71,"value":328},{"type":65,"tag":122,"props":1039,"children":1040},{"style":192},[1041],{"type":71,"value":333},{"type":65,"tag":122,"props":1043,"children":1044},{"class":124,"line":336},[1045,1049,1053,1057,1061,1065],{"type":65,"tag":122,"props":1046,"children":1047},{"style":340},[1048],{"type":71,"value":388},{"type":65,"tag":122,"props":1050,"children":1051},{"style":192},[1052],{"type":71,"value":348},{"type":65,"tag":122,"props":1054,"children":1055},{"style":192},[1056],{"type":71,"value":216},{"type":65,"tag":122,"props":1058,"children":1059},{"style":135},[1060],{"type":71,"value":35},{"type":65,"tag":122,"props":1062,"children":1063},{"style":192},[1064],{"type":71,"value":405},{"type":65,"tag":122,"props":1066,"children":1067},{"style":192},[1068],{"type":71,"value":410},{"type":65,"tag":122,"props":1070,"children":1071},{"class":124,"line":356},[1072,1076,1080,1084],{"type":65,"tag":122,"props":1073,"children":1074},{"style":340},[1075],{"type":71,"value":419},{"type":65,"tag":122,"props":1077,"children":1078},{"style":192},[1079],{"type":71,"value":348},{"type":65,"tag":122,"props":1081,"children":1082},{"style":426},[1083],{"type":71,"value":429},{"type":65,"tag":122,"props":1085,"children":1086},{"style":192},[1087],{"type":71,"value":410},{"type":65,"tag":122,"props":1089,"children":1090},{"class":124,"line":365},[1091,1095,1099],{"type":65,"tag":122,"props":1092,"children":1093},{"style":192},[1094],{"type":71,"value":442},{"type":65,"tag":122,"props":1096,"children":1097},{"style":198},[1098],{"type":71,"value":81},{"type":65,"tag":122,"props":1100,"children":1101},{"style":192},[1102],{"type":71,"value":410},{"type":65,"tag":122,"props":1104,"children":1105},{"class":124,"line":382},[1106,1110],{"type":65,"tag":122,"props":1107,"children":1108},{"style":198},[1109],{"type":71,"value":477},{"type":65,"tag":122,"props":1111,"children":1112},{"style":192},[1113],{"type":71,"value":410},{"type":65,"tag":122,"props":1115,"children":1116},{"class":124,"line":413},[1117,1121],{"type":65,"tag":122,"props":1118,"children":1119},{"style":192},[1120],{"type":71,"value":490},{"type":65,"tag":122,"props":1122,"children":1123},{"style":198},[1124],{"type":71,"value":495},{"type":65,"tag":104,"props":1126,"children":1128},{"id":1127},"configuration-options",[1129],{"type":71,"value":1130},"Configuration Options",{"type":65,"tag":156,"props":1132,"children":1134},{"id":1133},"core-options",[1135],{"type":71,"value":1136},"Core Options",{"type":65,"tag":1138,"props":1139,"children":1140},"table",{},[1141,1170],{"type":65,"tag":1142,"props":1143,"children":1144},"thead",{},[1145],{"type":65,"tag":1146,"props":1147,"children":1148},"tr",{},[1149,1155,1160,1165],{"type":65,"tag":1150,"props":1151,"children":1152},"th",{},[1153],{"type":71,"value":1154},"Option",{"type":65,"tag":1150,"props":1156,"children":1157},{},[1158],{"type":71,"value":1159},"Type",{"type":65,"tag":1150,"props":1161,"children":1162},{},[1163],{"type":71,"value":1164},"Default",{"type":65,"tag":1150,"props":1166,"children":1167},{},[1168],{"type":71,"value":1169},"Description",{"type":65,"tag":1171,"props":1172,"children":1173},"tbody",{},[1174,1210,1245,1279,1314],{"type":65,"tag":1146,"props":1175,"children":1176},{},[1177,1187,1196,1205],{"type":65,"tag":1178,"props":1179,"children":1180},"td",{},[1181],{"type":65,"tag":74,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":71,"value":1186},"target",{"type":65,"tag":1178,"props":1188,"children":1189},{},[1190],{"type":65,"tag":74,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":71,"value":1195},"'react' | 'solid' | 'vue'",{"type":65,"tag":1178,"props":1197,"children":1198},{},[1199],{"type":65,"tag":74,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":71,"value":1204},"'react'",{"type":65,"tag":1178,"props":1206,"children":1207},{},[1208],{"type":71,"value":1209},"Target framework",{"type":65,"tag":1146,"props":1211,"children":1212},{},[1213,1222,1231,1240],{"type":65,"tag":1178,"props":1214,"children":1215},{},[1216],{"type":65,"tag":74,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":71,"value":1221},"routesDirectory",{"type":65,"tag":1178,"props":1223,"children":1224},{},[1225],{"type":65,"tag":74,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":71,"value":1230},"string",{"type":65,"tag":1178,"props":1232,"children":1233},{},[1234],{"type":65,"tag":74,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":71,"value":1239},"'.\u002Fsrc\u002Froutes'",{"type":65,"tag":1178,"props":1241,"children":1242},{},[1243],{"type":71,"value":1244},"Directory containing route files",{"type":65,"tag":1146,"props":1246,"children":1247},{},[1248,1257,1265,1274],{"type":65,"tag":1178,"props":1249,"children":1250},{},[1251],{"type":65,"tag":74,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":71,"value":1256},"generatedRouteTree",{"type":65,"tag":1178,"props":1258,"children":1259},{},[1260],{"type":65,"tag":74,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":71,"value":1230},{"type":65,"tag":1178,"props":1266,"children":1267},{},[1268],{"type":65,"tag":74,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":71,"value":1273},"'.\u002Fsrc\u002FrouteTree.gen.ts'",{"type":65,"tag":1178,"props":1275,"children":1276},{},[1277],{"type":71,"value":1278},"Path for generated route tree",{"type":65,"tag":1146,"props":1280,"children":1281},{},[1282,1291,1300,1309],{"type":65,"tag":1178,"props":1283,"children":1284},{},[1285],{"type":65,"tag":74,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":71,"value":1290},"autoCodeSplitting",{"type":65,"tag":1178,"props":1292,"children":1293},{},[1294],{"type":65,"tag":74,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":71,"value":1299},"boolean",{"type":65,"tag":1178,"props":1301,"children":1302},{},[1303],{"type":65,"tag":74,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":71,"value":1308},"undefined",{"type":65,"tag":1178,"props":1310,"children":1311},{},[1312],{"type":71,"value":1313},"Enable automatic code splitting",{"type":65,"tag":1146,"props":1315,"children":1316},{},[1317,1326,1334,1343],{"type":65,"tag":1178,"props":1318,"children":1319},{},[1320],{"type":65,"tag":74,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":71,"value":1325},"enableRouteGeneration",{"type":65,"tag":1178,"props":1327,"children":1328},{},[1329],{"type":65,"tag":74,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":71,"value":1299},{"type":65,"tag":1178,"props":1335,"children":1336},{},[1337],{"type":65,"tag":74,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":71,"value":1342},"true",{"type":65,"tag":1178,"props":1344,"children":1345},{},[1346,1348,1354],{"type":71,"value":1347},"Set to ",{"type":65,"tag":74,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":71,"value":1353},"false",{"type":71,"value":1355}," to disable route generation",{"type":65,"tag":156,"props":1357,"children":1359},{"id":1358},"file-convention-options",[1360],{"type":71,"value":1361},"File Convention Options",{"type":65,"tag":1138,"props":1363,"children":1364},{},[1365,1387],{"type":65,"tag":1142,"props":1366,"children":1367},{},[1368],{"type":65,"tag":1146,"props":1369,"children":1370},{},[1371,1375,1379,1383],{"type":65,"tag":1150,"props":1372,"children":1373},{},[1374],{"type":71,"value":1154},{"type":65,"tag":1150,"props":1376,"children":1377},{},[1378],{"type":71,"value":1159},{"type":65,"tag":1150,"props":1380,"children":1381},{},[1382],{"type":71,"value":1164},{"type":65,"tag":1150,"props":1384,"children":1385},{},[1386],{"type":71,"value":1169},{"type":65,"tag":1171,"props":1388,"children":1389},{},[1390,1423,1457,1490,1525],{"type":65,"tag":1146,"props":1391,"children":1392},{},[1393,1402,1410,1418],{"type":65,"tag":1178,"props":1394,"children":1395},{},[1396],{"type":65,"tag":74,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":71,"value":1401},"routeFilePrefix",{"type":65,"tag":1178,"props":1403,"children":1404},{},[1405],{"type":65,"tag":74,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":71,"value":1230},{"type":65,"tag":1178,"props":1411,"children":1412},{},[1413],{"type":65,"tag":74,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":71,"value":1308},{"type":65,"tag":1178,"props":1419,"children":1420},{},[1421],{"type":71,"value":1422},"Prefix filter for route files",{"type":65,"tag":1146,"props":1424,"children":1425},{},[1426,1435,1443,1452],{"type":65,"tag":1178,"props":1427,"children":1428},{},[1429],{"type":65,"tag":74,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":71,"value":1434},"routeFileIgnorePrefix",{"type":65,"tag":1178,"props":1436,"children":1437},{},[1438],{"type":65,"tag":74,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":71,"value":1230},{"type":65,"tag":1178,"props":1444,"children":1445},{},[1446],{"type":65,"tag":74,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":71,"value":1451},"'-'",{"type":65,"tag":1178,"props":1453,"children":1454},{},[1455],{"type":71,"value":1456},"Prefix to exclude files from routing",{"type":65,"tag":1146,"props":1458,"children":1459},{},[1460,1469,1477,1485],{"type":65,"tag":1178,"props":1461,"children":1462},{},[1463],{"type":65,"tag":74,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":71,"value":1468},"routeFileIgnorePattern",{"type":65,"tag":1178,"props":1470,"children":1471},{},[1472],{"type":65,"tag":74,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":71,"value":1230},{"type":65,"tag":1178,"props":1478,"children":1479},{},[1480],{"type":65,"tag":74,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":71,"value":1308},{"type":65,"tag":1178,"props":1486,"children":1487},{},[1488],{"type":71,"value":1489},"Pattern to exclude from routing",{"type":65,"tag":1146,"props":1491,"children":1492},{},[1493,1502,1511,1520],{"type":65,"tag":1178,"props":1494,"children":1495},{},[1496],{"type":65,"tag":74,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":71,"value":1501},"indexToken",{"type":65,"tag":1178,"props":1503,"children":1504},{},[1505],{"type":65,"tag":74,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":71,"value":1510},"string | RegExp | { regex: string; flags?: string }",{"type":65,"tag":1178,"props":1512,"children":1513},{},[1514],{"type":65,"tag":74,"props":1515,"children":1517},{"className":1516},[],[1518],{"type":71,"value":1519},"'index'",{"type":65,"tag":1178,"props":1521,"children":1522},{},[1523],{"type":71,"value":1524},"Token identifying index routes",{"type":65,"tag":1146,"props":1526,"children":1527},{},[1528,1537,1545,1554],{"type":65,"tag":1178,"props":1529,"children":1530},{},[1531],{"type":65,"tag":74,"props":1532,"children":1534},{"className":1533},[],[1535],{"type":71,"value":1536},"routeToken",{"type":65,"tag":1178,"props":1538,"children":1539},{},[1540],{"type":65,"tag":74,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":71,"value":1510},{"type":65,"tag":1178,"props":1546,"children":1547},{},[1548],{"type":65,"tag":74,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":71,"value":1553},"'route'",{"type":65,"tag":1178,"props":1555,"children":1556},{},[1557],{"type":71,"value":1558},"Token identifying route config files",{"type":65,"tag":156,"props":1560,"children":1562},{"id":1561},"code-splitting-options",[1563],{"type":71,"value":1564},"Code Splitting Options",{"type":65,"tag":111,"props":1566,"children":1568},{"className":164,"code":1567,"language":166,"meta":116,"style":116},"tanstackRouter({\n  target: 'react',\n  autoCodeSplitting: true,\n  codeSplittingOptions: {\n    \u002F\u002F Default groupings for all routes\n    defaultBehavior: [['component'], ['errorComponent'], ['notFoundComponent']],\n\n    \u002F\u002F Per-route custom splitting\n    splitBehavior: ({ routeId }) => {\n      if (routeId === '\u002Fdashboard') {\n        \u002F\u002F Keep loader and component together for dashboard\n        return [['loader', 'component'], ['errorComponent']]\n      }\n      \u002F\u002F Return undefined to use defaultBehavior\n    },\n  },\n})\n",[1569],{"type":65,"tag":74,"props":1570,"children":1571},{"__ignoreMap":116},[1572,1588,1616,1636,1652,1660,1752,1759,1767,1804,1849,1857,1927,1935,1943,1951,1960],{"type":65,"tag":122,"props":1573,"children":1574},{"class":124,"line":125},[1575,1580,1584],{"type":65,"tag":122,"props":1576,"children":1577},{"style":321},[1578],{"type":71,"value":1579},"tanstackRouter",{"type":65,"tag":122,"props":1581,"children":1582},{"style":198},[1583],{"type":71,"value":328},{"type":65,"tag":122,"props":1585,"children":1586},{"style":192},[1587],{"type":71,"value":333},{"type":65,"tag":122,"props":1589,"children":1590},{"class":124,"line":182},[1591,1596,1600,1604,1608,1612],{"type":65,"tag":122,"props":1592,"children":1593},{"style":340},[1594],{"type":71,"value":1595},"  target",{"type":65,"tag":122,"props":1597,"children":1598},{"style":192},[1599],{"type":71,"value":348},{"type":65,"tag":122,"props":1601,"children":1602},{"style":192},[1603],{"type":71,"value":216},{"type":65,"tag":122,"props":1605,"children":1606},{"style":135},[1607],{"type":71,"value":35},{"type":65,"tag":122,"props":1609,"children":1610},{"style":192},[1611],{"type":71,"value":405},{"type":65,"tag":122,"props":1613,"children":1614},{"style":192},[1615],{"type":71,"value":410},{"type":65,"tag":122,"props":1617,"children":1618},{"class":124,"line":228},[1619,1624,1628,1632],{"type":65,"tag":122,"props":1620,"children":1621},{"style":340},[1622],{"type":71,"value":1623},"  autoCodeSplitting",{"type":65,"tag":122,"props":1625,"children":1626},{"style":192},[1627],{"type":71,"value":348},{"type":65,"tag":122,"props":1629,"children":1630},{"style":426},[1631],{"type":71,"value":429},{"type":65,"tag":122,"props":1633,"children":1634},{"style":192},[1635],{"type":71,"value":410},{"type":65,"tag":122,"props":1637,"children":1638},{"class":124,"line":259},[1639,1644,1648],{"type":65,"tag":122,"props":1640,"children":1641},{"style":340},[1642],{"type":71,"value":1643},"  codeSplittingOptions",{"type":65,"tag":122,"props":1645,"children":1646},{"style":192},[1647],{"type":71,"value":348},{"type":65,"tag":122,"props":1649,"children":1650},{"style":192},[1651],{"type":71,"value":593},{"type":65,"tag":122,"props":1653,"children":1654},{"class":124,"line":297},[1655],{"type":65,"tag":122,"props":1656,"children":1657},{"style":176},[1658],{"type":71,"value":1659},"    \u002F\u002F Default groupings for all routes\n",{"type":65,"tag":122,"props":1661,"children":1662},{"class":124,"line":307},[1663,1668,1672,1677,1681,1686,1690,1695,1700,1705,1709,1714,1718,1722,1726,1730,1734,1739,1743,1748],{"type":65,"tag":122,"props":1664,"children":1665},{"style":340},[1666],{"type":71,"value":1667},"    defaultBehavior",{"type":65,"tag":122,"props":1669,"children":1670},{"style":192},[1671],{"type":71,"value":348},{"type":65,"tag":122,"props":1673,"children":1674},{"style":198},[1675],{"type":71,"value":1676}," [[",{"type":65,"tag":122,"props":1678,"children":1679},{"style":192},[1680],{"type":71,"value":405},{"type":65,"tag":122,"props":1682,"children":1683},{"style":135},[1684],{"type":71,"value":1685},"component",{"type":65,"tag":122,"props":1687,"children":1688},{"style":192},[1689],{"type":71,"value":405},{"type":65,"tag":122,"props":1691,"children":1692},{"style":198},[1693],{"type":71,"value":1694},"]",{"type":65,"tag":122,"props":1696,"children":1697},{"style":192},[1698],{"type":71,"value":1699},",",{"type":65,"tag":122,"props":1701,"children":1702},{"style":198},[1703],{"type":71,"value":1704}," [",{"type":65,"tag":122,"props":1706,"children":1707},{"style":192},[1708],{"type":71,"value":405},{"type":65,"tag":122,"props":1710,"children":1711},{"style":135},[1712],{"type":71,"value":1713},"errorComponent",{"type":65,"tag":122,"props":1715,"children":1716},{"style":192},[1717],{"type":71,"value":405},{"type":65,"tag":122,"props":1719,"children":1720},{"style":198},[1721],{"type":71,"value":1694},{"type":65,"tag":122,"props":1723,"children":1724},{"style":192},[1725],{"type":71,"value":1699},{"type":65,"tag":122,"props":1727,"children":1728},{"style":198},[1729],{"type":71,"value":1704},{"type":65,"tag":122,"props":1731,"children":1732},{"style":192},[1733],{"type":71,"value":405},{"type":65,"tag":122,"props":1735,"children":1736},{"style":135},[1737],{"type":71,"value":1738},"notFoundComponent",{"type":65,"tag":122,"props":1740,"children":1741},{"style":192},[1742],{"type":71,"value":405},{"type":65,"tag":122,"props":1744,"children":1745},{"style":198},[1746],{"type":71,"value":1747},"]]",{"type":65,"tag":122,"props":1749,"children":1750},{"style":192},[1751],{"type":71,"value":410},{"type":65,"tag":122,"props":1753,"children":1754},{"class":124,"line":336},[1755],{"type":65,"tag":122,"props":1756,"children":1757},{"emptyLinePlaceholder":301},[1758],{"type":71,"value":304},{"type":65,"tag":122,"props":1760,"children":1761},{"class":124,"line":356},[1762],{"type":65,"tag":122,"props":1763,"children":1764},{"style":176},[1765],{"type":71,"value":1766},"    \u002F\u002F Per-route custom splitting\n",{"type":65,"tag":122,"props":1768,"children":1769},{"class":124,"line":365},[1770,1775,1779,1784,1790,1795,1800],{"type":65,"tag":122,"props":1771,"children":1772},{"style":321},[1773],{"type":71,"value":1774},"    splitBehavior",{"type":65,"tag":122,"props":1776,"children":1777},{"style":192},[1778],{"type":71,"value":348},{"type":65,"tag":122,"props":1780,"children":1781},{"style":192},[1782],{"type":71,"value":1783}," ({",{"type":65,"tag":122,"props":1785,"children":1787},{"style":1786},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1788],{"type":71,"value":1789}," routeId",{"type":65,"tag":122,"props":1791,"children":1792},{"style":192},[1793],{"type":71,"value":1794}," })",{"type":65,"tag":122,"props":1796,"children":1797},{"style":522},[1798],{"type":71,"value":1799}," =>",{"type":65,"tag":122,"props":1801,"children":1802},{"style":192},[1803],{"type":71,"value":593},{"type":65,"tag":122,"props":1805,"children":1806},{"class":124,"line":382},[1807,1812,1817,1822,1827,1831,1836,1840,1845],{"type":65,"tag":122,"props":1808,"children":1809},{"style":186},[1810],{"type":71,"value":1811},"      if",{"type":65,"tag":122,"props":1813,"children":1814},{"style":340},[1815],{"type":71,"value":1816}," (",{"type":65,"tag":122,"props":1818,"children":1819},{"style":198},[1820],{"type":71,"value":1821},"routeId",{"type":65,"tag":122,"props":1823,"children":1824},{"style":192},[1825],{"type":71,"value":1826}," ===",{"type":65,"tag":122,"props":1828,"children":1829},{"style":192},[1830],{"type":71,"value":216},{"type":65,"tag":122,"props":1832,"children":1833},{"style":135},[1834],{"type":71,"value":1835},"\u002Fdashboard",{"type":65,"tag":122,"props":1837,"children":1838},{"style":192},[1839],{"type":71,"value":405},{"type":65,"tag":122,"props":1841,"children":1842},{"style":340},[1843],{"type":71,"value":1844},") ",{"type":65,"tag":122,"props":1846,"children":1847},{"style":192},[1848],{"type":71,"value":333},{"type":65,"tag":122,"props":1850,"children":1851},{"class":124,"line":413},[1852],{"type":65,"tag":122,"props":1853,"children":1854},{"style":176},[1855],{"type":71,"value":1856},"        \u002F\u002F Keep loader and component together for dashboard\n",{"type":65,"tag":122,"props":1858,"children":1859},{"class":124,"line":436},[1860,1865,1869,1873,1878,1882,1886,1890,1894,1898,1902,1906,1910,1914,1918,1922],{"type":65,"tag":122,"props":1861,"children":1862},{"style":186},[1863],{"type":71,"value":1864},"        return",{"type":65,"tag":122,"props":1866,"children":1867},{"style":340},[1868],{"type":71,"value":1676},{"type":65,"tag":122,"props":1870,"children":1871},{"style":192},[1872],{"type":71,"value":405},{"type":65,"tag":122,"props":1874,"children":1875},{"style":135},[1876],{"type":71,"value":1877},"loader",{"type":65,"tag":122,"props":1879,"children":1880},{"style":192},[1881],{"type":71,"value":405},{"type":65,"tag":122,"props":1883,"children":1884},{"style":192},[1885],{"type":71,"value":1699},{"type":65,"tag":122,"props":1887,"children":1888},{"style":192},[1889],{"type":71,"value":216},{"type":65,"tag":122,"props":1891,"children":1892},{"style":135},[1893],{"type":71,"value":1685},{"type":65,"tag":122,"props":1895,"children":1896},{"style":192},[1897],{"type":71,"value":405},{"type":65,"tag":122,"props":1899,"children":1900},{"style":340},[1901],{"type":71,"value":1694},{"type":65,"tag":122,"props":1903,"children":1904},{"style":192},[1905],{"type":71,"value":1699},{"type":65,"tag":122,"props":1907,"children":1908},{"style":340},[1909],{"type":71,"value":1704},{"type":65,"tag":122,"props":1911,"children":1912},{"style":192},[1913],{"type":71,"value":405},{"type":65,"tag":122,"props":1915,"children":1916},{"style":135},[1917],{"type":71,"value":1713},{"type":65,"tag":122,"props":1919,"children":1920},{"style":192},[1921],{"type":71,"value":405},{"type":65,"tag":122,"props":1923,"children":1924},{"style":340},[1925],{"type":71,"value":1926},"]]\n",{"type":65,"tag":122,"props":1928,"children":1929},{"class":124,"line":453},[1930],{"type":65,"tag":122,"props":1931,"children":1932},{"style":192},[1933],{"type":71,"value":1934},"      }\n",{"type":65,"tag":122,"props":1936,"children":1937},{"class":124,"line":471},[1938],{"type":65,"tag":122,"props":1939,"children":1940},{"style":176},[1941],{"type":71,"value":1942},"      \u002F\u002F Return undefined to use defaultBehavior\n",{"type":65,"tag":122,"props":1944,"children":1945},{"class":124,"line":484},[1946],{"type":65,"tag":122,"props":1947,"children":1948},{"style":192},[1949],{"type":71,"value":1950},"    },\n",{"type":65,"tag":122,"props":1952,"children":1954},{"class":124,"line":1953},16,[1955],{"type":65,"tag":122,"props":1956,"children":1957},{"style":192},[1958],{"type":71,"value":1959},"  },\n",{"type":65,"tag":122,"props":1961,"children":1963},{"class":124,"line":1962},17,[1964,1968],{"type":65,"tag":122,"props":1965,"children":1966},{"style":192},[1967],{"type":71,"value":490},{"type":65,"tag":122,"props":1969,"children":1970},{"style":198},[1971],{"type":71,"value":495},{"type":65,"tag":156,"props":1973,"children":1975},{"id":1974},"output-options",[1976],{"type":71,"value":1977},"Output Options",{"type":65,"tag":1138,"props":1979,"children":1980},{},[1981,2003],{"type":65,"tag":1142,"props":1982,"children":1983},{},[1984],{"type":65,"tag":1146,"props":1985,"children":1986},{},[1987,1991,1995,1999],{"type":65,"tag":1150,"props":1988,"children":1989},{},[1990],{"type":71,"value":1154},{"type":65,"tag":1150,"props":1992,"children":1993},{},[1994],{"type":71,"value":1159},{"type":65,"tag":1150,"props":1996,"children":1997},{},[1998],{"type":71,"value":1164},{"type":65,"tag":1150,"props":2000,"children":2001},{},[2002],{"type":71,"value":1169},{"type":65,"tag":1171,"props":2004,"children":2005},{},[2006,2041,2074,2107,2140,2174],{"type":65,"tag":1146,"props":2007,"children":2008},{},[2009,2018,2027,2036],{"type":65,"tag":1178,"props":2010,"children":2011},{},[2012],{"type":65,"tag":74,"props":2013,"children":2015},{"className":2014},[],[2016],{"type":71,"value":2017},"quoteStyle",{"type":65,"tag":1178,"props":2019,"children":2020},{},[2021],{"type":65,"tag":74,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":71,"value":2026},"'single' | 'double'",{"type":65,"tag":1178,"props":2028,"children":2029},{},[2030],{"type":65,"tag":74,"props":2031,"children":2033},{"className":2032},[],[2034],{"type":71,"value":2035},"'single'",{"type":65,"tag":1178,"props":2037,"children":2038},{},[2039],{"type":71,"value":2040},"Quote style in generated code",{"type":65,"tag":1146,"props":2042,"children":2043},{},[2044,2053,2061,2069],{"type":65,"tag":1178,"props":2045,"children":2046},{},[2047],{"type":65,"tag":74,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":71,"value":2052},"semicolons",{"type":65,"tag":1178,"props":2054,"children":2055},{},[2056],{"type":65,"tag":74,"props":2057,"children":2059},{"className":2058},[],[2060],{"type":71,"value":1299},{"type":65,"tag":1178,"props":2062,"children":2063},{},[2064],{"type":65,"tag":74,"props":2065,"children":2067},{"className":2066},[],[2068],{"type":71,"value":1353},{"type":65,"tag":1178,"props":2070,"children":2071},{},[2072],{"type":71,"value":2073},"Use semicolons in generated code",{"type":65,"tag":1146,"props":2075,"children":2076},{},[2077,2086,2094,2102],{"type":65,"tag":1178,"props":2078,"children":2079},{},[2080],{"type":65,"tag":74,"props":2081,"children":2083},{"className":2082},[],[2084],{"type":71,"value":2085},"disableTypes",{"type":65,"tag":1178,"props":2087,"children":2088},{},[2089],{"type":65,"tag":74,"props":2090,"children":2092},{"className":2091},[],[2093],{"type":71,"value":1299},{"type":65,"tag":1178,"props":2095,"children":2096},{},[2097],{"type":65,"tag":74,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":71,"value":1353},{"type":65,"tag":1178,"props":2103,"children":2104},{},[2105],{"type":71,"value":2106},"Disable TypeScript types",{"type":65,"tag":1146,"props":2108,"children":2109},{},[2110,2119,2127,2135],{"type":65,"tag":1178,"props":2111,"children":2112},{},[2113],{"type":65,"tag":74,"props":2114,"children":2116},{"className":2115},[],[2117],{"type":71,"value":2118},"disableLogging",{"type":65,"tag":1178,"props":2120,"children":2121},{},[2122],{"type":65,"tag":74,"props":2123,"children":2125},{"className":2124},[],[2126],{"type":71,"value":1299},{"type":65,"tag":1178,"props":2128,"children":2129},{},[2130],{"type":65,"tag":74,"props":2131,"children":2133},{"className":2132},[],[2134],{"type":71,"value":1353},{"type":65,"tag":1178,"props":2136,"children":2137},{},[2138],{"type":71,"value":2139},"Suppress plugin logs",{"type":65,"tag":1146,"props":2141,"children":2142},{},[2143,2152,2161,2169],{"type":65,"tag":1178,"props":2144,"children":2145},{},[2146],{"type":65,"tag":74,"props":2147,"children":2149},{"className":2148},[],[2150],{"type":71,"value":2151},"addExtensions",{"type":65,"tag":1178,"props":2153,"children":2154},{},[2155],{"type":65,"tag":74,"props":2156,"children":2158},{"className":2157},[],[2159],{"type":71,"value":2160},"boolean | string",{"type":65,"tag":1178,"props":2162,"children":2163},{},[2164],{"type":65,"tag":74,"props":2165,"children":2167},{"className":2166},[],[2168],{"type":71,"value":1353},{"type":65,"tag":1178,"props":2170,"children":2171},{},[2172],{"type":71,"value":2173},"Add file extensions to imports",{"type":65,"tag":1146,"props":2175,"children":2176},{},[2177,2186,2194,2202],{"type":65,"tag":1178,"props":2178,"children":2179},{},[2180],{"type":65,"tag":74,"props":2181,"children":2183},{"className":2182},[],[2184],{"type":71,"value":2185},"enableRouteTreeFormatting",{"type":65,"tag":1178,"props":2187,"children":2188},{},[2189],{"type":65,"tag":74,"props":2190,"children":2192},{"className":2191},[],[2193],{"type":71,"value":1299},{"type":65,"tag":1178,"props":2195,"children":2196},{},[2197],{"type":65,"tag":74,"props":2198,"children":2200},{"className":2199},[],[2201],{"type":71,"value":1342},{"type":65,"tag":1178,"props":2203,"children":2204},{},[2205],{"type":71,"value":2206},"Format generated route tree",{"type":65,"tag":156,"props":2208,"children":2210},{"id":2209},"virtual-route-config",[2211],{"type":71,"value":2212},"Virtual Route Config",{"type":65,"tag":111,"props":2214,"children":2216},{"className":164,"code":2215,"language":166,"meta":116,"style":116},"import { routes } from '.\u002Froutes'\n\ntanstackRouter({\n  target: 'react',\n  virtualRouteConfig: routes, \u002F\u002F or '.\u002Froutes.ts'\n})\n",[2217],{"type":65,"tag":74,"props":2218,"children":2219},{"__ignoreMap":116},[2220,2257,2264,2279,2306,2331],{"type":65,"tag":122,"props":2221,"children":2222},{"class":124,"line":125},[2223,2227,2231,2236,2240,2244,2248,2253],{"type":65,"tag":122,"props":2224,"children":2225},{"style":186},[2226],{"type":71,"value":189},{"type":65,"tag":122,"props":2228,"children":2229},{"style":192},[2230],{"type":71,"value":195},{"type":65,"tag":122,"props":2232,"children":2233},{"style":198},[2234],{"type":71,"value":2235}," routes",{"type":65,"tag":122,"props":2237,"children":2238},{"style":192},[2239],{"type":71,"value":206},{"type":65,"tag":122,"props":2241,"children":2242},{"style":186},[2243],{"type":71,"value":211},{"type":65,"tag":122,"props":2245,"children":2246},{"style":192},[2247],{"type":71,"value":216},{"type":65,"tag":122,"props":2249,"children":2250},{"style":135},[2251],{"type":71,"value":2252},".\u002Froutes",{"type":65,"tag":122,"props":2254,"children":2255},{"style":192},[2256],{"type":71,"value":225},{"type":65,"tag":122,"props":2258,"children":2259},{"class":124,"line":182},[2260],{"type":65,"tag":122,"props":2261,"children":2262},{"emptyLinePlaceholder":301},[2263],{"type":71,"value":304},{"type":65,"tag":122,"props":2265,"children":2266},{"class":124,"line":228},[2267,2271,2275],{"type":65,"tag":122,"props":2268,"children":2269},{"style":321},[2270],{"type":71,"value":1579},{"type":65,"tag":122,"props":2272,"children":2273},{"style":198},[2274],{"type":71,"value":328},{"type":65,"tag":122,"props":2276,"children":2277},{"style":192},[2278],{"type":71,"value":333},{"type":65,"tag":122,"props":2280,"children":2281},{"class":124,"line":259},[2282,2286,2290,2294,2298,2302],{"type":65,"tag":122,"props":2283,"children":2284},{"style":340},[2285],{"type":71,"value":1595},{"type":65,"tag":122,"props":2287,"children":2288},{"style":192},[2289],{"type":71,"value":348},{"type":65,"tag":122,"props":2291,"children":2292},{"style":192},[2293],{"type":71,"value":216},{"type":65,"tag":122,"props":2295,"children":2296},{"style":135},[2297],{"type":71,"value":35},{"type":65,"tag":122,"props":2299,"children":2300},{"style":192},[2301],{"type":71,"value":405},{"type":65,"tag":122,"props":2303,"children":2304},{"style":192},[2305],{"type":71,"value":410},{"type":65,"tag":122,"props":2307,"children":2308},{"class":124,"line":297},[2309,2314,2318,2322,2326],{"type":65,"tag":122,"props":2310,"children":2311},{"style":340},[2312],{"type":71,"value":2313},"  virtualRouteConfig",{"type":65,"tag":122,"props":2315,"children":2316},{"style":192},[2317],{"type":71,"value":348},{"type":65,"tag":122,"props":2319,"children":2320},{"style":198},[2321],{"type":71,"value":2235},{"type":65,"tag":122,"props":2323,"children":2324},{"style":192},[2325],{"type":71,"value":1699},{"type":65,"tag":122,"props":2327,"children":2328},{"style":176},[2329],{"type":71,"value":2330}," \u002F\u002F or '.\u002Froutes.ts'\n",{"type":65,"tag":122,"props":2332,"children":2333},{"class":124,"line":307},[2334,2338],{"type":65,"tag":122,"props":2335,"children":2336},{"style":192},[2337],{"type":71,"value":490},{"type":65,"tag":122,"props":2339,"children":2340},{"style":198},[2341],{"type":71,"value":495},{"type":65,"tag":104,"props":2343,"children":2345},{"id":2344},"how-it-works",[2346],{"type":71,"value":2347},"How It Works",{"type":65,"tag":83,"props":2349,"children":2350},{},[2351],{"type":71,"value":2352},"The composed plugin assembles up to 3 sub-plugins:",{"type":65,"tag":2354,"props":2355,"children":2356},"ol",{},[2357,2374,2392],{"type":65,"tag":2358,"props":2359,"children":2360},"li",{},[2361,2366,2368],{"type":65,"tag":96,"props":2362,"children":2363},{},[2364],{"type":71,"value":2365},"Route Generator",{"type":71,"value":2367}," (always) — Watches route files and generates ",{"type":65,"tag":74,"props":2369,"children":2371},{"className":2370},[],[2372],{"type":71,"value":2373},"routeTree.gen.ts",{"type":65,"tag":2358,"props":2375,"children":2376},{},[2377,2382,2384,2390],{"type":65,"tag":96,"props":2378,"children":2379},{},[2380],{"type":71,"value":2381},"Code Splitter",{"type":71,"value":2383}," (when ",{"type":65,"tag":74,"props":2385,"children":2387},{"className":2386},[],[2388],{"type":71,"value":2389},"autoCodeSplitting: true",{"type":71,"value":2391},") — Splits route files into lazy-loaded chunks using virtual modules",{"type":65,"tag":2358,"props":2393,"children":2394},{},[2395,2400],{"type":65,"tag":96,"props":2396,"children":2397},{},[2398],{"type":71,"value":2399},"HMR",{"type":71,"value":2401}," (dev mode, when code splitter is off) — Hot-reloads route changes without full refresh",{"type":65,"tag":104,"props":2403,"children":2405},{"id":2404},"route-refactor-workflow",[2406],{"type":71,"value":2407},"Route Refactor Workflow",{"type":65,"tag":83,"props":2409,"children":2410},{},[2411],{"type":71,"value":2412},"When moving, renaming, adding, or deleting file routes:",{"type":65,"tag":2354,"props":2414,"children":2415},{},[2416,2435,2448,2460,2472],{"type":65,"tag":2358,"props":2417,"children":2418},{},[2419,2421,2426,2428,2434],{"type":71,"value":2420},"Change the source files under ",{"type":65,"tag":74,"props":2422,"children":2424},{"className":2423},[],[2425],{"type":71,"value":1221},{"type":71,"value":2427},". Keep the exported route identifier named ",{"type":65,"tag":74,"props":2429,"children":2431},{"className":2430},[],[2432],{"type":71,"value":2433},"Route",{"type":71,"value":998},{"type":65,"tag":2358,"props":2436,"children":2437},{},[2438,2440,2446],{"type":71,"value":2439},"Let the bundler plugin regenerate the tree, or run ",{"type":65,"tag":74,"props":2441,"children":2443},{"className":2442},[],[2444],{"type":71,"value":2445},"pnpm exec tsr generate",{"type":71,"value":2447}," when the project uses the CLI.",{"type":65,"tag":2358,"props":2449,"children":2450},{},[2451,2453,2458],{"type":71,"value":2452},"Inspect the generated diff for the expected route IDs, parents, paths, and imports. Never repair ",{"type":65,"tag":74,"props":2454,"children":2456},{"className":2455},[],[2457],{"type":71,"value":2373},{"type":71,"value":2459}," by hand.",{"type":65,"tag":2358,"props":2461,"children":2462},{},[2463,2465,2470],{"type":71,"value":2464},"Update links, redirects, ",{"type":65,"tag":74,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":71,"value":243},{"type":71,"value":2471}," narrowing, params, preload calls, and tests that reference the old route.",{"type":65,"tag":2358,"props":2473,"children":2474},{},[2475],{"type":71,"value":2476},"Run route-generation tests, type tests, and a production build. A passing editor typecheck does not prove the plugin generated or split the new route correctly.",{"type":65,"tag":83,"props":2478,"children":2479},{},[2480,2482,2487],{"type":71,"value":2481},"Commit ",{"type":65,"tag":74,"props":2483,"children":2485},{"className":2484},[],[2486],{"type":71,"value":2373},{"type":71,"value":2488},"; it is generated source used by the application at runtime.",{"type":65,"tag":104,"props":2490,"children":2492},{"id":2491},"individual-plugin-exports",[2493],{"type":71,"value":2494},"Individual Plugin Exports",{"type":65,"tag":83,"props":2496,"children":2497},{},[2498],{"type":71,"value":2499},"For advanced use, each sub-plugin is exported separately from the Vite entry:",{"type":65,"tag":111,"props":2501,"children":2503},{"className":164,"code":2502,"language":166,"meta":116,"style":116},"import {\n  tanstackRouter, \u002F\u002F Composed (default)\n  tanstackRouterGenerator, \u002F\u002F Generator only\n  tanStackRouterCodeSplitter, \u002F\u002F Code splitter only\n} from '@tanstack\u002Frouter-plugin\u002Fvite'\n",[2504],{"type":65,"tag":74,"props":2505,"children":2506},{"__ignoreMap":116},[2507,2518,2535,2552,2569],{"type":65,"tag":122,"props":2508,"children":2509},{"class":124,"line":125},[2510,2514],{"type":65,"tag":122,"props":2511,"children":2512},{"style":186},[2513],{"type":71,"value":189},{"type":65,"tag":122,"props":2515,"children":2516},{"style":192},[2517],{"type":71,"value":593},{"type":65,"tag":122,"props":2519,"children":2520},{"class":124,"line":182},[2521,2526,2530],{"type":65,"tag":122,"props":2522,"children":2523},{"style":198},[2524],{"type":71,"value":2525},"  tanstackRouter",{"type":65,"tag":122,"props":2527,"children":2528},{"style":192},[2529],{"type":71,"value":1699},{"type":65,"tag":122,"props":2531,"children":2532},{"style":176},[2533],{"type":71,"value":2534}," \u002F\u002F Composed (default)\n",{"type":65,"tag":122,"props":2536,"children":2537},{"class":124,"line":228},[2538,2543,2547],{"type":65,"tag":122,"props":2539,"children":2540},{"style":198},[2541],{"type":71,"value":2542},"  tanstackRouterGenerator",{"type":65,"tag":122,"props":2544,"children":2545},{"style":192},[2546],{"type":71,"value":1699},{"type":65,"tag":122,"props":2548,"children":2549},{"style":176},[2550],{"type":71,"value":2551}," \u002F\u002F Generator only\n",{"type":65,"tag":122,"props":2553,"children":2554},{"class":124,"line":259},[2555,2560,2564],{"type":65,"tag":122,"props":2556,"children":2557},{"style":198},[2558],{"type":71,"value":2559},"  tanStackRouterCodeSplitter",{"type":65,"tag":122,"props":2561,"children":2562},{"style":192},[2563],{"type":71,"value":1699},{"type":65,"tag":122,"props":2565,"children":2566},{"style":176},[2567],{"type":71,"value":2568}," \u002F\u002F Code splitter only\n",{"type":65,"tag":122,"props":2570,"children":2571},{"class":124,"line":297},[2572,2576,2580,2584,2588],{"type":65,"tag":122,"props":2573,"children":2574},{"style":192},[2575],{"type":71,"value":490},{"type":65,"tag":122,"props":2577,"children":2578},{"style":186},[2579],{"type":71,"value":211},{"type":65,"tag":122,"props":2581,"children":2582},{"style":192},[2583],{"type":71,"value":216},{"type":65,"tag":122,"props":2585,"children":2586},{"style":135},[2587],{"type":71,"value":290},{"type":65,"tag":122,"props":2589,"children":2590},{"style":192},[2591],{"type":71,"value":225},{"type":65,"tag":104,"props":2593,"children":2595},{"id":2594},"common-mistakes",[2596],{"type":71,"value":2597},"Common Mistakes",{"type":65,"tag":156,"props":2599,"children":2601},{"id":2600},"_1-critical-wrong-plugin-order-in-vite-config",[2602],{"type":71,"value":2603},"1. CRITICAL: Wrong plugin order in Vite config",{"type":65,"tag":83,"props":2605,"children":2606},{},[2607],{"type":71,"value":2608},"The router plugin must come before the framework plugin. Otherwise, route generation and code splitting fail silently.",{"type":65,"tag":111,"props":2610,"children":2612},{"className":164,"code":2611,"language":166,"meta":116,"style":116},"\u002F\u002F WRONG — react() before tanstackRouter()\nplugins: [react(), tanstackRouter({ target: 'react' })]\n\n\u002F\u002F CORRECT — tanstackRouter() first\nplugins: [tanstackRouter({ target: 'react' }), react()]\n",[2613],{"type":65,"tag":74,"props":2614,"children":2615},{"__ignoreMap":116},[2616,2624,2695,2702,2710],{"type":65,"tag":122,"props":2617,"children":2618},{"class":124,"line":125},[2619],{"type":65,"tag":122,"props":2620,"children":2621},{"style":176},[2622],{"type":71,"value":2623},"\u002F\u002F WRONG — react() before tanstackRouter()\n",{"type":65,"tag":122,"props":2625,"children":2626},{"class":124,"line":182},[2627,2632,2636,2640,2644,2648,2652,2656,2660,2665,2670,2674,2678,2682,2686,2690],{"type":65,"tag":122,"props":2628,"children":2629},{"style":129},[2630],{"type":71,"value":2631},"plugins",{"type":65,"tag":122,"props":2633,"children":2634},{"style":192},[2635],{"type":71,"value":348},{"type":65,"tag":122,"props":2637,"children":2638},{"style":198},[2639],{"type":71,"value":1704},{"type":65,"tag":122,"props":2641,"children":2642},{"style":321},[2643],{"type":71,"value":35},{"type":65,"tag":122,"props":2645,"children":2646},{"style":198},[2647],{"type":71,"value":464},{"type":65,"tag":122,"props":2649,"children":2650},{"style":192},[2651],{"type":71,"value":1699},{"type":65,"tag":122,"props":2653,"children":2654},{"style":321},[2655],{"type":71,"value":273},{"type":65,"tag":122,"props":2657,"children":2658},{"style":198},[2659],{"type":71,"value":328},{"type":65,"tag":122,"props":2661,"children":2662},{"style":192},[2663],{"type":71,"value":2664},"{",{"type":65,"tag":122,"props":2666,"children":2667},{"style":340},[2668],{"type":71,"value":2669}," target",{"type":65,"tag":122,"props":2671,"children":2672},{"style":192},[2673],{"type":71,"value":348},{"type":65,"tag":122,"props":2675,"children":2676},{"style":192},[2677],{"type":71,"value":216},{"type":65,"tag":122,"props":2679,"children":2680},{"style":135},[2681],{"type":71,"value":35},{"type":65,"tag":122,"props":2683,"children":2684},{"style":192},[2685],{"type":71,"value":405},{"type":65,"tag":122,"props":2687,"children":2688},{"style":192},[2689],{"type":71,"value":206},{"type":65,"tag":122,"props":2691,"children":2692},{"style":198},[2693],{"type":71,"value":2694},")]\n",{"type":65,"tag":122,"props":2696,"children":2697},{"class":124,"line":228},[2698],{"type":65,"tag":122,"props":2699,"children":2700},{"emptyLinePlaceholder":301},[2701],{"type":71,"value":304},{"type":65,"tag":122,"props":2703,"children":2704},{"class":124,"line":259},[2705],{"type":65,"tag":122,"props":2706,"children":2707},{"style":176},[2708],{"type":71,"value":2709},"\u002F\u002F CORRECT — tanstackRouter() first\n",{"type":65,"tag":122,"props":2711,"children":2712},{"class":124,"line":297},[2713,2717,2721,2725,2729,2733,2737,2741,2745,2749,2753,2757,2761,2765,2769,2774],{"type":65,"tag":122,"props":2714,"children":2715},{"style":129},[2716],{"type":71,"value":2631},{"type":65,"tag":122,"props":2718,"children":2719},{"style":192},[2720],{"type":71,"value":348},{"type":65,"tag":122,"props":2722,"children":2723},{"style":198},[2724],{"type":71,"value":1704},{"type":65,"tag":122,"props":2726,"children":2727},{"style":321},[2728],{"type":71,"value":1579},{"type":65,"tag":122,"props":2730,"children":2731},{"style":198},[2732],{"type":71,"value":328},{"type":65,"tag":122,"props":2734,"children":2735},{"style":192},[2736],{"type":71,"value":2664},{"type":65,"tag":122,"props":2738,"children":2739},{"style":340},[2740],{"type":71,"value":2669},{"type":65,"tag":122,"props":2742,"children":2743},{"style":192},[2744],{"type":71,"value":348},{"type":65,"tag":122,"props":2746,"children":2747},{"style":192},[2748],{"type":71,"value":216},{"type":65,"tag":122,"props":2750,"children":2751},{"style":135},[2752],{"type":71,"value":35},{"type":65,"tag":122,"props":2754,"children":2755},{"style":192},[2756],{"type":71,"value":405},{"type":65,"tag":122,"props":2758,"children":2759},{"style":192},[2760],{"type":71,"value":206},{"type":65,"tag":122,"props":2762,"children":2763},{"style":198},[2764],{"type":71,"value":81},{"type":65,"tag":122,"props":2766,"children":2767},{"style":192},[2768],{"type":71,"value":1699},{"type":65,"tag":122,"props":2770,"children":2771},{"style":321},[2772],{"type":71,"value":2773}," react",{"type":65,"tag":122,"props":2775,"children":2776},{"style":198},[2777],{"type":71,"value":2778},"()]\n",{"type":65,"tag":156,"props":2780,"children":2782},{"id":2781},"_2-high-missing-target-option-for-non-react-frameworks",[2783],{"type":71,"value":2784},"2. HIGH: Missing target option for non-React frameworks",{"type":65,"tag":83,"props":2786,"children":2787},{},[2788,2790,2795,2797,2802],{"type":71,"value":2789},"The ",{"type":65,"tag":74,"props":2791,"children":2793},{"className":2792},[],[2794],{"type":71,"value":1186},{"type":71,"value":2796}," defaults to ",{"type":65,"tag":74,"props":2798,"children":2800},{"className":2799},[],[2801],{"type":71,"value":1204},{"type":71,"value":2803},". For Solid or Vue, you must set it explicitly.",{"type":65,"tag":111,"props":2805,"children":2807},{"className":164,"code":2806,"language":166,"meta":116,"style":116},"\u002F\u002F WRONG for Solid — generates React imports\ntanstackRouter({ autoCodeSplitting: true })\n\n\u002F\u002F CORRECT for Solid\ntanstackRouter({ target: 'solid', autoCodeSplitting: true })\n",[2808],{"type":65,"tag":74,"props":2809,"children":2810},{"__ignoreMap":116},[2811,2819,2855,2862,2870],{"type":65,"tag":122,"props":2812,"children":2813},{"class":124,"line":125},[2814],{"type":65,"tag":122,"props":2815,"children":2816},{"style":176},[2817],{"type":71,"value":2818},"\u002F\u002F WRONG for Solid — generates React imports\n",{"type":65,"tag":122,"props":2820,"children":2821},{"class":124,"line":182},[2822,2826,2830,2834,2839,2843,2847,2851],{"type":65,"tag":122,"props":2823,"children":2824},{"style":321},[2825],{"type":71,"value":1579},{"type":65,"tag":122,"props":2827,"children":2828},{"style":198},[2829],{"type":71,"value":328},{"type":65,"tag":122,"props":2831,"children":2832},{"style":192},[2833],{"type":71,"value":2664},{"type":65,"tag":122,"props":2835,"children":2836},{"style":340},[2837],{"type":71,"value":2838}," autoCodeSplitting",{"type":65,"tag":122,"props":2840,"children":2841},{"style":192},[2842],{"type":71,"value":348},{"type":65,"tag":122,"props":2844,"children":2845},{"style":426},[2846],{"type":71,"value":429},{"type":65,"tag":122,"props":2848,"children":2849},{"style":192},[2850],{"type":71,"value":206},{"type":65,"tag":122,"props":2852,"children":2853},{"style":198},[2854],{"type":71,"value":495},{"type":65,"tag":122,"props":2856,"children":2857},{"class":124,"line":228},[2858],{"type":65,"tag":122,"props":2859,"children":2860},{"emptyLinePlaceholder":301},[2861],{"type":71,"value":304},{"type":65,"tag":122,"props":2863,"children":2864},{"class":124,"line":259},[2865],{"type":65,"tag":122,"props":2866,"children":2867},{"style":176},[2868],{"type":71,"value":2869},"\u002F\u002F CORRECT for Solid\n",{"type":65,"tag":122,"props":2871,"children":2872},{"class":124,"line":297},[2873,2877,2881,2885,2889,2893,2897,2902,2906,2910,2914,2918,2922,2926],{"type":65,"tag":122,"props":2874,"children":2875},{"style":321},[2876],{"type":71,"value":1579},{"type":65,"tag":122,"props":2878,"children":2879},{"style":198},[2880],{"type":71,"value":328},{"type":65,"tag":122,"props":2882,"children":2883},{"style":192},[2884],{"type":71,"value":2664},{"type":65,"tag":122,"props":2886,"children":2887},{"style":340},[2888],{"type":71,"value":2669},{"type":65,"tag":122,"props":2890,"children":2891},{"style":192},[2892],{"type":71,"value":348},{"type":65,"tag":122,"props":2894,"children":2895},{"style":192},[2896],{"type":71,"value":216},{"type":65,"tag":122,"props":2898,"children":2899},{"style":135},[2900],{"type":71,"value":2901},"solid",{"type":65,"tag":122,"props":2903,"children":2904},{"style":192},[2905],{"type":71,"value":405},{"type":65,"tag":122,"props":2907,"children":2908},{"style":192},[2909],{"type":71,"value":1699},{"type":65,"tag":122,"props":2911,"children":2912},{"style":340},[2913],{"type":71,"value":2838},{"type":65,"tag":122,"props":2915,"children":2916},{"style":192},[2917],{"type":71,"value":348},{"type":65,"tag":122,"props":2919,"children":2920},{"style":426},[2921],{"type":71,"value":429},{"type":65,"tag":122,"props":2923,"children":2924},{"style":192},[2925],{"type":71,"value":206},{"type":65,"tag":122,"props":2927,"children":2928},{"style":198},[2929],{"type":71,"value":495},{"type":65,"tag":156,"props":2931,"children":2933},{"id":2932},"_3-medium-confusing-autocodesplitting-with-manual-lazy-routes",[2934],{"type":71,"value":2935},"3. MEDIUM: Confusing autoCodeSplitting with manual lazy routes",{"type":65,"tag":83,"props":2937,"children":2938},{},[2939,2941,2946,2948,2954,2956,2962],{"type":71,"value":2940},"When ",{"type":65,"tag":74,"props":2942,"children":2944},{"className":2943},[],[2945],{"type":71,"value":1290},{"type":71,"value":2947}," is enabled, the plugin handles splitting automatically. You do NOT need manual ",{"type":65,"tag":74,"props":2949,"children":2951},{"className":2950},[],[2952],{"type":71,"value":2953},"createLazyRoute",{"type":71,"value":2955}," or ",{"type":65,"tag":74,"props":2957,"children":2959},{"className":2958},[],[2960],{"type":71,"value":2961},"lazyRouteComponent",{"type":71,"value":2963}," calls — the plugin transforms your route files at build time.",{"type":65,"tag":111,"props":2965,"children":2969},{"className":2966,"code":2967,"language":2968,"meta":116,"style":116},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F WRONG — manual lazy loading with autoCodeSplitting enabled\nconst LazyAbout = lazyRouteComponent(() => import('.\u002Fabout'))\n\n\u002F\u002F CORRECT — just write normal route files, plugin handles splitting\n\u002F\u002F src\u002Froutes\u002Fabout.tsx\nexport const Route = createFileRoute('\u002Fabout')({\n  component: AboutPage,\n})\n\nfunction AboutPage() {\n  return \u003Ch1>About\u003C\u002Fh1>\n}\n","tsx",[2970],{"type":65,"tag":74,"props":2971,"children":2972},{"__ignoreMap":116},[2973,2981,3042,3049,3057,3065,3117,3138,3149,3156,3176,3217],{"type":65,"tag":122,"props":2974,"children":2975},{"class":124,"line":125},[2976],{"type":65,"tag":122,"props":2977,"children":2978},{"style":176},[2979],{"type":71,"value":2980},"\u002F\u002F WRONG — manual lazy loading with autoCodeSplitting enabled\n",{"type":65,"tag":122,"props":2982,"children":2983},{"class":124,"line":182},[2984,2988,2993,2998,3003,3007,3011,3015,3020,3024,3028,3033,3037],{"type":65,"tag":122,"props":2985,"children":2986},{"style":522},[2987],{"type":71,"value":525},{"type":65,"tag":122,"props":2989,"children":2990},{"style":198},[2991],{"type":71,"value":2992}," LazyAbout ",{"type":65,"tag":122,"props":2994,"children":2995},{"style":192},[2996],{"type":71,"value":2997},"=",{"type":65,"tag":122,"props":2999,"children":3000},{"style":321},[3001],{"type":71,"value":3002}," lazyRouteComponent",{"type":65,"tag":122,"props":3004,"children":3005},{"style":198},[3006],{"type":71,"value":328},{"type":65,"tag":122,"props":3008,"children":3009},{"style":192},[3010],{"type":71,"value":464},{"type":65,"tag":122,"props":3012,"children":3013},{"style":522},[3014],{"type":71,"value":1799},{"type":65,"tag":122,"props":3016,"children":3017},{"style":192},[3018],{"type":71,"value":3019}," import",{"type":65,"tag":122,"props":3021,"children":3022},{"style":198},[3023],{"type":71,"value":328},{"type":65,"tag":122,"props":3025,"children":3026},{"style":192},[3027],{"type":71,"value":405},{"type":65,"tag":122,"props":3029,"children":3030},{"style":135},[3031],{"type":71,"value":3032},".\u002Fabout",{"type":65,"tag":122,"props":3034,"children":3035},{"style":192},[3036],{"type":71,"value":405},{"type":65,"tag":122,"props":3038,"children":3039},{"style":198},[3040],{"type":71,"value":3041},"))\n",{"type":65,"tag":122,"props":3043,"children":3044},{"class":124,"line":228},[3045],{"type":65,"tag":122,"props":3046,"children":3047},{"emptyLinePlaceholder":301},[3048],{"type":71,"value":304},{"type":65,"tag":122,"props":3050,"children":3051},{"class":124,"line":259},[3052],{"type":65,"tag":122,"props":3053,"children":3054},{"style":176},[3055],{"type":71,"value":3056},"\u002F\u002F CORRECT — just write normal route files, plugin handles splitting\n",{"type":65,"tag":122,"props":3058,"children":3059},{"class":124,"line":297},[3060],{"type":65,"tag":122,"props":3061,"children":3062},{"style":176},[3063],{"type":71,"value":3064},"\u002F\u002F src\u002Froutes\u002Fabout.tsx\n",{"type":65,"tag":122,"props":3066,"children":3067},{"class":124,"line":307},[3068,3072,3077,3082,3086,3091,3095,3099,3104,3108,3113],{"type":65,"tag":122,"props":3069,"children":3070},{"style":186},[3071],{"type":71,"value":313},{"type":65,"tag":122,"props":3073,"children":3074},{"style":522},[3075],{"type":71,"value":3076}," const",{"type":65,"tag":122,"props":3078,"children":3079},{"style":198},[3080],{"type":71,"value":3081}," Route ",{"type":65,"tag":122,"props":3083,"children":3084},{"style":192},[3085],{"type":71,"value":2997},{"type":65,"tag":122,"props":3087,"children":3088},{"style":321},[3089],{"type":71,"value":3090}," createFileRoute",{"type":65,"tag":122,"props":3092,"children":3093},{"style":198},[3094],{"type":71,"value":328},{"type":65,"tag":122,"props":3096,"children":3097},{"style":192},[3098],{"type":71,"value":405},{"type":65,"tag":122,"props":3100,"children":3101},{"style":135},[3102],{"type":71,"value":3103},"\u002Fabout",{"type":65,"tag":122,"props":3105,"children":3106},{"style":192},[3107],{"type":71,"value":405},{"type":65,"tag":122,"props":3109,"children":3110},{"style":198},[3111],{"type":71,"value":3112},")(",{"type":65,"tag":122,"props":3114,"children":3115},{"style":192},[3116],{"type":71,"value":333},{"type":65,"tag":122,"props":3118,"children":3119},{"class":124,"line":336},[3120,3125,3129,3134],{"type":65,"tag":122,"props":3121,"children":3122},{"style":340},[3123],{"type":71,"value":3124},"  component",{"type":65,"tag":122,"props":3126,"children":3127},{"style":192},[3128],{"type":71,"value":348},{"type":65,"tag":122,"props":3130,"children":3131},{"style":198},[3132],{"type":71,"value":3133}," AboutPage",{"type":65,"tag":122,"props":3135,"children":3136},{"style":192},[3137],{"type":71,"value":410},{"type":65,"tag":122,"props":3139,"children":3140},{"class":124,"line":356},[3141,3145],{"type":65,"tag":122,"props":3142,"children":3143},{"style":192},[3144],{"type":71,"value":490},{"type":65,"tag":122,"props":3146,"children":3147},{"style":198},[3148],{"type":71,"value":495},{"type":65,"tag":122,"props":3150,"children":3151},{"class":124,"line":365},[3152],{"type":65,"tag":122,"props":3153,"children":3154},{"emptyLinePlaceholder":301},[3155],{"type":71,"value":304},{"type":65,"tag":122,"props":3157,"children":3158},{"class":124,"line":382},[3159,3164,3168,3172],{"type":65,"tag":122,"props":3160,"children":3161},{"style":522},[3162],{"type":71,"value":3163},"function",{"type":65,"tag":122,"props":3165,"children":3166},{"style":321},[3167],{"type":71,"value":3133},{"type":65,"tag":122,"props":3169,"children":3170},{"style":192},[3171],{"type":71,"value":464},{"type":65,"tag":122,"props":3173,"children":3174},{"style":192},[3175],{"type":71,"value":593},{"type":65,"tag":122,"props":3177,"children":3178},{"class":124,"line":413},[3179,3184,3189,3193,3198,3203,3208,3212],{"type":65,"tag":122,"props":3180,"children":3181},{"style":186},[3182],{"type":71,"value":3183},"  return",{"type":65,"tag":122,"props":3185,"children":3186},{"style":192},[3187],{"type":71,"value":3188}," \u003C",{"type":65,"tag":122,"props":3190,"children":3191},{"style":340},[3192],{"type":71,"value":66},{"type":65,"tag":122,"props":3194,"children":3195},{"style":192},[3196],{"type":71,"value":3197},">",{"type":65,"tag":122,"props":3199,"children":3200},{"style":198},[3201],{"type":71,"value":3202},"About",{"type":65,"tag":122,"props":3204,"children":3205},{"style":192},[3206],{"type":71,"value":3207},"\u003C\u002F",{"type":65,"tag":122,"props":3209,"children":3210},{"style":340},[3211],{"type":71,"value":66},{"type":65,"tag":122,"props":3213,"children":3214},{"style":192},[3215],{"type":71,"value":3216},">\n",{"type":65,"tag":122,"props":3218,"children":3219},{"class":124,"line":436},[3220],{"type":65,"tag":122,"props":3221,"children":3222},{"style":192},[3223],{"type":71,"value":703},{"type":65,"tag":156,"props":3225,"children":3227},{"id":3226},"_4-high-editing-the-generated-route-tree",[3228],{"type":71,"value":3229},"4. HIGH: Editing the generated route tree",{"type":65,"tag":83,"props":3231,"children":3232},{},[3233,3235,3240],{"type":71,"value":3234},"Changes to ",{"type":65,"tag":74,"props":3236,"children":3238},{"className":3237},[],[3239],{"type":71,"value":2373},{"type":71,"value":3241}," are overwritten and can leave source routes, generated types, and runtime routing out of sync. Fix route filenames or plugin configuration, regenerate, and verify the generated diff instead.",{"type":65,"tag":104,"props":3243,"children":3245},{"id":3244},"cross-references",[3246],{"type":71,"value":3247},"Cross-References",{"type":65,"tag":3249,"props":3250,"children":3251},"ul",{},[3252,3264],{"type":65,"tag":2358,"props":3253,"children":3254},{},[3255,3262],{"type":65,"tag":3256,"props":3257,"children":3259},"a",{"href":3258},"..\u002F..\u002F..\u002Frouter-core\u002Fskills\u002Frouter-core\u002Fcode-splitting\u002FSKILL.md",[3260],{"type":71,"value":3261},"router-core\u002Fcode-splitting",{"type":71,"value":3263}," — manual code splitting concepts",{"type":65,"tag":2358,"props":3265,"children":3266},{},[3267,3273],{"type":65,"tag":3256,"props":3268,"children":3270},{"href":3269},"..\u002F..\u002F..\u002Fvirtual-file-routes\u002Fskills\u002Fvirtual-file-routes\u002FSKILL.md",[3271],{"type":71,"value":3272},"virtual-file-routes",{"type":71,"value":3274}," — programmatic route trees",{"type":65,"tag":3276,"props":3277,"children":3278},"style",{},[3279],{"type":71,"value":3280},"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":3282,"total":3385},[3283,3297,3312,3328,3341,3360,3371],{"slug":3284,"name":3284,"fn":3285,"description":3286,"org":3287,"tags":3288,"stars":26,"repoUrl":27,"updatedAt":3296},"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},[3289,3292,3293,3294,3295],{"name":3290,"slug":3291,"type":15},"Auth","auth",{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:07.639032",{"slug":3298,"name":3298,"fn":3299,"description":3300,"org":3301,"tags":3302,"stars":26,"repoUrl":27,"updatedAt":3311},"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},[3303,3304,3307,3310],{"name":3290,"slug":3291,"type":15},{"name":3305,"slug":3306,"type":15},"OAuth","oauth",{"name":3308,"slug":3309,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":3313,"name":3313,"fn":3314,"description":3315,"org":3316,"tags":3317,"stars":26,"repoUrl":27,"updatedAt":3327},"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},[3318,3321,3322,3325,3326],{"name":3319,"slug":3320,"type":15},"Engineering","engineering",{"name":24,"slug":25,"type":15},{"name":3323,"slug":3324,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:11.494406",{"slug":3329,"name":3329,"fn":3330,"description":3331,"org":3332,"tags":3333,"stars":26,"repoUrl":27,"updatedAt":3340},"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},[3334,3337,3338,3339],{"name":3335,"slug":3336,"type":15},"Caching","caching",{"name":3323,"slug":3324,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:26:54.487943",{"slug":3342,"name":3342,"fn":3343,"description":3344,"org":3345,"tags":3346,"stars":26,"repoUrl":27,"updatedAt":3359},"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},[3347,3350,3352,3355,3356],{"name":3348,"slug":3349,"type":15},"Cloudflare","cloudflare",{"name":3351,"slug":3342,"type":15},"Deployment",{"name":3353,"slug":3354,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":3357,"slug":3358,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":3361,"name":3361,"fn":3362,"description":3363,"org":3364,"tags":3365,"stars":26,"repoUrl":27,"updatedAt":3370},"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},[3366,3369],{"name":3367,"slug":3368,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":3372,"name":3372,"fn":3373,"description":3374,"org":3375,"tags":3376,"stars":26,"repoUrl":27,"updatedAt":3384},"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},[3377,3380,3381,3383],{"name":3378,"slug":3379,"type":15},"Backend","backend",{"name":24,"slug":25,"type":15},{"name":3382,"slug":3372,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019",30,{"items":3387,"total":3524},[3388,3402,3414,3426,3439,3451,3461,3471,3484,3494,3505,3515],{"slug":3389,"name":3389,"fn":3390,"description":3391,"org":3392,"tags":3393,"stars":3399,"repoUrl":3400,"updatedAt":3401},"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},[3394,3397,3398],{"name":3395,"slug":3396,"type":15},"Data Analysis","data-analysis",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":3403,"name":3403,"fn":3404,"description":3405,"org":3406,"tags":3407,"stars":3399,"repoUrl":3400,"updatedAt":3413},"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},[3408,3411,3412],{"name":3409,"slug":3410,"type":15},"Debugging","debugging",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":3415,"name":3415,"fn":3416,"description":3417,"org":3418,"tags":3419,"stars":3399,"repoUrl":3400,"updatedAt":3425},"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},[3420,3421,3422],{"name":3395,"slug":3396,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":3427,"name":3427,"fn":3428,"description":3429,"org":3430,"tags":3431,"stars":3399,"repoUrl":3400,"updatedAt":3438},"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},[3432,3435,3436,3437],{"name":3433,"slug":3434,"type":15},"Data Pipeline","data-pipeline",{"name":24,"slug":25,"type":15},{"name":3323,"slug":3324,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":3440,"name":3440,"fn":3441,"description":3442,"org":3443,"tags":3444,"stars":3399,"repoUrl":3400,"updatedAt":3450},"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},[3445,3448,3449],{"name":3446,"slug":3447,"type":15},"Data Visualization","data-visualization",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":3452,"name":3452,"fn":3453,"description":3454,"org":3455,"tags":3456,"stars":3399,"repoUrl":3400,"updatedAt":3460},"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},[3457,3458,3459],{"name":3395,"slug":3396,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":3462,"name":3462,"fn":3463,"description":3464,"org":3465,"tags":3466,"stars":3399,"repoUrl":3400,"updatedAt":3470},"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},[3467,3468,3469],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:26:03.37801",{"slug":3472,"name":3472,"fn":3473,"description":3474,"org":3475,"tags":3476,"stars":3399,"repoUrl":3400,"updatedAt":3483},"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},[3477,3480,3481,3482],{"name":3478,"slug":3479,"type":15},"CSS","css",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:25:55.377366",{"slug":3485,"name":3485,"fn":3486,"description":3487,"org":3488,"tags":3489,"stars":3399,"repoUrl":3400,"updatedAt":3493},"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},[3490,3491,3492],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:25:51.400011",{"slug":3495,"name":3495,"fn":3496,"description":3497,"org":3498,"tags":3499,"stars":3399,"repoUrl":3400,"updatedAt":3504},"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},[3500,3501,3502,3503],{"name":3478,"slug":3479,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:25:48.703799",{"slug":3506,"name":3506,"fn":3507,"description":3508,"org":3509,"tags":3510,"stars":3399,"repoUrl":3400,"updatedAt":3514},"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},[3511,3512,3513],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:25:47.367943",{"slug":55,"name":55,"fn":3516,"description":3517,"org":3518,"tags":3519,"stars":3399,"repoUrl":3400,"updatedAt":3523},"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},[3520,3521,3522],{"name":3395,"slug":3396,"type":15},{"name":24,"slug":25,"type":15},{"name":3423,"slug":3424,"type":15},"2026-07-30T05:25:52.366295",125]