[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-type-safety":3,"mdc--9nwbfk-key":49,"related-repo-tanstack-type-safety":8417,"related-org-tanstack-type-safety":8523},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":44,"sourceUrl":47,"mdContent":48},"type-safety","enforce type safety in TanStack Router","Full type inference philosophy (never cast, never annotate inferred values), Register module declaration, from narrowing on hooks and Link, strict:false for shared components, getRouteApi for code-split typed access, addChildren with object syntax for TS perf, LinkProps and ValidateLinkOptions type utilities, as const satisfies pattern.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"TanStack Router","tanstack-router","tag",{"name":17,"slug":18,"type":15},"TypeScript","typescript",{"name":20,"slug":21,"type":15},"Code Analysis","code-analysis",{"name":9,"slug":8,"type":15},14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:27:05.506879",null,1761,[29,30,31,32,33,34,35,36,37,38,39,40,41,42,18,43],"framework","fullstack","javascript","react","route","router","routing","rpc","search","searchparams","server-functions","ssr","state-management","typesafe","url",{"repoUrl":24,"stars":23,"forks":27,"topics":45,"description":46},[29,30,31,32,33,34,35,36,37,38,39,40,41,42,18,43],"🤖 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-core\u002Fskills\u002Frouter-core\u002Ftype-safety","---\nname: type-safety\ndescription: >-\n  Full type inference philosophy (never cast, never annotate inferred\n  values), Register module declaration, from narrowing on hooks and\n  Link, strict:false for shared components, getRouteApi for code-split\n  typed access, addChildren with object syntax for TS perf, LinkProps\n  and ValidateLinkOptions type utilities, as const satisfies pattern.\nmetadata:\n  type: sub-skill\n  library: tanstack-router\n  library_version: '1.171.15'\nrequires:\n  - router-core\nsources:\n  - TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Ftype-safety.md\n  - TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Ftype-utilities.md\n  - TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Frender-optimizations.md\n---\n\n# Type Safety\n\nTanStack Router is FULLY type-inferred. Params, search params, context, and loader data all flow through the route tree automatically. The **#1 AI agent mistake** is adding type annotations, casts, or generic parameters to values that are already inferred.\n\n> **CRITICAL**: NEVER use `as Type`, explicit generic params, `satisfies` on hook returns, or type annotations on inferred values. Every cast masks real type errors and breaks the inference chain.\n> **CRITICAL**: Do NOT confuse TanStack Router with Next.js or React Router. There is no `getServerSideProps`, no `useSearchParams()`, no `useLoaderData()` from `react-router-dom`.\n\n## The ONE Required Type Annotation: Register\n\nWithout this, top-level exports like `Link`, `useNavigate`, `useSearch` have no type safety.\n\n```tsx\n\u002F\u002F src\u002Frouter.tsx\nimport { createRouter } from '@tanstack\u002Freact-router'\nimport { routeTree } from '.\u002FrouteTree.gen'\n\nconst router = createRouter({ routeTree })\n\n\u002F\u002F THIS IS REQUIRED — the single type registration for the entire app\ndeclare module '@tanstack\u002Freact-router' {\n  interface Register {\n    router: typeof router\n  }\n}\n\nexport default router\n```\n\nAfter registration, every `Link`, `useNavigate`, `useSearch`, `useParams` across the app is fully typed.\n\n## Types Flow Automatically\n\n### Route Hooks — No Annotation Needed\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fposts.$postId.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  validateSearch: (search: Record\u003Cstring, unknown>) => ({\n    page: Number(search.page ?? 1),\n  }),\n  loader: async ({ params }) => {\n    \u002F\u002F params.postId is already typed as string — do not annotate\n    const post = await fetchPost(params.postId)\n    return { post }\n  },\n  component: PostComponent,\n})\n\nfunction PostComponent() {\n  \u002F\u002F ALL of these are fully inferred — do NOT add type annotations\n  const { postId } = Route.useParams()\n  \u002F\u002F      ^? string\n\n  const { page } = Route.useSearch()\n  \u002F\u002F      ^? number\n\n  const { post } = Route.useLoaderData()\n  \u002F\u002F      ^? { id: string; title: string; body: string }\n\n  return (\n    \u003Cdiv>\n      \u003Ch1>{post.title}\u003C\u002Fh1>\n      \u003Cp>Page {page}\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  )\n}\n```\n\n### Context Flows Through the Tree\n\n```tsx\n\u002F\u002F src\u002Froutes\u002F__root.tsx\nimport { createRootRouteWithContext, Outlet } from '@tanstack\u002Freact-router'\n\ninterface RouterContext {\n  auth: { userId: string; role: 'admin' | 'user' } | null\n}\n\n\u002F\u002F Note: createRootRouteWithContext is a FACTORY — call it TWICE: ()()\nexport const Route = createRootRouteWithContext\u003CRouterContext>()({\n  component: () => \u003COutlet \u002F>,\n})\n```\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fdashboard.tsx\nimport { createFileRoute, redirect } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fdashboard')({\n  beforeLoad: ({ context }) => {\n    \u002F\u002F context.auth is already typed as { userId: string; role: 'admin' | 'user' } | null\n    \u002F\u002F NO annotation needed\n    if (!context.auth) throw redirect({ to: '\u002Flogin' })\n    return { user: context.auth }\n  },\n  loader: ({ context }) => {\n    \u002F\u002F context.user is typed as { userId: string; role: 'admin' | 'user' }\n    \u002F\u002F This was added by beforeLoad above — fully inferred\n    return fetchDashboard(context.user.userId)\n  },\n  component: DashboardComponent,\n})\n\nfunction DashboardComponent() {\n  const data = Route.useLoaderData()\n  const { user } = Route.useRouteContext()\n  return \u003Ch1>Welcome {user.userId}\u003C\u002Fh1>\n}\n```\n\n## Narrowing with `from`\n\nWithout `from`, hooks return a union of ALL routes' types — slow for TypeScript and imprecise.\n\n### On Hooks\n\n```tsx\nimport { useSearch, useParams, useNavigate } from '@tanstack\u002Freact-router'\n\nfunction PostSidebar() {\n  \u002F\u002F WRONG — search is a union of ALL routes' search params\n  const search = useSearch()\n\n  \u002F\u002F CORRECT — search is narrowed to \u002Fposts\u002F$postId's search params\n  const search = useSearch({ from: '\u002Fposts\u002F$postId' })\n  \u002F\u002F    ^? { page: number }\n\n  \u002F\u002F CORRECT — params narrowed to this route\n  const { postId } = useParams({ from: '\u002Fposts\u002F$postId' })\n\n  \u002F\u002F CORRECT — navigate narrowed for relative paths\n  const navigate = useNavigate({ from: '\u002Fposts\u002F$postId' })\n}\n```\n\n### On `Link`\n\n```tsx\nimport { Link } from '@tanstack\u002Freact-router'\n\n\u002F\u002F WRONG — search resolves to union of ALL routes' search params, slow TS check\n\u003CLink to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F CORRECT — narrowed, fast TS check\n\u003CLink from=\"\u002Fposts\u002F$postId\" to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F Also correct — Route.fullPath in route components\n\u003CLink from={Route.fullPath} to=\"..\" search={{ page: 0 }} \u002F>\n```\n\n## Shared Components: `strict: false`\n\nWhen a component is used across multiple routes, use `strict: false` instead of `from`:\n\n```tsx\nimport { useSearch } from '@tanstack\u002Freact-router'\n\nfunction GlobalSearch() {\n  \u002F\u002F Returns union of all routes' search params — no runtime error if route doesn't match\n  const search = useSearch({ strict: false })\n  return \u003Cspan>Query: {search.q ?? ''}\u003C\u002Fspan>\n}\n```\n\n## Code-Split Files: `getRouteApi`\n\nUse `getRouteApi` instead of importing `Route` to avoid pulling route config into the lazy chunk:\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fposts.lazy.tsx\nimport { createLazyFileRoute, getRouteApi } from '@tanstack\u002Freact-router'\n\nconst routeApi = getRouteApi('\u002Fposts')\n\nexport const Route = createLazyFileRoute('\u002Fposts')({\n  component: PostsComponent,\n})\n\nfunction PostsComponent() {\n  const data = routeApi.useLoaderData()\n  const { page } = routeApi.useSearch()\n  return \u003Cdiv>Page {page}\u003C\u002Fdiv>\n}\n```\n\n## TypeScript Performance\n\n### Use Object Syntax for `addChildren` in Large Route Trees\n\n```tsx\n\u002F\u002F SLOWER — tuple syntax\nconst routeTree = rootRoute.addChildren([\n  postsRoute.addChildren([postRoute, postsIndexRoute]),\n  indexRoute,\n])\n\n\u002F\u002F FASTER — object syntax (TS checks objects faster than large tuples)\nconst routeTree = rootRoute.addChildren({\n  postsRoute: postsRoute.addChildren({ postRoute, postsIndexRoute }),\n  indexRoute,\n})\n```\n\nWith file-based routing the route tree is generated, so this is handled for you.\n\n### Avoid Returning Unused Inferred Types from Loaders\n\nWhen using external caches like TanStack Query, don't let the router infer complex return types you never consume:\n\n```tsx\n\u002F\u002F SLOWER — TS infers the full ensureQueryData return type into the route tree\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: ({ context: { queryClient }, params: { postId } }) =>\n    queryClient.ensureQueryData(postQueryOptions(postId)),\n  component: PostComponent,\n})\n\n\u002F\u002F FASTER — void return, inference stays out of the route tree\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: async ({ context: { queryClient }, params: { postId } }) => {\n    await queryClient.ensureQueryData(postQueryOptions(postId))\n  },\n  component: PostComponent,\n})\n```\n\n### `as const satisfies` for Link Option Objects\n\nNever use `LinkProps` as a variable type — it's an enormous union:\n\n```tsx\nimport type { LinkProps, RegisteredRouter } from '@tanstack\u002Freact-router'\n\n\u002F\u002F WRONG — LinkProps is a massive union, extremely slow TS check\nconst wrongProps: LinkProps = { to: '\u002Fposts' }\n\n\u002F\u002F CORRECT — infer a precise type, validate against LinkProps\nconst goodProps = { to: '\u002Fposts' } as const satisfies LinkProps\n\n\u002F\u002F EVEN BETTER — narrow LinkProps with generic params\nconst narrowedProps = {\n  to: '\u002Fposts',\n} as const satisfies LinkProps\u003CRegisteredRouter, string, '\u002Fposts'>\n```\n\n### Type-Safe Link Option Arrays\n\n```tsx\nimport type { LinkProps } from '@tanstack\u002Freact-router'\n\nexport const navLinks = [\n  { to: '\u002Fposts' },\n  { to: '\u002Fposts\u002F$postId', params: { postId: '1' } },\n] as const satisfies ReadonlyArray\u003CLinkProps>\n\n\u002F\u002F Use the precise inferred type, not LinkProps directly\nexport type NavLink = (typeof navLinks)[number]\n```\n\n## Type Utilities for Generic Components\n\n### `ValidateLinkOptions` — Type-Safe Link Props in Custom Components\n\n```tsx\nimport {\n  Link,\n  type RegisteredRouter,\n  type ValidateLinkOptions,\n} from '@tanstack\u002Freact-router'\n\ninterface NavItemProps\u003C\n  TRouter extends RegisteredRouter = RegisteredRouter,\n  TOptions = unknown,\n> {\n  label: string\n  linkOptions: ValidateLinkOptions\u003CTRouter, TOptions>\n}\n\nexport function NavItem\u003CTRouter extends RegisteredRouter, TOptions>(\n  props: NavItemProps\u003CTRouter, TOptions>,\n): React.ReactNode\nexport function NavItem(props: NavItemProps): React.ReactNode {\n  return (\n    \u003Cli>\n      \u003CLink {...props.linkOptions}>{props.label}\u003C\u002FLink>\n    \u003C\u002Fli>\n  )\n}\n\n\u002F\u002F Usage — fully type-safe\n\u003CNavItem label=\"Posts\" linkOptions={{ to: '\u002Fposts' }} \u002F>\n\u003CNavItem label=\"Post\" linkOptions={{ to: '\u002Fposts\u002F$postId', params: { postId: '1' } }} \u002F>\n```\n\n### `ValidateNavigateOptions` and `ValidateRedirectOptions`\n\nSame pattern as `ValidateLinkOptions` above, for `useNavigate` and `redirect`. Declare a generic public overload plus a non-generic implementation signature so the call site stays narrowed and the body works without casts:\n\n```tsx\nimport {\n  useNavigate,\n  type RegisteredRouter,\n  type ValidateNavigateOptions,\n} from '@tanstack\u002Freact-router'\n\nexport function useDelayedNavigate\u003C\n  TRouter extends RegisteredRouter = RegisteredRouter,\n  TOptions = unknown,\n>(\n  options: ValidateNavigateOptions\u003CTRouter, TOptions>,\n  delayMs: number,\n): () => void\nexport function useDelayedNavigate(\n  options: ValidateNavigateOptions,\n  delayMs: number,\n) {\n  const navigate = useNavigate()\n  return () => {\n    setTimeout(() => navigate(options), delayMs)\n  }\n}\n```\n\n`ValidateRedirectOptions` works identically — declare a generic overload accepting `ValidateRedirectOptions\u003CTRouter, TOptions>` and an impl signature accepting `ValidateRedirectOptions`, then call `redirect(options)` in the body.\n\n### Render Props for Maximum Performance\n\nInstead of accepting `LinkProps`, invert control so `Link` is narrowed at the call site:\n\n```tsx\nfunction Card(props: { title: string; renderLink: () => React.ReactNode }) {\n  return (\n    \u003Cdiv>\n      \u003Ch2>{props.title}\u003C\u002Fh2>\n      {props.renderLink()}\n    \u003C\u002Fdiv>\n  )\n}\n\n\u002F\u002F Link narrowed to exactly \u002Fposts — no union check\n;\u003CCard title=\"All Posts\" renderLink={() => \u003CLink to=\"\u002Fposts\">View\u003C\u002FLink>} \u002F>\n```\n\n## Render Optimizations\n\n### Fine-Grained Selectors with `select`\n\n```tsx\nfunction PostTitle() {\n  \u002F\u002F Only re-renders when page changes, not when other search params change\n  const page = Route.useSearch({ select: ({ page }) => page })\n  return \u003Cspan>Page {page}\u003C\u002Fspan>\n}\n```\n\n### Structural Sharing\n\nPreserve referential identity across re-renders for search params:\n\n```tsx\nconst router = createRouter({\n  routeTree,\n  defaultStructuralSharing: true, \u002F\u002F Enable globally\n})\n\n\u002F\u002F Or per-hook\nconst result = Route.useSearch({\n  select: (search) => ({ foo: search.foo, label: `Page ${search.foo}` }),\n  structuralSharing: true,\n})\n```\n\nStructural sharing only works with JSON-compatible data. TypeScript will error if you return class instances with `structuralSharing: true`.\n\n## Common Mistakes\n\n### 1. CRITICAL: Adding type annotations or casts to inferred values\n\n```tsx\n\u002F\u002F WRONG — casting masks real type errors\nconst search = useSearch({ from: '\u002Fposts' }) as { page: number }\n\n\u002F\u002F WRONG — unnecessary annotation\nconst params: { postId: string } = useParams({ from: '\u002Fposts\u002F$postId' })\n\n\u002F\u002F WRONG — generic param on hook\nconst data = useLoaderData\u003C{ posts: Post[] }>({ from: '\u002Fposts' })\n\n\u002F\u002F CORRECT — let inference work\nconst search = useSearch({ from: '\u002Fposts' })\nconst params = useParams({ from: '\u002Fposts\u002F$postId' })\nconst data = useLoaderData({ from: '\u002Fposts' })\n```\n\n### 2. HIGH: Using un-narrowed `LinkProps` type\n\n```tsx\n\u002F\u002F WRONG — LinkProps is a massive union, causes severe TS slowdown\nconst myProps: LinkProps = { to: '\u002Fposts' }\n\n\u002F\u002F CORRECT — use as const satisfies for precise inference\nconst myProps = { to: '\u002Fposts' } as const satisfies LinkProps\n```\n\n### 3. HIGH: Not narrowing `Link`\u002F`useNavigate` with `from`\n\n```tsx\n\u002F\u002F WRONG — search is a union of ALL routes, TS check grows with route count\n\u003CLink to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F CORRECT — narrowed, fast check\n\u003CLink from={Route.fullPath} to=\"..\" search={{ page: 0 }} \u002F>\n```\n\n### 4. CRITICAL (cross-skill): Missing router type registration\n\n```tsx\n\u002F\u002F WRONG — Link\u002FuseNavigate have no autocomplete, all paths are untyped strings\nconst router = createRouter({ routeTree })\n\u002F\u002F (no declare module)\n\n\u002F\u002F CORRECT — always register\nconst router = createRouter({ routeTree })\ndeclare module '@tanstack\u002Freact-router' {\n  interface Register {\n    router: typeof router\n  }\n}\n```\n\n### 5. CRITICAL (cross-skill): Wrong-framework imports and file structure\n\nWrong-framework code looks plausible (it's React) but breaks the build or produces conflicting `\u002F` routes at runtime.\n\n```tsx\n\u002F\u002F WRONG — react-router-dom and next\u002F* are different libraries\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom'\nimport Link from 'next\u002Flink'\nimport { useRouter, useParams } from 'next\u002Fnavigation'\n\n\u002F\u002F CORRECT — all routing exports come from @tanstack\u002Freact-router\nimport {\n  Link,\n  Outlet,\n  useNavigate,\n  useRouter,\n  useLocation,\n  useParams,\n  redirect,\n} from '@tanstack\u002Freact-router'\n```\n\n```tsx\n\u002F\u002F WRONG file structures + APIs:\n\u002F\u002F   src\u002Fpages\u002F*.tsx with getServerSideProps \u002F getStaticProps  (Next.js Pages Router)\n\u002F\u002F   app\u002Flayout.tsx + app\u002Fpage.tsx                              (Next.js App Router)\n\u002F\u002F   _app\u002Findex.tsx, pages\u002F_app.tsx, pages\u002F_document.tsx        (Next.js custom App)\n\u002F\u002F   loader\u002Faction exports                                       (Remix)\n\n\u002F\u002F CORRECT — TanStack file-based routing at src\u002Froutes\u002F*.tsx\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: async () => { ... },\n  validateSearch: zodValidator(schema),\n  component: PostsComponent,\n})\nconst search = Route.useSearch()\n```\n\nIf a build error mentions `react-router-dom`, `next\u002F`, `pages\u002F_app`, or duplicate `\u002F` routes, fix the import — don't paper over with type assertions.\n\n### 6. CRITICAL: Treating typecheck as proof of runtime schema propagation\n\nTypes can say a field exists while a database projection, API serializer, or server function omits it. When adding or renaming a field, trace the value through storage, validation, handler output, loader data, and rendered UI. Do not cast the response to the desired type.\nAdd a runtime assertion against the real handler or serialized response, such as `expect(await getOrder({ data: { id } })).toMatchObject({ totalCents: 2599 })`.\nThen run the route-level test and production build. The type test remains necessary, but it is not the runtime contract test.\n\nSee also: router-core (Register setup), router-core\u002Fnavigation (from narrowing), router-core\u002Fcode-splitting (getRouteApi).\n",{"data":50,"body":60},{"name":4,"description":6,"metadata":51,"requires":54,"sources":56},{"type":52,"library":14,"library_version":53},"sub-skill","1.171.15",[55],"router-core",[57,58,59],"TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Ftype-safety.md","TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Ftype-utilities.md","TanStack\u002Frouter:docs\u002Frouter\u002Fguide\u002Frender-optimizations.md",{"type":61,"children":62},"root",[63,71,85,153,160,188,494,525,531,538,1315,1321,1606,2178,2190,2202,2208,2562,2573,2880,2892,2910,3106,3118,3137,3477,3483,3497,3729,3734,3740,3745,4149,4161,4174,4499,4505,4785,4791,4803,5500,5518,5544,5960,5993,5999,6018,6335,6341,6353,6510,6516,6521,6799,6811,6817,6823,7294,7306,7448,7472,7636,7642,7833,7839,7851,8123,8354,8387,8393,8406,8411],{"type":64,"tag":65,"props":66,"children":67},"element","h1",{"id":4},[68],{"type":69,"value":70},"text","Type Safety",{"type":64,"tag":72,"props":73,"children":74},"p",{},[75,77,83],{"type":69,"value":76},"TanStack Router is FULLY type-inferred. Params, search params, context, and loader data all flow through the route tree automatically. The ",{"type":64,"tag":78,"props":79,"children":80},"strong",{},[81],{"type":69,"value":82},"#1 AI agent mistake",{"type":69,"value":84}," is adding type annotations, casts, or generic parameters to values that are already inferred.",{"type":64,"tag":86,"props":87,"children":88},"blockquote",{},[89],{"type":64,"tag":72,"props":90,"children":91},{},[92,97,99,106,108,114,116,120,122,128,130,136,137,143,145,151],{"type":64,"tag":78,"props":93,"children":94},{},[95],{"type":69,"value":96},"CRITICAL",{"type":69,"value":98},": NEVER use ",{"type":64,"tag":100,"props":101,"children":103},"code",{"className":102},[],[104],{"type":69,"value":105},"as Type",{"type":69,"value":107},", explicit generic params, ",{"type":64,"tag":100,"props":109,"children":111},{"className":110},[],[112],{"type":69,"value":113},"satisfies",{"type":69,"value":115}," on hook returns, or type annotations on inferred values. Every cast masks real type errors and breaks the inference chain.\n",{"type":64,"tag":78,"props":117,"children":118},{},[119],{"type":69,"value":96},{"type":69,"value":121},": Do NOT confuse TanStack Router with Next.js or React Router. There is no ",{"type":64,"tag":100,"props":123,"children":125},{"className":124},[],[126],{"type":69,"value":127},"getServerSideProps",{"type":69,"value":129},", no ",{"type":64,"tag":100,"props":131,"children":133},{"className":132},[],[134],{"type":69,"value":135},"useSearchParams()",{"type":69,"value":129},{"type":64,"tag":100,"props":138,"children":140},{"className":139},[],[141],{"type":69,"value":142},"useLoaderData()",{"type":69,"value":144}," from ",{"type":64,"tag":100,"props":146,"children":148},{"className":147},[],[149],{"type":69,"value":150},"react-router-dom",{"type":69,"value":152},".",{"type":64,"tag":154,"props":155,"children":157},"h2",{"id":156},"the-one-required-type-annotation-register",[158],{"type":69,"value":159},"The ONE Required Type Annotation: Register",{"type":64,"tag":72,"props":161,"children":162},{},[163,165,171,173,179,180,186],{"type":69,"value":164},"Without this, top-level exports like ",{"type":64,"tag":100,"props":166,"children":168},{"className":167},[],[169],{"type":69,"value":170},"Link",{"type":69,"value":172},", ",{"type":64,"tag":100,"props":174,"children":176},{"className":175},[],[177],{"type":69,"value":178},"useNavigate",{"type":69,"value":172},{"type":64,"tag":100,"props":181,"children":183},{"className":182},[],[184],{"type":69,"value":185},"useSearch",{"type":69,"value":187}," have no type safety.",{"type":64,"tag":189,"props":190,"children":195},"pre",{"className":191,"code":192,"language":193,"meta":194,"style":194},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Frouter.tsx\nimport { createRouter } from '@tanstack\u002Freact-router'\nimport { routeTree } from '.\u002FrouteTree.gen'\n\nconst router = createRouter({ routeTree })\n\n\u002F\u002F THIS IS REQUIRED — the single type registration for the entire app\ndeclare module '@tanstack\u002Freact-router' {\n  interface Register {\n    router: typeof router\n  }\n}\n\nexport default router\n","tsx","",[196],{"type":64,"tag":100,"props":197,"children":198},{"__ignoreMap":194},[199,211,259,297,307,357,365,374,406,425,450,459,468,476],{"type":64,"tag":200,"props":201,"children":204},"span",{"class":202,"line":203},"line",1,[205],{"type":64,"tag":200,"props":206,"children":208},{"style":207},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[209],{"type":69,"value":210},"\u002F\u002F src\u002Frouter.tsx\n",{"type":64,"tag":200,"props":212,"children":214},{"class":202,"line":213},2,[215,221,227,233,238,243,248,254],{"type":64,"tag":200,"props":216,"children":218},{"style":217},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[219],{"type":69,"value":220},"import",{"type":64,"tag":200,"props":222,"children":224},{"style":223},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[225],{"type":69,"value":226}," {",{"type":64,"tag":200,"props":228,"children":230},{"style":229},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[231],{"type":69,"value":232}," createRouter",{"type":64,"tag":200,"props":234,"children":235},{"style":223},[236],{"type":69,"value":237}," }",{"type":64,"tag":200,"props":239,"children":240},{"style":217},[241],{"type":69,"value":242}," from",{"type":64,"tag":200,"props":244,"children":245},{"style":223},[246],{"type":69,"value":247}," '",{"type":64,"tag":200,"props":249,"children":251},{"style":250},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[252],{"type":69,"value":253},"@tanstack\u002Freact-router",{"type":64,"tag":200,"props":255,"children":256},{"style":223},[257],{"type":69,"value":258},"'\n",{"type":64,"tag":200,"props":260,"children":262},{"class":202,"line":261},3,[263,267,271,276,280,284,288,293],{"type":64,"tag":200,"props":264,"children":265},{"style":217},[266],{"type":69,"value":220},{"type":64,"tag":200,"props":268,"children":269},{"style":223},[270],{"type":69,"value":226},{"type":64,"tag":200,"props":272,"children":273},{"style":229},[274],{"type":69,"value":275}," routeTree",{"type":64,"tag":200,"props":277,"children":278},{"style":223},[279],{"type":69,"value":237},{"type":64,"tag":200,"props":281,"children":282},{"style":217},[283],{"type":69,"value":242},{"type":64,"tag":200,"props":285,"children":286},{"style":223},[287],{"type":69,"value":247},{"type":64,"tag":200,"props":289,"children":290},{"style":250},[291],{"type":69,"value":292},".\u002FrouteTree.gen",{"type":64,"tag":200,"props":294,"children":295},{"style":223},[296],{"type":69,"value":258},{"type":64,"tag":200,"props":298,"children":300},{"class":202,"line":299},4,[301],{"type":64,"tag":200,"props":302,"children":304},{"emptyLinePlaceholder":303},true,[305],{"type":69,"value":306},"\n",{"type":64,"tag":200,"props":308,"children":310},{"class":202,"line":309},5,[311,317,322,327,332,337,342,347,352],{"type":64,"tag":200,"props":312,"children":314},{"style":313},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[315],{"type":69,"value":316},"const",{"type":64,"tag":200,"props":318,"children":319},{"style":229},[320],{"type":69,"value":321}," router ",{"type":64,"tag":200,"props":323,"children":324},{"style":223},[325],{"type":69,"value":326},"=",{"type":64,"tag":200,"props":328,"children":330},{"style":329},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[331],{"type":69,"value":232},{"type":64,"tag":200,"props":333,"children":334},{"style":229},[335],{"type":69,"value":336},"(",{"type":64,"tag":200,"props":338,"children":339},{"style":223},[340],{"type":69,"value":341},"{",{"type":64,"tag":200,"props":343,"children":344},{"style":229},[345],{"type":69,"value":346}," routeTree ",{"type":64,"tag":200,"props":348,"children":349},{"style":223},[350],{"type":69,"value":351},"}",{"type":64,"tag":200,"props":353,"children":354},{"style":229},[355],{"type":69,"value":356},")\n",{"type":64,"tag":200,"props":358,"children":360},{"class":202,"line":359},6,[361],{"type":64,"tag":200,"props":362,"children":363},{"emptyLinePlaceholder":303},[364],{"type":69,"value":306},{"type":64,"tag":200,"props":366,"children":368},{"class":202,"line":367},7,[369],{"type":64,"tag":200,"props":370,"children":371},{"style":207},[372],{"type":69,"value":373},"\u002F\u002F THIS IS REQUIRED — the single type registration for the entire app\n",{"type":64,"tag":200,"props":375,"children":377},{"class":202,"line":376},8,[378,383,388,392,396,401],{"type":64,"tag":200,"props":379,"children":380},{"style":313},[381],{"type":69,"value":382},"declare",{"type":64,"tag":200,"props":384,"children":385},{"style":313},[386],{"type":69,"value":387}," module",{"type":64,"tag":200,"props":389,"children":390},{"style":223},[391],{"type":69,"value":247},{"type":64,"tag":200,"props":393,"children":394},{"style":250},[395],{"type":69,"value":253},{"type":64,"tag":200,"props":397,"children":398},{"style":223},[399],{"type":69,"value":400},"'",{"type":64,"tag":200,"props":402,"children":403},{"style":223},[404],{"type":69,"value":405}," {\n",{"type":64,"tag":200,"props":407,"children":409},{"class":202,"line":408},9,[410,415,421],{"type":64,"tag":200,"props":411,"children":412},{"style":313},[413],{"type":69,"value":414},"  interface",{"type":64,"tag":200,"props":416,"children":418},{"style":417},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[419],{"type":69,"value":420}," Register",{"type":64,"tag":200,"props":422,"children":423},{"style":223},[424],{"type":69,"value":405},{"type":64,"tag":200,"props":426,"children":428},{"class":202,"line":427},10,[429,435,440,445],{"type":64,"tag":200,"props":430,"children":432},{"style":431},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[433],{"type":69,"value":434},"    router",{"type":64,"tag":200,"props":436,"children":437},{"style":223},[438],{"type":69,"value":439},":",{"type":64,"tag":200,"props":441,"children":442},{"style":223},[443],{"type":69,"value":444}," typeof",{"type":64,"tag":200,"props":446,"children":447},{"style":229},[448],{"type":69,"value":449}," router\n",{"type":64,"tag":200,"props":451,"children":453},{"class":202,"line":452},11,[454],{"type":64,"tag":200,"props":455,"children":456},{"style":223},[457],{"type":69,"value":458},"  }\n",{"type":64,"tag":200,"props":460,"children":462},{"class":202,"line":461},12,[463],{"type":64,"tag":200,"props":464,"children":465},{"style":223},[466],{"type":69,"value":467},"}\n",{"type":64,"tag":200,"props":469,"children":471},{"class":202,"line":470},13,[472],{"type":64,"tag":200,"props":473,"children":474},{"emptyLinePlaceholder":303},[475],{"type":69,"value":306},{"type":64,"tag":200,"props":477,"children":479},{"class":202,"line":478},14,[480,485,490],{"type":64,"tag":200,"props":481,"children":482},{"style":217},[483],{"type":69,"value":484},"export",{"type":64,"tag":200,"props":486,"children":487},{"style":217},[488],{"type":69,"value":489}," default",{"type":64,"tag":200,"props":491,"children":492},{"style":229},[493],{"type":69,"value":449},{"type":64,"tag":72,"props":495,"children":496},{},[497,499,504,505,510,511,516,517,523],{"type":69,"value":498},"After registration, every ",{"type":64,"tag":100,"props":500,"children":502},{"className":501},[],[503],{"type":69,"value":170},{"type":69,"value":172},{"type":64,"tag":100,"props":506,"children":508},{"className":507},[],[509],{"type":69,"value":178},{"type":69,"value":172},{"type":64,"tag":100,"props":512,"children":514},{"className":513},[],[515],{"type":69,"value":185},{"type":69,"value":172},{"type":64,"tag":100,"props":518,"children":520},{"className":519},[],[521],{"type":69,"value":522},"useParams",{"type":69,"value":524}," across the app is fully typed.",{"type":64,"tag":154,"props":526,"children":528},{"id":527},"types-flow-automatically",[529],{"type":69,"value":530},"Types Flow Automatically",{"type":64,"tag":532,"props":533,"children":535},"h3",{"id":534},"route-hooks-no-annotation-needed",[536],{"type":69,"value":537},"Route Hooks — No Annotation Needed",{"type":64,"tag":189,"props":539,"children":541},{"className":191,"code":540,"language":193,"meta":194,"style":194},"\u002F\u002F src\u002Froutes\u002Fposts.$postId.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  validateSearch: (search: Record\u003Cstring, unknown>) => ({\n    page: Number(search.page ?? 1),\n  }),\n  loader: async ({ params }) => {\n    \u002F\u002F params.postId is already typed as string — do not annotate\n    const post = await fetchPost(params.postId)\n    return { post }\n  },\n  component: PostComponent,\n})\n\nfunction PostComponent() {\n  \u002F\u002F ALL of these are fully inferred — do NOT add type annotations\n  const { postId } = Route.useParams()\n  \u002F\u002F      ^? string\n\n  const { page } = Route.useSearch()\n  \u002F\u002F      ^? number\n\n  const { post } = Route.useLoaderData()\n  \u002F\u002F      ^? { id: string; title: string; body: string }\n\n  return (\n    \u003Cdiv>\n      \u003Ch1>{post.title}\u003C\u002Fh1>\n      \u003Cp>Page {page}\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  )\n}\n",[542],{"type":64,"tag":100,"props":543,"children":544},{"__ignoreMap":194},[545,553,589,596,648,717,769,785,825,833,883,904,912,933,944,952,974,983,1027,1036,1044,1085,1094,1102,1143,1152,1160,1174,1193,1238,1281,1298,1307],{"type":64,"tag":200,"props":546,"children":547},{"class":202,"line":203},[548],{"type":64,"tag":200,"props":549,"children":550},{"style":207},[551],{"type":69,"value":552},"\u002F\u002F src\u002Froutes\u002Fposts.$postId.tsx\n",{"type":64,"tag":200,"props":554,"children":555},{"class":202,"line":213},[556,560,564,569,573,577,581,585],{"type":64,"tag":200,"props":557,"children":558},{"style":217},[559],{"type":69,"value":220},{"type":64,"tag":200,"props":561,"children":562},{"style":223},[563],{"type":69,"value":226},{"type":64,"tag":200,"props":565,"children":566},{"style":229},[567],{"type":69,"value":568}," createFileRoute",{"type":64,"tag":200,"props":570,"children":571},{"style":223},[572],{"type":69,"value":237},{"type":64,"tag":200,"props":574,"children":575},{"style":217},[576],{"type":69,"value":242},{"type":64,"tag":200,"props":578,"children":579},{"style":223},[580],{"type":69,"value":247},{"type":64,"tag":200,"props":582,"children":583},{"style":250},[584],{"type":69,"value":253},{"type":64,"tag":200,"props":586,"children":587},{"style":223},[588],{"type":69,"value":258},{"type":64,"tag":200,"props":590,"children":591},{"class":202,"line":261},[592],{"type":64,"tag":200,"props":593,"children":594},{"emptyLinePlaceholder":303},[595],{"type":69,"value":306},{"type":64,"tag":200,"props":597,"children":598},{"class":202,"line":299},[599,603,608,613,617,621,625,629,634,638,643],{"type":64,"tag":200,"props":600,"children":601},{"style":217},[602],{"type":69,"value":484},{"type":64,"tag":200,"props":604,"children":605},{"style":313},[606],{"type":69,"value":607}," const",{"type":64,"tag":200,"props":609,"children":610},{"style":229},[611],{"type":69,"value":612}," Route ",{"type":64,"tag":200,"props":614,"children":615},{"style":223},[616],{"type":69,"value":326},{"type":64,"tag":200,"props":618,"children":619},{"style":329},[620],{"type":69,"value":568},{"type":64,"tag":200,"props":622,"children":623},{"style":229},[624],{"type":69,"value":336},{"type":64,"tag":200,"props":626,"children":627},{"style":223},[628],{"type":69,"value":400},{"type":64,"tag":200,"props":630,"children":631},{"style":250},[632],{"type":69,"value":633},"\u002Fposts\u002F$postId",{"type":64,"tag":200,"props":635,"children":636},{"style":223},[637],{"type":69,"value":400},{"type":64,"tag":200,"props":639,"children":640},{"style":229},[641],{"type":69,"value":642},")(",{"type":64,"tag":200,"props":644,"children":645},{"style":223},[646],{"type":69,"value":647},"{\n",{"type":64,"tag":200,"props":649,"children":650},{"class":202,"line":309},[651,656,660,665,670,674,679,684,689,694,699,704,709,713],{"type":64,"tag":200,"props":652,"children":653},{"style":329},[654],{"type":69,"value":655},"  validateSearch",{"type":64,"tag":200,"props":657,"children":658},{"style":223},[659],{"type":69,"value":439},{"type":64,"tag":200,"props":661,"children":662},{"style":223},[663],{"type":69,"value":664}," (",{"type":64,"tag":200,"props":666,"children":668},{"style":667},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[669],{"type":69,"value":37},{"type":64,"tag":200,"props":671,"children":672},{"style":223},[673],{"type":69,"value":439},{"type":64,"tag":200,"props":675,"children":676},{"style":417},[677],{"type":69,"value":678}," Record",{"type":64,"tag":200,"props":680,"children":681},{"style":223},[682],{"type":69,"value":683},"\u003C",{"type":64,"tag":200,"props":685,"children":686},{"style":417},[687],{"type":69,"value":688},"string",{"type":64,"tag":200,"props":690,"children":691},{"style":223},[692],{"type":69,"value":693},",",{"type":64,"tag":200,"props":695,"children":696},{"style":417},[697],{"type":69,"value":698}," unknown",{"type":64,"tag":200,"props":700,"children":701},{"style":223},[702],{"type":69,"value":703},">)",{"type":64,"tag":200,"props":705,"children":706},{"style":313},[707],{"type":69,"value":708}," =>",{"type":64,"tag":200,"props":710,"children":711},{"style":229},[712],{"type":69,"value":664},{"type":64,"tag":200,"props":714,"children":715},{"style":223},[716],{"type":69,"value":647},{"type":64,"tag":200,"props":718,"children":719},{"class":202,"line":359},[720,725,729,734,739,743,748,753,759,764],{"type":64,"tag":200,"props":721,"children":722},{"style":431},[723],{"type":69,"value":724},"    page",{"type":64,"tag":200,"props":726,"children":727},{"style":223},[728],{"type":69,"value":439},{"type":64,"tag":200,"props":730,"children":731},{"style":329},[732],{"type":69,"value":733}," Number",{"type":64,"tag":200,"props":735,"children":736},{"style":229},[737],{"type":69,"value":738},"(search",{"type":64,"tag":200,"props":740,"children":741},{"style":223},[742],{"type":69,"value":152},{"type":64,"tag":200,"props":744,"children":745},{"style":229},[746],{"type":69,"value":747},"page ",{"type":64,"tag":200,"props":749,"children":750},{"style":223},[751],{"type":69,"value":752},"??",{"type":64,"tag":200,"props":754,"children":756},{"style":755},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[757],{"type":69,"value":758}," 1",{"type":64,"tag":200,"props":760,"children":761},{"style":229},[762],{"type":69,"value":763},")",{"type":64,"tag":200,"props":765,"children":766},{"style":223},[767],{"type":69,"value":768},",\n",{"type":64,"tag":200,"props":770,"children":771},{"class":202,"line":367},[772,777,781],{"type":64,"tag":200,"props":773,"children":774},{"style":223},[775],{"type":69,"value":776},"  }",{"type":64,"tag":200,"props":778,"children":779},{"style":229},[780],{"type":69,"value":763},{"type":64,"tag":200,"props":782,"children":783},{"style":223},[784],{"type":69,"value":768},{"type":64,"tag":200,"props":786,"children":787},{"class":202,"line":376},[788,793,797,802,807,812,817,821],{"type":64,"tag":200,"props":789,"children":790},{"style":329},[791],{"type":69,"value":792},"  loader",{"type":64,"tag":200,"props":794,"children":795},{"style":223},[796],{"type":69,"value":439},{"type":64,"tag":200,"props":798,"children":799},{"style":313},[800],{"type":69,"value":801}," async",{"type":64,"tag":200,"props":803,"children":804},{"style":223},[805],{"type":69,"value":806}," ({",{"type":64,"tag":200,"props":808,"children":809},{"style":667},[810],{"type":69,"value":811}," params",{"type":64,"tag":200,"props":813,"children":814},{"style":223},[815],{"type":69,"value":816}," })",{"type":64,"tag":200,"props":818,"children":819},{"style":313},[820],{"type":69,"value":708},{"type":64,"tag":200,"props":822,"children":823},{"style":223},[824],{"type":69,"value":405},{"type":64,"tag":200,"props":826,"children":827},{"class":202,"line":408},[828],{"type":64,"tag":200,"props":829,"children":830},{"style":207},[831],{"type":69,"value":832},"    \u002F\u002F params.postId is already typed as string — do not annotate\n",{"type":64,"tag":200,"props":834,"children":835},{"class":202,"line":427},[836,841,846,851,856,861,865,870,874,879],{"type":64,"tag":200,"props":837,"children":838},{"style":313},[839],{"type":69,"value":840},"    const",{"type":64,"tag":200,"props":842,"children":843},{"style":229},[844],{"type":69,"value":845}," post",{"type":64,"tag":200,"props":847,"children":848},{"style":223},[849],{"type":69,"value":850}," =",{"type":64,"tag":200,"props":852,"children":853},{"style":217},[854],{"type":69,"value":855}," await",{"type":64,"tag":200,"props":857,"children":858},{"style":329},[859],{"type":69,"value":860}," fetchPost",{"type":64,"tag":200,"props":862,"children":863},{"style":431},[864],{"type":69,"value":336},{"type":64,"tag":200,"props":866,"children":867},{"style":229},[868],{"type":69,"value":869},"params",{"type":64,"tag":200,"props":871,"children":872},{"style":223},[873],{"type":69,"value":152},{"type":64,"tag":200,"props":875,"children":876},{"style":229},[877],{"type":69,"value":878},"postId",{"type":64,"tag":200,"props":880,"children":881},{"style":431},[882],{"type":69,"value":356},{"type":64,"tag":200,"props":884,"children":885},{"class":202,"line":452},[886,891,895,899],{"type":64,"tag":200,"props":887,"children":888},{"style":217},[889],{"type":69,"value":890},"    return",{"type":64,"tag":200,"props":892,"children":893},{"style":223},[894],{"type":69,"value":226},{"type":64,"tag":200,"props":896,"children":897},{"style":229},[898],{"type":69,"value":845},{"type":64,"tag":200,"props":900,"children":901},{"style":223},[902],{"type":69,"value":903}," }\n",{"type":64,"tag":200,"props":905,"children":906},{"class":202,"line":461},[907],{"type":64,"tag":200,"props":908,"children":909},{"style":223},[910],{"type":69,"value":911},"  },\n",{"type":64,"tag":200,"props":913,"children":914},{"class":202,"line":470},[915,920,924,929],{"type":64,"tag":200,"props":916,"children":917},{"style":431},[918],{"type":69,"value":919},"  component",{"type":64,"tag":200,"props":921,"children":922},{"style":223},[923],{"type":69,"value":439},{"type":64,"tag":200,"props":925,"children":926},{"style":229},[927],{"type":69,"value":928}," PostComponent",{"type":64,"tag":200,"props":930,"children":931},{"style":223},[932],{"type":69,"value":768},{"type":64,"tag":200,"props":934,"children":935},{"class":202,"line":478},[936,940],{"type":64,"tag":200,"props":937,"children":938},{"style":223},[939],{"type":69,"value":351},{"type":64,"tag":200,"props":941,"children":942},{"style":229},[943],{"type":69,"value":356},{"type":64,"tag":200,"props":945,"children":947},{"class":202,"line":946},15,[948],{"type":64,"tag":200,"props":949,"children":950},{"emptyLinePlaceholder":303},[951],{"type":69,"value":306},{"type":64,"tag":200,"props":953,"children":955},{"class":202,"line":954},16,[956,961,965,970],{"type":64,"tag":200,"props":957,"children":958},{"style":313},[959],{"type":69,"value":960},"function",{"type":64,"tag":200,"props":962,"children":963},{"style":329},[964],{"type":69,"value":928},{"type":64,"tag":200,"props":966,"children":967},{"style":223},[968],{"type":69,"value":969},"()",{"type":64,"tag":200,"props":971,"children":972},{"style":223},[973],{"type":69,"value":405},{"type":64,"tag":200,"props":975,"children":977},{"class":202,"line":976},17,[978],{"type":64,"tag":200,"props":979,"children":980},{"style":207},[981],{"type":69,"value":982},"  \u002F\u002F ALL of these are fully inferred — do NOT add type annotations\n",{"type":64,"tag":200,"props":984,"children":986},{"class":202,"line":985},18,[987,992,996,1001,1005,1009,1014,1018,1022],{"type":64,"tag":200,"props":988,"children":989},{"style":313},[990],{"type":69,"value":991},"  const",{"type":64,"tag":200,"props":993,"children":994},{"style":223},[995],{"type":69,"value":226},{"type":64,"tag":200,"props":997,"children":998},{"style":229},[999],{"type":69,"value":1000}," postId",{"type":64,"tag":200,"props":1002,"children":1003},{"style":223},[1004],{"type":69,"value":237},{"type":64,"tag":200,"props":1006,"children":1007},{"style":223},[1008],{"type":69,"value":850},{"type":64,"tag":200,"props":1010,"children":1011},{"style":229},[1012],{"type":69,"value":1013}," Route",{"type":64,"tag":200,"props":1015,"children":1016},{"style":223},[1017],{"type":69,"value":152},{"type":64,"tag":200,"props":1019,"children":1020},{"style":329},[1021],{"type":69,"value":522},{"type":64,"tag":200,"props":1023,"children":1024},{"style":431},[1025],{"type":69,"value":1026},"()\n",{"type":64,"tag":200,"props":1028,"children":1030},{"class":202,"line":1029},19,[1031],{"type":64,"tag":200,"props":1032,"children":1033},{"style":207},[1034],{"type":69,"value":1035},"  \u002F\u002F      ^? string\n",{"type":64,"tag":200,"props":1037,"children":1039},{"class":202,"line":1038},20,[1040],{"type":64,"tag":200,"props":1041,"children":1042},{"emptyLinePlaceholder":303},[1043],{"type":69,"value":306},{"type":64,"tag":200,"props":1045,"children":1047},{"class":202,"line":1046},21,[1048,1052,1056,1061,1065,1069,1073,1077,1081],{"type":64,"tag":200,"props":1049,"children":1050},{"style":313},[1051],{"type":69,"value":991},{"type":64,"tag":200,"props":1053,"children":1054},{"style":223},[1055],{"type":69,"value":226},{"type":64,"tag":200,"props":1057,"children":1058},{"style":229},[1059],{"type":69,"value":1060}," page",{"type":64,"tag":200,"props":1062,"children":1063},{"style":223},[1064],{"type":69,"value":237},{"type":64,"tag":200,"props":1066,"children":1067},{"style":223},[1068],{"type":69,"value":850},{"type":64,"tag":200,"props":1070,"children":1071},{"style":229},[1072],{"type":69,"value":1013},{"type":64,"tag":200,"props":1074,"children":1075},{"style":223},[1076],{"type":69,"value":152},{"type":64,"tag":200,"props":1078,"children":1079},{"style":329},[1080],{"type":69,"value":185},{"type":64,"tag":200,"props":1082,"children":1083},{"style":431},[1084],{"type":69,"value":1026},{"type":64,"tag":200,"props":1086,"children":1088},{"class":202,"line":1087},22,[1089],{"type":64,"tag":200,"props":1090,"children":1091},{"style":207},[1092],{"type":69,"value":1093},"  \u002F\u002F      ^? number\n",{"type":64,"tag":200,"props":1095,"children":1097},{"class":202,"line":1096},23,[1098],{"type":64,"tag":200,"props":1099,"children":1100},{"emptyLinePlaceholder":303},[1101],{"type":69,"value":306},{"type":64,"tag":200,"props":1103,"children":1105},{"class":202,"line":1104},24,[1106,1110,1114,1118,1122,1126,1130,1134,1139],{"type":64,"tag":200,"props":1107,"children":1108},{"style":313},[1109],{"type":69,"value":991},{"type":64,"tag":200,"props":1111,"children":1112},{"style":223},[1113],{"type":69,"value":226},{"type":64,"tag":200,"props":1115,"children":1116},{"style":229},[1117],{"type":69,"value":845},{"type":64,"tag":200,"props":1119,"children":1120},{"style":223},[1121],{"type":69,"value":237},{"type":64,"tag":200,"props":1123,"children":1124},{"style":223},[1125],{"type":69,"value":850},{"type":64,"tag":200,"props":1127,"children":1128},{"style":229},[1129],{"type":69,"value":1013},{"type":64,"tag":200,"props":1131,"children":1132},{"style":223},[1133],{"type":69,"value":152},{"type":64,"tag":200,"props":1135,"children":1136},{"style":329},[1137],{"type":69,"value":1138},"useLoaderData",{"type":64,"tag":200,"props":1140,"children":1141},{"style":431},[1142],{"type":69,"value":1026},{"type":64,"tag":200,"props":1144,"children":1146},{"class":202,"line":1145},25,[1147],{"type":64,"tag":200,"props":1148,"children":1149},{"style":207},[1150],{"type":69,"value":1151},"  \u002F\u002F      ^? { id: string; title: string; body: string }\n",{"type":64,"tag":200,"props":1153,"children":1155},{"class":202,"line":1154},26,[1156],{"type":64,"tag":200,"props":1157,"children":1158},{"emptyLinePlaceholder":303},[1159],{"type":69,"value":306},{"type":64,"tag":200,"props":1161,"children":1163},{"class":202,"line":1162},27,[1164,1169],{"type":64,"tag":200,"props":1165,"children":1166},{"style":217},[1167],{"type":69,"value":1168},"  return",{"type":64,"tag":200,"props":1170,"children":1171},{"style":431},[1172],{"type":69,"value":1173}," (\n",{"type":64,"tag":200,"props":1175,"children":1177},{"class":202,"line":1176},28,[1178,1183,1188],{"type":64,"tag":200,"props":1179,"children":1180},{"style":223},[1181],{"type":69,"value":1182},"    \u003C",{"type":64,"tag":200,"props":1184,"children":1185},{"style":431},[1186],{"type":69,"value":1187},"div",{"type":64,"tag":200,"props":1189,"children":1190},{"style":223},[1191],{"type":69,"value":1192},">\n",{"type":64,"tag":200,"props":1194,"children":1196},{"class":202,"line":1195},29,[1197,1202,1206,1211,1216,1220,1225,1230,1234],{"type":64,"tag":200,"props":1198,"children":1199},{"style":223},[1200],{"type":69,"value":1201},"      \u003C",{"type":64,"tag":200,"props":1203,"children":1204},{"style":431},[1205],{"type":69,"value":65},{"type":64,"tag":200,"props":1207,"children":1208},{"style":223},[1209],{"type":69,"value":1210},">{",{"type":64,"tag":200,"props":1212,"children":1213},{"style":229},[1214],{"type":69,"value":1215},"post",{"type":64,"tag":200,"props":1217,"children":1218},{"style":223},[1219],{"type":69,"value":152},{"type":64,"tag":200,"props":1221,"children":1222},{"style":229},[1223],{"type":69,"value":1224},"title",{"type":64,"tag":200,"props":1226,"children":1227},{"style":223},[1228],{"type":69,"value":1229},"}\u003C\u002F",{"type":64,"tag":200,"props":1231,"children":1232},{"style":431},[1233],{"type":69,"value":65},{"type":64,"tag":200,"props":1235,"children":1236},{"style":223},[1237],{"type":69,"value":1192},{"type":64,"tag":200,"props":1239,"children":1241},{"class":202,"line":1240},30,[1242,1246,1250,1255,1260,1264,1269,1273,1277],{"type":64,"tag":200,"props":1243,"children":1244},{"style":223},[1245],{"type":69,"value":1201},{"type":64,"tag":200,"props":1247,"children":1248},{"style":431},[1249],{"type":69,"value":72},{"type":64,"tag":200,"props":1251,"children":1252},{"style":223},[1253],{"type":69,"value":1254},">",{"type":64,"tag":200,"props":1256,"children":1257},{"style":229},[1258],{"type":69,"value":1259},"Page ",{"type":64,"tag":200,"props":1261,"children":1262},{"style":223},[1263],{"type":69,"value":341},{"type":64,"tag":200,"props":1265,"children":1266},{"style":229},[1267],{"type":69,"value":1268},"page",{"type":64,"tag":200,"props":1270,"children":1271},{"style":223},[1272],{"type":69,"value":1229},{"type":64,"tag":200,"props":1274,"children":1275},{"style":431},[1276],{"type":69,"value":72},{"type":64,"tag":200,"props":1278,"children":1279},{"style":223},[1280],{"type":69,"value":1192},{"type":64,"tag":200,"props":1282,"children":1284},{"class":202,"line":1283},31,[1285,1290,1294],{"type":64,"tag":200,"props":1286,"children":1287},{"style":223},[1288],{"type":69,"value":1289},"    \u003C\u002F",{"type":64,"tag":200,"props":1291,"children":1292},{"style":431},[1293],{"type":69,"value":1187},{"type":64,"tag":200,"props":1295,"children":1296},{"style":223},[1297],{"type":69,"value":1192},{"type":64,"tag":200,"props":1299,"children":1301},{"class":202,"line":1300},32,[1302],{"type":64,"tag":200,"props":1303,"children":1304},{"style":431},[1305],{"type":69,"value":1306},"  )\n",{"type":64,"tag":200,"props":1308,"children":1310},{"class":202,"line":1309},33,[1311],{"type":64,"tag":200,"props":1312,"children":1313},{"style":223},[1314],{"type":69,"value":467},{"type":64,"tag":532,"props":1316,"children":1318},{"id":1317},"context-flows-through-the-tree",[1319],{"type":69,"value":1320},"Context Flows Through the Tree",{"type":64,"tag":189,"props":1322,"children":1324},{"className":191,"code":1323,"language":193,"meta":194,"style":194},"\u002F\u002F src\u002Froutes\u002F__root.tsx\nimport { createRootRouteWithContext, Outlet } from '@tanstack\u002Freact-router'\n\ninterface RouterContext {\n  auth: { userId: string; role: 'admin' | 'user' } | null\n}\n\n\u002F\u002F Note: createRootRouteWithContext is a FACTORY — call it TWICE: ()()\nexport const Route = createRootRouteWithContext\u003CRouterContext>()({\n  component: () => \u003COutlet \u002F>,\n})\n",[1325],{"type":64,"tag":100,"props":1326,"children":1327},{"__ignoreMap":194},[1328,1336,1381,1388,1405,1493,1500,1507,1515,1560,1595],{"type":64,"tag":200,"props":1329,"children":1330},{"class":202,"line":203},[1331],{"type":64,"tag":200,"props":1332,"children":1333},{"style":207},[1334],{"type":69,"value":1335},"\u002F\u002F src\u002Froutes\u002F__root.tsx\n",{"type":64,"tag":200,"props":1337,"children":1338},{"class":202,"line":213},[1339,1343,1347,1352,1356,1361,1365,1369,1373,1377],{"type":64,"tag":200,"props":1340,"children":1341},{"style":217},[1342],{"type":69,"value":220},{"type":64,"tag":200,"props":1344,"children":1345},{"style":223},[1346],{"type":69,"value":226},{"type":64,"tag":200,"props":1348,"children":1349},{"style":229},[1350],{"type":69,"value":1351}," createRootRouteWithContext",{"type":64,"tag":200,"props":1353,"children":1354},{"style":223},[1355],{"type":69,"value":693},{"type":64,"tag":200,"props":1357,"children":1358},{"style":229},[1359],{"type":69,"value":1360}," Outlet",{"type":64,"tag":200,"props":1362,"children":1363},{"style":223},[1364],{"type":69,"value":237},{"type":64,"tag":200,"props":1366,"children":1367},{"style":217},[1368],{"type":69,"value":242},{"type":64,"tag":200,"props":1370,"children":1371},{"style":223},[1372],{"type":69,"value":247},{"type":64,"tag":200,"props":1374,"children":1375},{"style":250},[1376],{"type":69,"value":253},{"type":64,"tag":200,"props":1378,"children":1379},{"style":223},[1380],{"type":69,"value":258},{"type":64,"tag":200,"props":1382,"children":1383},{"class":202,"line":261},[1384],{"type":64,"tag":200,"props":1385,"children":1386},{"emptyLinePlaceholder":303},[1387],{"type":69,"value":306},{"type":64,"tag":200,"props":1389,"children":1390},{"class":202,"line":299},[1391,1396,1401],{"type":64,"tag":200,"props":1392,"children":1393},{"style":313},[1394],{"type":69,"value":1395},"interface",{"type":64,"tag":200,"props":1397,"children":1398},{"style":417},[1399],{"type":69,"value":1400}," RouterContext",{"type":64,"tag":200,"props":1402,"children":1403},{"style":223},[1404],{"type":69,"value":405},{"type":64,"tag":200,"props":1406,"children":1407},{"class":202,"line":309},[1408,1413,1417,1421,1426,1430,1435,1440,1445,1449,1453,1458,1462,1467,1471,1476,1480,1484,1488],{"type":64,"tag":200,"props":1409,"children":1410},{"style":431},[1411],{"type":69,"value":1412},"  auth",{"type":64,"tag":200,"props":1414,"children":1415},{"style":223},[1416],{"type":69,"value":439},{"type":64,"tag":200,"props":1418,"children":1419},{"style":223},[1420],{"type":69,"value":226},{"type":64,"tag":200,"props":1422,"children":1423},{"style":431},[1424],{"type":69,"value":1425}," userId",{"type":64,"tag":200,"props":1427,"children":1428},{"style":223},[1429],{"type":69,"value":439},{"type":64,"tag":200,"props":1431,"children":1432},{"style":417},[1433],{"type":69,"value":1434}," string",{"type":64,"tag":200,"props":1436,"children":1437},{"style":223},[1438],{"type":69,"value":1439},";",{"type":64,"tag":200,"props":1441,"children":1442},{"style":431},[1443],{"type":69,"value":1444}," role",{"type":64,"tag":200,"props":1446,"children":1447},{"style":223},[1448],{"type":69,"value":439},{"type":64,"tag":200,"props":1450,"children":1451},{"style":223},[1452],{"type":69,"value":247},{"type":64,"tag":200,"props":1454,"children":1455},{"style":250},[1456],{"type":69,"value":1457},"admin",{"type":64,"tag":200,"props":1459,"children":1460},{"style":223},[1461],{"type":69,"value":400},{"type":64,"tag":200,"props":1463,"children":1464},{"style":223},[1465],{"type":69,"value":1466}," |",{"type":64,"tag":200,"props":1468,"children":1469},{"style":223},[1470],{"type":69,"value":247},{"type":64,"tag":200,"props":1472,"children":1473},{"style":250},[1474],{"type":69,"value":1475},"user",{"type":64,"tag":200,"props":1477,"children":1478},{"style":223},[1479],{"type":69,"value":400},{"type":64,"tag":200,"props":1481,"children":1482},{"style":223},[1483],{"type":69,"value":237},{"type":64,"tag":200,"props":1485,"children":1486},{"style":223},[1487],{"type":69,"value":1466},{"type":64,"tag":200,"props":1489,"children":1490},{"style":417},[1491],{"type":69,"value":1492}," null\n",{"type":64,"tag":200,"props":1494,"children":1495},{"class":202,"line":359},[1496],{"type":64,"tag":200,"props":1497,"children":1498},{"style":223},[1499],{"type":69,"value":467},{"type":64,"tag":200,"props":1501,"children":1502},{"class":202,"line":367},[1503],{"type":64,"tag":200,"props":1504,"children":1505},{"emptyLinePlaceholder":303},[1506],{"type":69,"value":306},{"type":64,"tag":200,"props":1508,"children":1509},{"class":202,"line":376},[1510],{"type":64,"tag":200,"props":1511,"children":1512},{"style":207},[1513],{"type":69,"value":1514},"\u002F\u002F Note: createRootRouteWithContext is a FACTORY — call it TWICE: ()()\n",{"type":64,"tag":200,"props":1516,"children":1517},{"class":202,"line":408},[1518,1522,1526,1530,1534,1538,1542,1547,1551,1556],{"type":64,"tag":200,"props":1519,"children":1520},{"style":217},[1521],{"type":69,"value":484},{"type":64,"tag":200,"props":1523,"children":1524},{"style":313},[1525],{"type":69,"value":607},{"type":64,"tag":200,"props":1527,"children":1528},{"style":229},[1529],{"type":69,"value":612},{"type":64,"tag":200,"props":1531,"children":1532},{"style":223},[1533],{"type":69,"value":326},{"type":64,"tag":200,"props":1535,"children":1536},{"style":329},[1537],{"type":69,"value":1351},{"type":64,"tag":200,"props":1539,"children":1540},{"style":223},[1541],{"type":69,"value":683},{"type":64,"tag":200,"props":1543,"children":1544},{"style":417},[1545],{"type":69,"value":1546},"RouterContext",{"type":64,"tag":200,"props":1548,"children":1549},{"style":223},[1550],{"type":69,"value":1254},{"type":64,"tag":200,"props":1552,"children":1553},{"style":229},[1554],{"type":69,"value":1555},"()(",{"type":64,"tag":200,"props":1557,"children":1558},{"style":223},[1559],{"type":69,"value":647},{"type":64,"tag":200,"props":1561,"children":1562},{"class":202,"line":427},[1563,1567,1571,1576,1580,1585,1590],{"type":64,"tag":200,"props":1564,"children":1565},{"style":329},[1566],{"type":69,"value":919},{"type":64,"tag":200,"props":1568,"children":1569},{"style":223},[1570],{"type":69,"value":439},{"type":64,"tag":200,"props":1572,"children":1573},{"style":223},[1574],{"type":69,"value":1575}," ()",{"type":64,"tag":200,"props":1577,"children":1578},{"style":313},[1579],{"type":69,"value":708},{"type":64,"tag":200,"props":1581,"children":1582},{"style":223},[1583],{"type":69,"value":1584}," \u003C",{"type":64,"tag":200,"props":1586,"children":1587},{"style":417},[1588],{"type":69,"value":1589},"Outlet",{"type":64,"tag":200,"props":1591,"children":1592},{"style":223},[1593],{"type":69,"value":1594}," \u002F>,\n",{"type":64,"tag":200,"props":1596,"children":1597},{"class":202,"line":452},[1598,1602],{"type":64,"tag":200,"props":1599,"children":1600},{"style":223},[1601],{"type":69,"value":351},{"type":64,"tag":200,"props":1603,"children":1604},{"style":229},[1605],{"type":69,"value":356},{"type":64,"tag":189,"props":1607,"children":1609},{"className":191,"code":1608,"language":193,"meta":194,"style":194},"\u002F\u002F src\u002Froutes\u002Fdashboard.tsx\nimport { createFileRoute, redirect } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fdashboard')({\n  beforeLoad: ({ context }) => {\n    \u002F\u002F context.auth is already typed as { userId: string; role: 'admin' | 'user' } | null\n    \u002F\u002F NO annotation needed\n    if (!context.auth) throw redirect({ to: '\u002Flogin' })\n    return { user: context.auth }\n  },\n  loader: ({ context }) => {\n    \u002F\u002F context.user is typed as { userId: string; role: 'admin' | 'user' }\n    \u002F\u002F This was added by beforeLoad above — fully inferred\n    return fetchDashboard(context.user.userId)\n  },\n  component: DashboardComponent,\n})\n\nfunction DashboardComponent() {\n  const data = Route.useLoaderData()\n  const { user } = Route.useRouteContext()\n  return \u003Ch1>Welcome {user.userId}\u003C\u002Fh1>\n}\n",[1610],{"type":64,"tag":100,"props":1611,"children":1612},{"__ignoreMap":194},[1613,1621,1665,1672,1720,1753,1761,1769,1852,1888,1895,1926,1934,1942,1983,1990,2010,2021,2028,2047,2079,2119,2171],{"type":64,"tag":200,"props":1614,"children":1615},{"class":202,"line":203},[1616],{"type":64,"tag":200,"props":1617,"children":1618},{"style":207},[1619],{"type":69,"value":1620},"\u002F\u002F src\u002Froutes\u002Fdashboard.tsx\n",{"type":64,"tag":200,"props":1622,"children":1623},{"class":202,"line":213},[1624,1628,1632,1636,1640,1645,1649,1653,1657,1661],{"type":64,"tag":200,"props":1625,"children":1626},{"style":217},[1627],{"type":69,"value":220},{"type":64,"tag":200,"props":1629,"children":1630},{"style":223},[1631],{"type":69,"value":226},{"type":64,"tag":200,"props":1633,"children":1634},{"style":229},[1635],{"type":69,"value":568},{"type":64,"tag":200,"props":1637,"children":1638},{"style":223},[1639],{"type":69,"value":693},{"type":64,"tag":200,"props":1641,"children":1642},{"style":229},[1643],{"type":69,"value":1644}," redirect",{"type":64,"tag":200,"props":1646,"children":1647},{"style":223},[1648],{"type":69,"value":237},{"type":64,"tag":200,"props":1650,"children":1651},{"style":217},[1652],{"type":69,"value":242},{"type":64,"tag":200,"props":1654,"children":1655},{"style":223},[1656],{"type":69,"value":247},{"type":64,"tag":200,"props":1658,"children":1659},{"style":250},[1660],{"type":69,"value":253},{"type":64,"tag":200,"props":1662,"children":1663},{"style":223},[1664],{"type":69,"value":258},{"type":64,"tag":200,"props":1666,"children":1667},{"class":202,"line":261},[1668],{"type":64,"tag":200,"props":1669,"children":1670},{"emptyLinePlaceholder":303},[1671],{"type":69,"value":306},{"type":64,"tag":200,"props":1673,"children":1674},{"class":202,"line":299},[1675,1679,1683,1687,1691,1695,1699,1703,1708,1712,1716],{"type":64,"tag":200,"props":1676,"children":1677},{"style":217},[1678],{"type":69,"value":484},{"type":64,"tag":200,"props":1680,"children":1681},{"style":313},[1682],{"type":69,"value":607},{"type":64,"tag":200,"props":1684,"children":1685},{"style":229},[1686],{"type":69,"value":612},{"type":64,"tag":200,"props":1688,"children":1689},{"style":223},[1690],{"type":69,"value":326},{"type":64,"tag":200,"props":1692,"children":1693},{"style":329},[1694],{"type":69,"value":568},{"type":64,"tag":200,"props":1696,"children":1697},{"style":229},[1698],{"type":69,"value":336},{"type":64,"tag":200,"props":1700,"children":1701},{"style":223},[1702],{"type":69,"value":400},{"type":64,"tag":200,"props":1704,"children":1705},{"style":250},[1706],{"type":69,"value":1707},"\u002Fdashboard",{"type":64,"tag":200,"props":1709,"children":1710},{"style":223},[1711],{"type":69,"value":400},{"type":64,"tag":200,"props":1713,"children":1714},{"style":229},[1715],{"type":69,"value":642},{"type":64,"tag":200,"props":1717,"children":1718},{"style":223},[1719],{"type":69,"value":647},{"type":64,"tag":200,"props":1721,"children":1722},{"class":202,"line":309},[1723,1728,1732,1736,1741,1745,1749],{"type":64,"tag":200,"props":1724,"children":1725},{"style":329},[1726],{"type":69,"value":1727},"  beforeLoad",{"type":64,"tag":200,"props":1729,"children":1730},{"style":223},[1731],{"type":69,"value":439},{"type":64,"tag":200,"props":1733,"children":1734},{"style":223},[1735],{"type":69,"value":806},{"type":64,"tag":200,"props":1737,"children":1738},{"style":667},[1739],{"type":69,"value":1740}," context",{"type":64,"tag":200,"props":1742,"children":1743},{"style":223},[1744],{"type":69,"value":816},{"type":64,"tag":200,"props":1746,"children":1747},{"style":313},[1748],{"type":69,"value":708},{"type":64,"tag":200,"props":1750,"children":1751},{"style":223},[1752],{"type":69,"value":405},{"type":64,"tag":200,"props":1754,"children":1755},{"class":202,"line":359},[1756],{"type":64,"tag":200,"props":1757,"children":1758},{"style":207},[1759],{"type":69,"value":1760},"    \u002F\u002F context.auth is already typed as { userId: string; role: 'admin' | 'user' } | null\n",{"type":64,"tag":200,"props":1762,"children":1763},{"class":202,"line":367},[1764],{"type":64,"tag":200,"props":1765,"children":1766},{"style":207},[1767],{"type":69,"value":1768},"    \u002F\u002F NO annotation needed\n",{"type":64,"tag":200,"props":1770,"children":1771},{"class":202,"line":376},[1772,1777,1781,1786,1791,1795,1800,1805,1810,1814,1818,1822,1827,1831,1835,1840,1844,1848],{"type":64,"tag":200,"props":1773,"children":1774},{"style":217},[1775],{"type":69,"value":1776},"    if",{"type":64,"tag":200,"props":1778,"children":1779},{"style":431},[1780],{"type":69,"value":664},{"type":64,"tag":200,"props":1782,"children":1783},{"style":223},[1784],{"type":69,"value":1785},"!",{"type":64,"tag":200,"props":1787,"children":1788},{"style":229},[1789],{"type":69,"value":1790},"context",{"type":64,"tag":200,"props":1792,"children":1793},{"style":223},[1794],{"type":69,"value":152},{"type":64,"tag":200,"props":1796,"children":1797},{"style":229},[1798],{"type":69,"value":1799},"auth",{"type":64,"tag":200,"props":1801,"children":1802},{"style":431},[1803],{"type":69,"value":1804},") ",{"type":64,"tag":200,"props":1806,"children":1807},{"style":217},[1808],{"type":69,"value":1809},"throw",{"type":64,"tag":200,"props":1811,"children":1812},{"style":329},[1813],{"type":69,"value":1644},{"type":64,"tag":200,"props":1815,"children":1816},{"style":431},[1817],{"type":69,"value":336},{"type":64,"tag":200,"props":1819,"children":1820},{"style":223},[1821],{"type":69,"value":341},{"type":64,"tag":200,"props":1823,"children":1824},{"style":431},[1825],{"type":69,"value":1826}," to",{"type":64,"tag":200,"props":1828,"children":1829},{"style":223},[1830],{"type":69,"value":439},{"type":64,"tag":200,"props":1832,"children":1833},{"style":223},[1834],{"type":69,"value":247},{"type":64,"tag":200,"props":1836,"children":1837},{"style":250},[1838],{"type":69,"value":1839},"\u002Flogin",{"type":64,"tag":200,"props":1841,"children":1842},{"style":223},[1843],{"type":69,"value":400},{"type":64,"tag":200,"props":1845,"children":1846},{"style":223},[1847],{"type":69,"value":237},{"type":64,"tag":200,"props":1849,"children":1850},{"style":431},[1851],{"type":69,"value":356},{"type":64,"tag":200,"props":1853,"children":1854},{"class":202,"line":408},[1855,1859,1863,1868,1872,1876,1880,1884],{"type":64,"tag":200,"props":1856,"children":1857},{"style":217},[1858],{"type":69,"value":890},{"type":64,"tag":200,"props":1860,"children":1861},{"style":223},[1862],{"type":69,"value":226},{"type":64,"tag":200,"props":1864,"children":1865},{"style":431},[1866],{"type":69,"value":1867}," user",{"type":64,"tag":200,"props":1869,"children":1870},{"style":223},[1871],{"type":69,"value":439},{"type":64,"tag":200,"props":1873,"children":1874},{"style":229},[1875],{"type":69,"value":1740},{"type":64,"tag":200,"props":1877,"children":1878},{"style":223},[1879],{"type":69,"value":152},{"type":64,"tag":200,"props":1881,"children":1882},{"style":229},[1883],{"type":69,"value":1799},{"type":64,"tag":200,"props":1885,"children":1886},{"style":223},[1887],{"type":69,"value":903},{"type":64,"tag":200,"props":1889,"children":1890},{"class":202,"line":427},[1891],{"type":64,"tag":200,"props":1892,"children":1893},{"style":223},[1894],{"type":69,"value":911},{"type":64,"tag":200,"props":1896,"children":1897},{"class":202,"line":452},[1898,1902,1906,1910,1914,1918,1922],{"type":64,"tag":200,"props":1899,"children":1900},{"style":329},[1901],{"type":69,"value":792},{"type":64,"tag":200,"props":1903,"children":1904},{"style":223},[1905],{"type":69,"value":439},{"type":64,"tag":200,"props":1907,"children":1908},{"style":223},[1909],{"type":69,"value":806},{"type":64,"tag":200,"props":1911,"children":1912},{"style":667},[1913],{"type":69,"value":1740},{"type":64,"tag":200,"props":1915,"children":1916},{"style":223},[1917],{"type":69,"value":816},{"type":64,"tag":200,"props":1919,"children":1920},{"style":313},[1921],{"type":69,"value":708},{"type":64,"tag":200,"props":1923,"children":1924},{"style":223},[1925],{"type":69,"value":405},{"type":64,"tag":200,"props":1927,"children":1928},{"class":202,"line":461},[1929],{"type":64,"tag":200,"props":1930,"children":1931},{"style":207},[1932],{"type":69,"value":1933},"    \u002F\u002F context.user is typed as { userId: string; role: 'admin' | 'user' }\n",{"type":64,"tag":200,"props":1935,"children":1936},{"class":202,"line":470},[1937],{"type":64,"tag":200,"props":1938,"children":1939},{"style":207},[1940],{"type":69,"value":1941},"    \u002F\u002F This was added by beforeLoad above — fully inferred\n",{"type":64,"tag":200,"props":1943,"children":1944},{"class":202,"line":478},[1945,1949,1954,1958,1962,1966,1970,1974,1979],{"type":64,"tag":200,"props":1946,"children":1947},{"style":217},[1948],{"type":69,"value":890},{"type":64,"tag":200,"props":1950,"children":1951},{"style":329},[1952],{"type":69,"value":1953}," fetchDashboard",{"type":64,"tag":200,"props":1955,"children":1956},{"style":431},[1957],{"type":69,"value":336},{"type":64,"tag":200,"props":1959,"children":1960},{"style":229},[1961],{"type":69,"value":1790},{"type":64,"tag":200,"props":1963,"children":1964},{"style":223},[1965],{"type":69,"value":152},{"type":64,"tag":200,"props":1967,"children":1968},{"style":229},[1969],{"type":69,"value":1475},{"type":64,"tag":200,"props":1971,"children":1972},{"style":223},[1973],{"type":69,"value":152},{"type":64,"tag":200,"props":1975,"children":1976},{"style":229},[1977],{"type":69,"value":1978},"userId",{"type":64,"tag":200,"props":1980,"children":1981},{"style":431},[1982],{"type":69,"value":356},{"type":64,"tag":200,"props":1984,"children":1985},{"class":202,"line":946},[1986],{"type":64,"tag":200,"props":1987,"children":1988},{"style":223},[1989],{"type":69,"value":911},{"type":64,"tag":200,"props":1991,"children":1992},{"class":202,"line":954},[1993,1997,2001,2006],{"type":64,"tag":200,"props":1994,"children":1995},{"style":431},[1996],{"type":69,"value":919},{"type":64,"tag":200,"props":1998,"children":1999},{"style":223},[2000],{"type":69,"value":439},{"type":64,"tag":200,"props":2002,"children":2003},{"style":229},[2004],{"type":69,"value":2005}," DashboardComponent",{"type":64,"tag":200,"props":2007,"children":2008},{"style":223},[2009],{"type":69,"value":768},{"type":64,"tag":200,"props":2011,"children":2012},{"class":202,"line":976},[2013,2017],{"type":64,"tag":200,"props":2014,"children":2015},{"style":223},[2016],{"type":69,"value":351},{"type":64,"tag":200,"props":2018,"children":2019},{"style":229},[2020],{"type":69,"value":356},{"type":64,"tag":200,"props":2022,"children":2023},{"class":202,"line":985},[2024],{"type":64,"tag":200,"props":2025,"children":2026},{"emptyLinePlaceholder":303},[2027],{"type":69,"value":306},{"type":64,"tag":200,"props":2029,"children":2030},{"class":202,"line":1029},[2031,2035,2039,2043],{"type":64,"tag":200,"props":2032,"children":2033},{"style":313},[2034],{"type":69,"value":960},{"type":64,"tag":200,"props":2036,"children":2037},{"style":329},[2038],{"type":69,"value":2005},{"type":64,"tag":200,"props":2040,"children":2041},{"style":223},[2042],{"type":69,"value":969},{"type":64,"tag":200,"props":2044,"children":2045},{"style":223},[2046],{"type":69,"value":405},{"type":64,"tag":200,"props":2048,"children":2049},{"class":202,"line":1038},[2050,2054,2059,2063,2067,2071,2075],{"type":64,"tag":200,"props":2051,"children":2052},{"style":313},[2053],{"type":69,"value":991},{"type":64,"tag":200,"props":2055,"children":2056},{"style":229},[2057],{"type":69,"value":2058}," data",{"type":64,"tag":200,"props":2060,"children":2061},{"style":223},[2062],{"type":69,"value":850},{"type":64,"tag":200,"props":2064,"children":2065},{"style":229},[2066],{"type":69,"value":1013},{"type":64,"tag":200,"props":2068,"children":2069},{"style":223},[2070],{"type":69,"value":152},{"type":64,"tag":200,"props":2072,"children":2073},{"style":329},[2074],{"type":69,"value":1138},{"type":64,"tag":200,"props":2076,"children":2077},{"style":431},[2078],{"type":69,"value":1026},{"type":64,"tag":200,"props":2080,"children":2081},{"class":202,"line":1046},[2082,2086,2090,2094,2098,2102,2106,2110,2115],{"type":64,"tag":200,"props":2083,"children":2084},{"style":313},[2085],{"type":69,"value":991},{"type":64,"tag":200,"props":2087,"children":2088},{"style":223},[2089],{"type":69,"value":226},{"type":64,"tag":200,"props":2091,"children":2092},{"style":229},[2093],{"type":69,"value":1867},{"type":64,"tag":200,"props":2095,"children":2096},{"style":223},[2097],{"type":69,"value":237},{"type":64,"tag":200,"props":2099,"children":2100},{"style":223},[2101],{"type":69,"value":850},{"type":64,"tag":200,"props":2103,"children":2104},{"style":229},[2105],{"type":69,"value":1013},{"type":64,"tag":200,"props":2107,"children":2108},{"style":223},[2109],{"type":69,"value":152},{"type":64,"tag":200,"props":2111,"children":2112},{"style":329},[2113],{"type":69,"value":2114},"useRouteContext",{"type":64,"tag":200,"props":2116,"children":2117},{"style":431},[2118],{"type":69,"value":1026},{"type":64,"tag":200,"props":2120,"children":2121},{"class":202,"line":1087},[2122,2126,2130,2134,2138,2143,2147,2151,2155,2159,2163,2167],{"type":64,"tag":200,"props":2123,"children":2124},{"style":217},[2125],{"type":69,"value":1168},{"type":64,"tag":200,"props":2127,"children":2128},{"style":223},[2129],{"type":69,"value":1584},{"type":64,"tag":200,"props":2131,"children":2132},{"style":431},[2133],{"type":69,"value":65},{"type":64,"tag":200,"props":2135,"children":2136},{"style":223},[2137],{"type":69,"value":1254},{"type":64,"tag":200,"props":2139,"children":2140},{"style":229},[2141],{"type":69,"value":2142},"Welcome ",{"type":64,"tag":200,"props":2144,"children":2145},{"style":223},[2146],{"type":69,"value":341},{"type":64,"tag":200,"props":2148,"children":2149},{"style":229},[2150],{"type":69,"value":1475},{"type":64,"tag":200,"props":2152,"children":2153},{"style":223},[2154],{"type":69,"value":152},{"type":64,"tag":200,"props":2156,"children":2157},{"style":229},[2158],{"type":69,"value":1978},{"type":64,"tag":200,"props":2160,"children":2161},{"style":223},[2162],{"type":69,"value":1229},{"type":64,"tag":200,"props":2164,"children":2165},{"style":431},[2166],{"type":69,"value":65},{"type":64,"tag":200,"props":2168,"children":2169},{"style":223},[2170],{"type":69,"value":1192},{"type":64,"tag":200,"props":2172,"children":2173},{"class":202,"line":1096},[2174],{"type":64,"tag":200,"props":2175,"children":2176},{"style":223},[2177],{"type":69,"value":467},{"type":64,"tag":154,"props":2179,"children":2181},{"id":2180},"narrowing-with-from",[2182,2184],{"type":69,"value":2183},"Narrowing with ",{"type":64,"tag":100,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":69,"value":2189},"from",{"type":64,"tag":72,"props":2191,"children":2192},{},[2193,2195,2200],{"type":69,"value":2194},"Without ",{"type":64,"tag":100,"props":2196,"children":2198},{"className":2197},[],[2199],{"type":69,"value":2189},{"type":69,"value":2201},", hooks return a union of ALL routes' types — slow for TypeScript and imprecise.",{"type":64,"tag":532,"props":2203,"children":2205},{"id":2204},"on-hooks",[2206],{"type":69,"value":2207},"On Hooks",{"type":64,"tag":189,"props":2209,"children":2211},{"className":191,"code":2210,"language":193,"meta":194,"style":194},"import { useSearch, useParams, useNavigate } from '@tanstack\u002Freact-router'\n\nfunction PostSidebar() {\n  \u002F\u002F WRONG — search is a union of ALL routes' search params\n  const search = useSearch()\n\n  \u002F\u002F CORRECT — search is narrowed to \u002Fposts\u002F$postId's search params\n  const search = useSearch({ from: '\u002Fposts\u002F$postId' })\n  \u002F\u002F    ^? { page: number }\n\n  \u002F\u002F CORRECT — params narrowed to this route\n  const { postId } = useParams({ from: '\u002Fposts\u002F$postId' })\n\n  \u002F\u002F CORRECT — navigate narrowed for relative paths\n  const navigate = useNavigate({ from: '\u002Fposts\u002F$postId' })\n}\n",[2212],{"type":64,"tag":100,"props":2213,"children":2214},{"__ignoreMap":194},[2215,2269,2276,2296,2304,2328,2335,2343,2398,2406,2413,2421,2484,2491,2499,2555],{"type":64,"tag":200,"props":2216,"children":2217},{"class":202,"line":203},[2218,2222,2226,2231,2235,2240,2244,2249,2253,2257,2261,2265],{"type":64,"tag":200,"props":2219,"children":2220},{"style":217},[2221],{"type":69,"value":220},{"type":64,"tag":200,"props":2223,"children":2224},{"style":223},[2225],{"type":69,"value":226},{"type":64,"tag":200,"props":2227,"children":2228},{"style":229},[2229],{"type":69,"value":2230}," useSearch",{"type":64,"tag":200,"props":2232,"children":2233},{"style":223},[2234],{"type":69,"value":693},{"type":64,"tag":200,"props":2236,"children":2237},{"style":229},[2238],{"type":69,"value":2239}," useParams",{"type":64,"tag":200,"props":2241,"children":2242},{"style":223},[2243],{"type":69,"value":693},{"type":64,"tag":200,"props":2245,"children":2246},{"style":229},[2247],{"type":69,"value":2248}," useNavigate",{"type":64,"tag":200,"props":2250,"children":2251},{"style":223},[2252],{"type":69,"value":237},{"type":64,"tag":200,"props":2254,"children":2255},{"style":217},[2256],{"type":69,"value":242},{"type":64,"tag":200,"props":2258,"children":2259},{"style":223},[2260],{"type":69,"value":247},{"type":64,"tag":200,"props":2262,"children":2263},{"style":250},[2264],{"type":69,"value":253},{"type":64,"tag":200,"props":2266,"children":2267},{"style":223},[2268],{"type":69,"value":258},{"type":64,"tag":200,"props":2270,"children":2271},{"class":202,"line":213},[2272],{"type":64,"tag":200,"props":2273,"children":2274},{"emptyLinePlaceholder":303},[2275],{"type":69,"value":306},{"type":64,"tag":200,"props":2277,"children":2278},{"class":202,"line":261},[2279,2283,2288,2292],{"type":64,"tag":200,"props":2280,"children":2281},{"style":313},[2282],{"type":69,"value":960},{"type":64,"tag":200,"props":2284,"children":2285},{"style":329},[2286],{"type":69,"value":2287}," PostSidebar",{"type":64,"tag":200,"props":2289,"children":2290},{"style":223},[2291],{"type":69,"value":969},{"type":64,"tag":200,"props":2293,"children":2294},{"style":223},[2295],{"type":69,"value":405},{"type":64,"tag":200,"props":2297,"children":2298},{"class":202,"line":299},[2299],{"type":64,"tag":200,"props":2300,"children":2301},{"style":207},[2302],{"type":69,"value":2303},"  \u002F\u002F WRONG — search is a union of ALL routes' search params\n",{"type":64,"tag":200,"props":2305,"children":2306},{"class":202,"line":309},[2307,2311,2316,2320,2324],{"type":64,"tag":200,"props":2308,"children":2309},{"style":313},[2310],{"type":69,"value":991},{"type":64,"tag":200,"props":2312,"children":2313},{"style":229},[2314],{"type":69,"value":2315}," search",{"type":64,"tag":200,"props":2317,"children":2318},{"style":223},[2319],{"type":69,"value":850},{"type":64,"tag":200,"props":2321,"children":2322},{"style":329},[2323],{"type":69,"value":2230},{"type":64,"tag":200,"props":2325,"children":2326},{"style":431},[2327],{"type":69,"value":1026},{"type":64,"tag":200,"props":2329,"children":2330},{"class":202,"line":359},[2331],{"type":64,"tag":200,"props":2332,"children":2333},{"emptyLinePlaceholder":303},[2334],{"type":69,"value":306},{"type":64,"tag":200,"props":2336,"children":2337},{"class":202,"line":367},[2338],{"type":64,"tag":200,"props":2339,"children":2340},{"style":207},[2341],{"type":69,"value":2342},"  \u002F\u002F CORRECT — search is narrowed to \u002Fposts\u002F$postId's search params\n",{"type":64,"tag":200,"props":2344,"children":2345},{"class":202,"line":376},[2346,2350,2354,2358,2362,2366,2370,2374,2378,2382,2386,2390,2394],{"type":64,"tag":200,"props":2347,"children":2348},{"style":313},[2349],{"type":69,"value":991},{"type":64,"tag":200,"props":2351,"children":2352},{"style":229},[2353],{"type":69,"value":2315},{"type":64,"tag":200,"props":2355,"children":2356},{"style":223},[2357],{"type":69,"value":850},{"type":64,"tag":200,"props":2359,"children":2360},{"style":329},[2361],{"type":69,"value":2230},{"type":64,"tag":200,"props":2363,"children":2364},{"style":431},[2365],{"type":69,"value":336},{"type":64,"tag":200,"props":2367,"children":2368},{"style":223},[2369],{"type":69,"value":341},{"type":64,"tag":200,"props":2371,"children":2372},{"style":431},[2373],{"type":69,"value":242},{"type":64,"tag":200,"props":2375,"children":2376},{"style":223},[2377],{"type":69,"value":439},{"type":64,"tag":200,"props":2379,"children":2380},{"style":223},[2381],{"type":69,"value":247},{"type":64,"tag":200,"props":2383,"children":2384},{"style":250},[2385],{"type":69,"value":633},{"type":64,"tag":200,"props":2387,"children":2388},{"style":223},[2389],{"type":69,"value":400},{"type":64,"tag":200,"props":2391,"children":2392},{"style":223},[2393],{"type":69,"value":237},{"type":64,"tag":200,"props":2395,"children":2396},{"style":431},[2397],{"type":69,"value":356},{"type":64,"tag":200,"props":2399,"children":2400},{"class":202,"line":408},[2401],{"type":64,"tag":200,"props":2402,"children":2403},{"style":207},[2404],{"type":69,"value":2405},"  \u002F\u002F    ^? { page: number }\n",{"type":64,"tag":200,"props":2407,"children":2408},{"class":202,"line":427},[2409],{"type":64,"tag":200,"props":2410,"children":2411},{"emptyLinePlaceholder":303},[2412],{"type":69,"value":306},{"type":64,"tag":200,"props":2414,"children":2415},{"class":202,"line":452},[2416],{"type":64,"tag":200,"props":2417,"children":2418},{"style":207},[2419],{"type":69,"value":2420},"  \u002F\u002F CORRECT — params narrowed to this route\n",{"type":64,"tag":200,"props":2422,"children":2423},{"class":202,"line":461},[2424,2428,2432,2436,2440,2444,2448,2452,2456,2460,2464,2468,2472,2476,2480],{"type":64,"tag":200,"props":2425,"children":2426},{"style":313},[2427],{"type":69,"value":991},{"type":64,"tag":200,"props":2429,"children":2430},{"style":223},[2431],{"type":69,"value":226},{"type":64,"tag":200,"props":2433,"children":2434},{"style":229},[2435],{"type":69,"value":1000},{"type":64,"tag":200,"props":2437,"children":2438},{"style":223},[2439],{"type":69,"value":237},{"type":64,"tag":200,"props":2441,"children":2442},{"style":223},[2443],{"type":69,"value":850},{"type":64,"tag":200,"props":2445,"children":2446},{"style":329},[2447],{"type":69,"value":2239},{"type":64,"tag":200,"props":2449,"children":2450},{"style":431},[2451],{"type":69,"value":336},{"type":64,"tag":200,"props":2453,"children":2454},{"style":223},[2455],{"type":69,"value":341},{"type":64,"tag":200,"props":2457,"children":2458},{"style":431},[2459],{"type":69,"value":242},{"type":64,"tag":200,"props":2461,"children":2462},{"style":223},[2463],{"type":69,"value":439},{"type":64,"tag":200,"props":2465,"children":2466},{"style":223},[2467],{"type":69,"value":247},{"type":64,"tag":200,"props":2469,"children":2470},{"style":250},[2471],{"type":69,"value":633},{"type":64,"tag":200,"props":2473,"children":2474},{"style":223},[2475],{"type":69,"value":400},{"type":64,"tag":200,"props":2477,"children":2478},{"style":223},[2479],{"type":69,"value":237},{"type":64,"tag":200,"props":2481,"children":2482},{"style":431},[2483],{"type":69,"value":356},{"type":64,"tag":200,"props":2485,"children":2486},{"class":202,"line":470},[2487],{"type":64,"tag":200,"props":2488,"children":2489},{"emptyLinePlaceholder":303},[2490],{"type":69,"value":306},{"type":64,"tag":200,"props":2492,"children":2493},{"class":202,"line":478},[2494],{"type":64,"tag":200,"props":2495,"children":2496},{"style":207},[2497],{"type":69,"value":2498},"  \u002F\u002F CORRECT — navigate narrowed for relative paths\n",{"type":64,"tag":200,"props":2500,"children":2501},{"class":202,"line":946},[2502,2506,2511,2515,2519,2523,2527,2531,2535,2539,2543,2547,2551],{"type":64,"tag":200,"props":2503,"children":2504},{"style":313},[2505],{"type":69,"value":991},{"type":64,"tag":200,"props":2507,"children":2508},{"style":229},[2509],{"type":69,"value":2510}," navigate",{"type":64,"tag":200,"props":2512,"children":2513},{"style":223},[2514],{"type":69,"value":850},{"type":64,"tag":200,"props":2516,"children":2517},{"style":329},[2518],{"type":69,"value":2248},{"type":64,"tag":200,"props":2520,"children":2521},{"style":431},[2522],{"type":69,"value":336},{"type":64,"tag":200,"props":2524,"children":2525},{"style":223},[2526],{"type":69,"value":341},{"type":64,"tag":200,"props":2528,"children":2529},{"style":431},[2530],{"type":69,"value":242},{"type":64,"tag":200,"props":2532,"children":2533},{"style":223},[2534],{"type":69,"value":439},{"type":64,"tag":200,"props":2536,"children":2537},{"style":223},[2538],{"type":69,"value":247},{"type":64,"tag":200,"props":2540,"children":2541},{"style":250},[2542],{"type":69,"value":633},{"type":64,"tag":200,"props":2544,"children":2545},{"style":223},[2546],{"type":69,"value":400},{"type":64,"tag":200,"props":2548,"children":2549},{"style":223},[2550],{"type":69,"value":237},{"type":64,"tag":200,"props":2552,"children":2553},{"style":431},[2554],{"type":69,"value":356},{"type":64,"tag":200,"props":2556,"children":2557},{"class":202,"line":954},[2558],{"type":64,"tag":200,"props":2559,"children":2560},{"style":223},[2561],{"type":69,"value":467},{"type":64,"tag":532,"props":2563,"children":2565},{"id":2564},"on-link",[2566,2568],{"type":69,"value":2567},"On ",{"type":64,"tag":100,"props":2569,"children":2571},{"className":2570},[],[2572],{"type":69,"value":170},{"type":64,"tag":189,"props":2574,"children":2576},{"className":191,"code":2575,"language":193,"meta":194,"style":194},"import { Link } from '@tanstack\u002Freact-router'\n\n\u002F\u002F WRONG — search resolves to union of ALL routes' search params, slow TS check\n\u003CLink to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F CORRECT — narrowed, fast TS check\n\u003CLink from=\"\u002Fposts\u002F$postId\" to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F Also correct — Route.fullPath in route components\n\u003CLink from={Route.fullPath} to=\"..\" search={{ page: 0 }} \u002F>\n",[2577],{"type":64,"tag":100,"props":2578,"children":2579},{"__ignoreMap":194},[2580,2616,2623,2631,2691,2698,2706,2781,2788,2796],{"type":64,"tag":200,"props":2581,"children":2582},{"class":202,"line":203},[2583,2587,2591,2596,2600,2604,2608,2612],{"type":64,"tag":200,"props":2584,"children":2585},{"style":217},[2586],{"type":69,"value":220},{"type":64,"tag":200,"props":2588,"children":2589},{"style":223},[2590],{"type":69,"value":226},{"type":64,"tag":200,"props":2592,"children":2593},{"style":229},[2594],{"type":69,"value":2595}," Link",{"type":64,"tag":200,"props":2597,"children":2598},{"style":223},[2599],{"type":69,"value":237},{"type":64,"tag":200,"props":2601,"children":2602},{"style":217},[2603],{"type":69,"value":242},{"type":64,"tag":200,"props":2605,"children":2606},{"style":223},[2607],{"type":69,"value":247},{"type":64,"tag":200,"props":2609,"children":2610},{"style":250},[2611],{"type":69,"value":253},{"type":64,"tag":200,"props":2613,"children":2614},{"style":223},[2615],{"type":69,"value":258},{"type":64,"tag":200,"props":2617,"children":2618},{"class":202,"line":213},[2619],{"type":64,"tag":200,"props":2620,"children":2621},{"emptyLinePlaceholder":303},[2622],{"type":69,"value":306},{"type":64,"tag":200,"props":2624,"children":2625},{"class":202,"line":261},[2626],{"type":64,"tag":200,"props":2627,"children":2628},{"style":207},[2629],{"type":69,"value":2630},"\u002F\u002F WRONG — search resolves to union of ALL routes' search params, slow TS check\n",{"type":64,"tag":200,"props":2632,"children":2633},{"class":202,"line":299},[2634,2638,2642,2646,2650,2655,2660,2664,2668,2673,2677,2681,2686],{"type":64,"tag":200,"props":2635,"children":2636},{"style":223},[2637],{"type":69,"value":683},{"type":64,"tag":200,"props":2639,"children":2640},{"style":417},[2641],{"type":69,"value":170},{"type":64,"tag":200,"props":2643,"children":2644},{"style":313},[2645],{"type":69,"value":1826},{"type":64,"tag":200,"props":2647,"children":2648},{"style":223},[2649],{"type":69,"value":326},{"type":64,"tag":200,"props":2651,"children":2652},{"style":223},[2653],{"type":69,"value":2654},"\"",{"type":64,"tag":200,"props":2656,"children":2657},{"style":250},[2658],{"type":69,"value":2659},"..",{"type":64,"tag":200,"props":2661,"children":2662},{"style":223},[2663],{"type":69,"value":2654},{"type":64,"tag":200,"props":2665,"children":2666},{"style":313},[2667],{"type":69,"value":2315},{"type":64,"tag":200,"props":2669,"children":2670},{"style":223},[2671],{"type":69,"value":2672},"={{",{"type":64,"tag":200,"props":2674,"children":2675},{"style":431},[2676],{"type":69,"value":1060},{"type":64,"tag":200,"props":2678,"children":2679},{"style":223},[2680],{"type":69,"value":439},{"type":64,"tag":200,"props":2682,"children":2683},{"style":755},[2684],{"type":69,"value":2685}," 0",{"type":64,"tag":200,"props":2687,"children":2688},{"style":223},[2689],{"type":69,"value":2690}," }} \u002F>\n",{"type":64,"tag":200,"props":2692,"children":2693},{"class":202,"line":309},[2694],{"type":64,"tag":200,"props":2695,"children":2696},{"emptyLinePlaceholder":303},[2697],{"type":69,"value":306},{"type":64,"tag":200,"props":2699,"children":2700},{"class":202,"line":359},[2701],{"type":64,"tag":200,"props":2702,"children":2703},{"style":207},[2704],{"type":69,"value":2705},"\u002F\u002F CORRECT — narrowed, fast TS check\n",{"type":64,"tag":200,"props":2707,"children":2708},{"class":202,"line":367},[2709,2713,2717,2721,2725,2729,2733,2737,2741,2745,2749,2753,2757,2761,2765,2769,2773,2777],{"type":64,"tag":200,"props":2710,"children":2711},{"style":223},[2712],{"type":69,"value":683},{"type":64,"tag":200,"props":2714,"children":2715},{"style":417},[2716],{"type":69,"value":170},{"type":64,"tag":200,"props":2718,"children":2719},{"style":313},[2720],{"type":69,"value":242},{"type":64,"tag":200,"props":2722,"children":2723},{"style":223},[2724],{"type":69,"value":326},{"type":64,"tag":200,"props":2726,"children":2727},{"style":223},[2728],{"type":69,"value":2654},{"type":64,"tag":200,"props":2730,"children":2731},{"style":250},[2732],{"type":69,"value":633},{"type":64,"tag":200,"props":2734,"children":2735},{"style":223},[2736],{"type":69,"value":2654},{"type":64,"tag":200,"props":2738,"children":2739},{"style":313},[2740],{"type":69,"value":1826},{"type":64,"tag":200,"props":2742,"children":2743},{"style":223},[2744],{"type":69,"value":326},{"type":64,"tag":200,"props":2746,"children":2747},{"style":223},[2748],{"type":69,"value":2654},{"type":64,"tag":200,"props":2750,"children":2751},{"style":250},[2752],{"type":69,"value":2659},{"type":64,"tag":200,"props":2754,"children":2755},{"style":223},[2756],{"type":69,"value":2654},{"type":64,"tag":200,"props":2758,"children":2759},{"style":313},[2760],{"type":69,"value":2315},{"type":64,"tag":200,"props":2762,"children":2763},{"style":223},[2764],{"type":69,"value":2672},{"type":64,"tag":200,"props":2766,"children":2767},{"style":431},[2768],{"type":69,"value":1060},{"type":64,"tag":200,"props":2770,"children":2771},{"style":223},[2772],{"type":69,"value":439},{"type":64,"tag":200,"props":2774,"children":2775},{"style":755},[2776],{"type":69,"value":2685},{"type":64,"tag":200,"props":2778,"children":2779},{"style":223},[2780],{"type":69,"value":2690},{"type":64,"tag":200,"props":2782,"children":2783},{"class":202,"line":376},[2784],{"type":64,"tag":200,"props":2785,"children":2786},{"emptyLinePlaceholder":303},[2787],{"type":69,"value":306},{"type":64,"tag":200,"props":2789,"children":2790},{"class":202,"line":408},[2791],{"type":64,"tag":200,"props":2792,"children":2793},{"style":207},[2794],{"type":69,"value":2795},"\u002F\u002F Also correct — Route.fullPath in route components\n",{"type":64,"tag":200,"props":2797,"children":2798},{"class":202,"line":427},[2799,2803,2807,2811,2816,2821,2825,2830,2835,2840,2844,2848,2852,2856,2860,2864,2868,2872,2876],{"type":64,"tag":200,"props":2800,"children":2801},{"style":223},[2802],{"type":69,"value":683},{"type":64,"tag":200,"props":2804,"children":2805},{"style":417},[2806],{"type":69,"value":170},{"type":64,"tag":200,"props":2808,"children":2809},{"style":313},[2810],{"type":69,"value":242},{"type":64,"tag":200,"props":2812,"children":2813},{"style":223},[2814],{"type":69,"value":2815},"={",{"type":64,"tag":200,"props":2817,"children":2818},{"style":229},[2819],{"type":69,"value":2820},"Route",{"type":64,"tag":200,"props":2822,"children":2823},{"style":223},[2824],{"type":69,"value":152},{"type":64,"tag":200,"props":2826,"children":2827},{"style":229},[2828],{"type":69,"value":2829},"fullPath",{"type":64,"tag":200,"props":2831,"children":2832},{"style":223},[2833],{"type":69,"value":2834},"} ",{"type":64,"tag":200,"props":2836,"children":2837},{"style":313},[2838],{"type":69,"value":2839},"to",{"type":64,"tag":200,"props":2841,"children":2842},{"style":223},[2843],{"type":69,"value":326},{"type":64,"tag":200,"props":2845,"children":2846},{"style":223},[2847],{"type":69,"value":2654},{"type":64,"tag":200,"props":2849,"children":2850},{"style":250},[2851],{"type":69,"value":2659},{"type":64,"tag":200,"props":2853,"children":2854},{"style":223},[2855],{"type":69,"value":2654},{"type":64,"tag":200,"props":2857,"children":2858},{"style":313},[2859],{"type":69,"value":2315},{"type":64,"tag":200,"props":2861,"children":2862},{"style":223},[2863],{"type":69,"value":2672},{"type":64,"tag":200,"props":2865,"children":2866},{"style":431},[2867],{"type":69,"value":1060},{"type":64,"tag":200,"props":2869,"children":2870},{"style":223},[2871],{"type":69,"value":439},{"type":64,"tag":200,"props":2873,"children":2874},{"style":755},[2875],{"type":69,"value":2685},{"type":64,"tag":200,"props":2877,"children":2878},{"style":223},[2879],{"type":69,"value":2690},{"type":64,"tag":154,"props":2881,"children":2883},{"id":2882},"shared-components-strict-false",[2884,2886],{"type":69,"value":2885},"Shared Components: ",{"type":64,"tag":100,"props":2887,"children":2889},{"className":2888},[],[2890],{"type":69,"value":2891},"strict: false",{"type":64,"tag":72,"props":2893,"children":2894},{},[2895,2897,2902,2904,2909],{"type":69,"value":2896},"When a component is used across multiple routes, use ",{"type":64,"tag":100,"props":2898,"children":2900},{"className":2899},[],[2901],{"type":69,"value":2891},{"type":69,"value":2903}," instead of ",{"type":64,"tag":100,"props":2905,"children":2907},{"className":2906},[],[2908],{"type":69,"value":2189},{"type":69,"value":439},{"type":64,"tag":189,"props":2911,"children":2913},{"className":191,"code":2912,"language":193,"meta":194,"style":194},"import { useSearch } from '@tanstack\u002Freact-router'\n\nfunction GlobalSearch() {\n  \u002F\u002F Returns union of all routes' search params — no runtime error if route doesn't match\n  const search = useSearch({ strict: false })\n  return \u003Cspan>Query: {search.q ?? ''}\u003C\u002Fspan>\n}\n",[2914],{"type":64,"tag":100,"props":2915,"children":2916},{"__ignoreMap":194},[2917,2952,2959,2979,2987,3037,3099],{"type":64,"tag":200,"props":2918,"children":2919},{"class":202,"line":203},[2920,2924,2928,2932,2936,2940,2944,2948],{"type":64,"tag":200,"props":2921,"children":2922},{"style":217},[2923],{"type":69,"value":220},{"type":64,"tag":200,"props":2925,"children":2926},{"style":223},[2927],{"type":69,"value":226},{"type":64,"tag":200,"props":2929,"children":2930},{"style":229},[2931],{"type":69,"value":2230},{"type":64,"tag":200,"props":2933,"children":2934},{"style":223},[2935],{"type":69,"value":237},{"type":64,"tag":200,"props":2937,"children":2938},{"style":217},[2939],{"type":69,"value":242},{"type":64,"tag":200,"props":2941,"children":2942},{"style":223},[2943],{"type":69,"value":247},{"type":64,"tag":200,"props":2945,"children":2946},{"style":250},[2947],{"type":69,"value":253},{"type":64,"tag":200,"props":2949,"children":2950},{"style":223},[2951],{"type":69,"value":258},{"type":64,"tag":200,"props":2953,"children":2954},{"class":202,"line":213},[2955],{"type":64,"tag":200,"props":2956,"children":2957},{"emptyLinePlaceholder":303},[2958],{"type":69,"value":306},{"type":64,"tag":200,"props":2960,"children":2961},{"class":202,"line":261},[2962,2966,2971,2975],{"type":64,"tag":200,"props":2963,"children":2964},{"style":313},[2965],{"type":69,"value":960},{"type":64,"tag":200,"props":2967,"children":2968},{"style":329},[2969],{"type":69,"value":2970}," GlobalSearch",{"type":64,"tag":200,"props":2972,"children":2973},{"style":223},[2974],{"type":69,"value":969},{"type":64,"tag":200,"props":2976,"children":2977},{"style":223},[2978],{"type":69,"value":405},{"type":64,"tag":200,"props":2980,"children":2981},{"class":202,"line":299},[2982],{"type":64,"tag":200,"props":2983,"children":2984},{"style":207},[2985],{"type":69,"value":2986},"  \u002F\u002F Returns union of all routes' search params — no runtime error if route doesn't match\n",{"type":64,"tag":200,"props":2988,"children":2989},{"class":202,"line":309},[2990,2994,2998,3002,3006,3010,3014,3019,3023,3029,3033],{"type":64,"tag":200,"props":2991,"children":2992},{"style":313},[2993],{"type":69,"value":991},{"type":64,"tag":200,"props":2995,"children":2996},{"style":229},[2997],{"type":69,"value":2315},{"type":64,"tag":200,"props":2999,"children":3000},{"style":223},[3001],{"type":69,"value":850},{"type":64,"tag":200,"props":3003,"children":3004},{"style":329},[3005],{"type":69,"value":2230},{"type":64,"tag":200,"props":3007,"children":3008},{"style":431},[3009],{"type":69,"value":336},{"type":64,"tag":200,"props":3011,"children":3012},{"style":223},[3013],{"type":69,"value":341},{"type":64,"tag":200,"props":3015,"children":3016},{"style":431},[3017],{"type":69,"value":3018}," strict",{"type":64,"tag":200,"props":3020,"children":3021},{"style":223},[3022],{"type":69,"value":439},{"type":64,"tag":200,"props":3024,"children":3026},{"style":3025},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[3027],{"type":69,"value":3028}," false",{"type":64,"tag":200,"props":3030,"children":3031},{"style":223},[3032],{"type":69,"value":237},{"type":64,"tag":200,"props":3034,"children":3035},{"style":431},[3036],{"type":69,"value":356},{"type":64,"tag":200,"props":3038,"children":3039},{"class":202,"line":359},[3040,3044,3048,3052,3056,3061,3065,3069,3073,3078,3082,3087,3091,3095],{"type":64,"tag":200,"props":3041,"children":3042},{"style":217},[3043],{"type":69,"value":1168},{"type":64,"tag":200,"props":3045,"children":3046},{"style":223},[3047],{"type":69,"value":1584},{"type":64,"tag":200,"props":3049,"children":3050},{"style":431},[3051],{"type":69,"value":200},{"type":64,"tag":200,"props":3053,"children":3054},{"style":223},[3055],{"type":69,"value":1254},{"type":64,"tag":200,"props":3057,"children":3058},{"style":229},[3059],{"type":69,"value":3060},"Query: ",{"type":64,"tag":200,"props":3062,"children":3063},{"style":223},[3064],{"type":69,"value":341},{"type":64,"tag":200,"props":3066,"children":3067},{"style":229},[3068],{"type":69,"value":37},{"type":64,"tag":200,"props":3070,"children":3071},{"style":223},[3072],{"type":69,"value":152},{"type":64,"tag":200,"props":3074,"children":3075},{"style":229},[3076],{"type":69,"value":3077},"q ",{"type":64,"tag":200,"props":3079,"children":3080},{"style":223},[3081],{"type":69,"value":752},{"type":64,"tag":200,"props":3083,"children":3084},{"style":223},[3085],{"type":69,"value":3086}," ''",{"type":64,"tag":200,"props":3088,"children":3089},{"style":223},[3090],{"type":69,"value":1229},{"type":64,"tag":200,"props":3092,"children":3093},{"style":431},[3094],{"type":69,"value":200},{"type":64,"tag":200,"props":3096,"children":3097},{"style":223},[3098],{"type":69,"value":1192},{"type":64,"tag":200,"props":3100,"children":3101},{"class":202,"line":367},[3102],{"type":64,"tag":200,"props":3103,"children":3104},{"style":223},[3105],{"type":69,"value":467},{"type":64,"tag":154,"props":3107,"children":3109},{"id":3108},"code-split-files-getrouteapi",[3110,3112],{"type":69,"value":3111},"Code-Split Files: ",{"type":64,"tag":100,"props":3113,"children":3115},{"className":3114},[],[3116],{"type":69,"value":3117},"getRouteApi",{"type":64,"tag":72,"props":3119,"children":3120},{},[3121,3123,3128,3130,3135],{"type":69,"value":3122},"Use ",{"type":64,"tag":100,"props":3124,"children":3126},{"className":3125},[],[3127],{"type":69,"value":3117},{"type":69,"value":3129}," instead of importing ",{"type":64,"tag":100,"props":3131,"children":3133},{"className":3132},[],[3134],{"type":69,"value":2820},{"type":69,"value":3136}," to avoid pulling route config into the lazy chunk:",{"type":64,"tag":189,"props":3138,"children":3140},{"className":191,"code":3139,"language":193,"meta":194,"style":194},"\u002F\u002F src\u002Froutes\u002Fposts.lazy.tsx\nimport { createLazyFileRoute, getRouteApi } from '@tanstack\u002Freact-router'\n\nconst routeApi = getRouteApi('\u002Fposts')\n\nexport const Route = createLazyFileRoute('\u002Fposts')({\n  component: PostsComponent,\n})\n\nfunction PostsComponent() {\n  const data = routeApi.useLoaderData()\n  const { page } = routeApi.useSearch()\n  return \u003Cdiv>Page {page}\u003C\u002Fdiv>\n}\n",[3141],{"type":64,"tag":100,"props":3142,"children":3143},{"__ignoreMap":194},[3144,3152,3197,3204,3245,3252,3299,3319,3330,3337,3356,3388,3427,3470],{"type":64,"tag":200,"props":3145,"children":3146},{"class":202,"line":203},[3147],{"type":64,"tag":200,"props":3148,"children":3149},{"style":207},[3150],{"type":69,"value":3151},"\u002F\u002F src\u002Froutes\u002Fposts.lazy.tsx\n",{"type":64,"tag":200,"props":3153,"children":3154},{"class":202,"line":213},[3155,3159,3163,3168,3172,3177,3181,3185,3189,3193],{"type":64,"tag":200,"props":3156,"children":3157},{"style":217},[3158],{"type":69,"value":220},{"type":64,"tag":200,"props":3160,"children":3161},{"style":223},[3162],{"type":69,"value":226},{"type":64,"tag":200,"props":3164,"children":3165},{"style":229},[3166],{"type":69,"value":3167}," createLazyFileRoute",{"type":64,"tag":200,"props":3169,"children":3170},{"style":223},[3171],{"type":69,"value":693},{"type":64,"tag":200,"props":3173,"children":3174},{"style":229},[3175],{"type":69,"value":3176}," getRouteApi",{"type":64,"tag":200,"props":3178,"children":3179},{"style":223},[3180],{"type":69,"value":237},{"type":64,"tag":200,"props":3182,"children":3183},{"style":217},[3184],{"type":69,"value":242},{"type":64,"tag":200,"props":3186,"children":3187},{"style":223},[3188],{"type":69,"value":247},{"type":64,"tag":200,"props":3190,"children":3191},{"style":250},[3192],{"type":69,"value":253},{"type":64,"tag":200,"props":3194,"children":3195},{"style":223},[3196],{"type":69,"value":258},{"type":64,"tag":200,"props":3198,"children":3199},{"class":202,"line":261},[3200],{"type":64,"tag":200,"props":3201,"children":3202},{"emptyLinePlaceholder":303},[3203],{"type":69,"value":306},{"type":64,"tag":200,"props":3205,"children":3206},{"class":202,"line":299},[3207,3211,3216,3220,3224,3228,3232,3237,3241],{"type":64,"tag":200,"props":3208,"children":3209},{"style":313},[3210],{"type":69,"value":316},{"type":64,"tag":200,"props":3212,"children":3213},{"style":229},[3214],{"type":69,"value":3215}," routeApi ",{"type":64,"tag":200,"props":3217,"children":3218},{"style":223},[3219],{"type":69,"value":326},{"type":64,"tag":200,"props":3221,"children":3222},{"style":329},[3223],{"type":69,"value":3176},{"type":64,"tag":200,"props":3225,"children":3226},{"style":229},[3227],{"type":69,"value":336},{"type":64,"tag":200,"props":3229,"children":3230},{"style":223},[3231],{"type":69,"value":400},{"type":64,"tag":200,"props":3233,"children":3234},{"style":250},[3235],{"type":69,"value":3236},"\u002Fposts",{"type":64,"tag":200,"props":3238,"children":3239},{"style":223},[3240],{"type":69,"value":400},{"type":64,"tag":200,"props":3242,"children":3243},{"style":229},[3244],{"type":69,"value":356},{"type":64,"tag":200,"props":3246,"children":3247},{"class":202,"line":309},[3248],{"type":64,"tag":200,"props":3249,"children":3250},{"emptyLinePlaceholder":303},[3251],{"type":69,"value":306},{"type":64,"tag":200,"props":3253,"children":3254},{"class":202,"line":359},[3255,3259,3263,3267,3271,3275,3279,3283,3287,3291,3295],{"type":64,"tag":200,"props":3256,"children":3257},{"style":217},[3258],{"type":69,"value":484},{"type":64,"tag":200,"props":3260,"children":3261},{"style":313},[3262],{"type":69,"value":607},{"type":64,"tag":200,"props":3264,"children":3265},{"style":229},[3266],{"type":69,"value":612},{"type":64,"tag":200,"props":3268,"children":3269},{"style":223},[3270],{"type":69,"value":326},{"type":64,"tag":200,"props":3272,"children":3273},{"style":329},[3274],{"type":69,"value":3167},{"type":64,"tag":200,"props":3276,"children":3277},{"style":229},[3278],{"type":69,"value":336},{"type":64,"tag":200,"props":3280,"children":3281},{"style":223},[3282],{"type":69,"value":400},{"type":64,"tag":200,"props":3284,"children":3285},{"style":250},[3286],{"type":69,"value":3236},{"type":64,"tag":200,"props":3288,"children":3289},{"style":223},[3290],{"type":69,"value":400},{"type":64,"tag":200,"props":3292,"children":3293},{"style":229},[3294],{"type":69,"value":642},{"type":64,"tag":200,"props":3296,"children":3297},{"style":223},[3298],{"type":69,"value":647},{"type":64,"tag":200,"props":3300,"children":3301},{"class":202,"line":367},[3302,3306,3310,3315],{"type":64,"tag":200,"props":3303,"children":3304},{"style":431},[3305],{"type":69,"value":919},{"type":64,"tag":200,"props":3307,"children":3308},{"style":223},[3309],{"type":69,"value":439},{"type":64,"tag":200,"props":3311,"children":3312},{"style":229},[3313],{"type":69,"value":3314}," PostsComponent",{"type":64,"tag":200,"props":3316,"children":3317},{"style":223},[3318],{"type":69,"value":768},{"type":64,"tag":200,"props":3320,"children":3321},{"class":202,"line":376},[3322,3326],{"type":64,"tag":200,"props":3323,"children":3324},{"style":223},[3325],{"type":69,"value":351},{"type":64,"tag":200,"props":3327,"children":3328},{"style":229},[3329],{"type":69,"value":356},{"type":64,"tag":200,"props":3331,"children":3332},{"class":202,"line":408},[3333],{"type":64,"tag":200,"props":3334,"children":3335},{"emptyLinePlaceholder":303},[3336],{"type":69,"value":306},{"type":64,"tag":200,"props":3338,"children":3339},{"class":202,"line":427},[3340,3344,3348,3352],{"type":64,"tag":200,"props":3341,"children":3342},{"style":313},[3343],{"type":69,"value":960},{"type":64,"tag":200,"props":3345,"children":3346},{"style":329},[3347],{"type":69,"value":3314},{"type":64,"tag":200,"props":3349,"children":3350},{"style":223},[3351],{"type":69,"value":969},{"type":64,"tag":200,"props":3353,"children":3354},{"style":223},[3355],{"type":69,"value":405},{"type":64,"tag":200,"props":3357,"children":3358},{"class":202,"line":452},[3359,3363,3367,3371,3376,3380,3384],{"type":64,"tag":200,"props":3360,"children":3361},{"style":313},[3362],{"type":69,"value":991},{"type":64,"tag":200,"props":3364,"children":3365},{"style":229},[3366],{"type":69,"value":2058},{"type":64,"tag":200,"props":3368,"children":3369},{"style":223},[3370],{"type":69,"value":850},{"type":64,"tag":200,"props":3372,"children":3373},{"style":229},[3374],{"type":69,"value":3375}," routeApi",{"type":64,"tag":200,"props":3377,"children":3378},{"style":223},[3379],{"type":69,"value":152},{"type":64,"tag":200,"props":3381,"children":3382},{"style":329},[3383],{"type":69,"value":1138},{"type":64,"tag":200,"props":3385,"children":3386},{"style":431},[3387],{"type":69,"value":1026},{"type":64,"tag":200,"props":3389,"children":3390},{"class":202,"line":461},[3391,3395,3399,3403,3407,3411,3415,3419,3423],{"type":64,"tag":200,"props":3392,"children":3393},{"style":313},[3394],{"type":69,"value":991},{"type":64,"tag":200,"props":3396,"children":3397},{"style":223},[3398],{"type":69,"value":226},{"type":64,"tag":200,"props":3400,"children":3401},{"style":229},[3402],{"type":69,"value":1060},{"type":64,"tag":200,"props":3404,"children":3405},{"style":223},[3406],{"type":69,"value":237},{"type":64,"tag":200,"props":3408,"children":3409},{"style":223},[3410],{"type":69,"value":850},{"type":64,"tag":200,"props":3412,"children":3413},{"style":229},[3414],{"type":69,"value":3375},{"type":64,"tag":200,"props":3416,"children":3417},{"style":223},[3418],{"type":69,"value":152},{"type":64,"tag":200,"props":3420,"children":3421},{"style":329},[3422],{"type":69,"value":185},{"type":64,"tag":200,"props":3424,"children":3425},{"style":431},[3426],{"type":69,"value":1026},{"type":64,"tag":200,"props":3428,"children":3429},{"class":202,"line":470},[3430,3434,3438,3442,3446,3450,3454,3458,3462,3466],{"type":64,"tag":200,"props":3431,"children":3432},{"style":217},[3433],{"type":69,"value":1168},{"type":64,"tag":200,"props":3435,"children":3436},{"style":223},[3437],{"type":69,"value":1584},{"type":64,"tag":200,"props":3439,"children":3440},{"style":431},[3441],{"type":69,"value":1187},{"type":64,"tag":200,"props":3443,"children":3444},{"style":223},[3445],{"type":69,"value":1254},{"type":64,"tag":200,"props":3447,"children":3448},{"style":229},[3449],{"type":69,"value":1259},{"type":64,"tag":200,"props":3451,"children":3452},{"style":223},[3453],{"type":69,"value":341},{"type":64,"tag":200,"props":3455,"children":3456},{"style":229},[3457],{"type":69,"value":1268},{"type":64,"tag":200,"props":3459,"children":3460},{"style":223},[3461],{"type":69,"value":1229},{"type":64,"tag":200,"props":3463,"children":3464},{"style":431},[3465],{"type":69,"value":1187},{"type":64,"tag":200,"props":3467,"children":3468},{"style":223},[3469],{"type":69,"value":1192},{"type":64,"tag":200,"props":3471,"children":3472},{"class":202,"line":478},[3473],{"type":64,"tag":200,"props":3474,"children":3475},{"style":223},[3476],{"type":69,"value":467},{"type":64,"tag":154,"props":3478,"children":3480},{"id":3479},"typescript-performance",[3481],{"type":69,"value":3482},"TypeScript Performance",{"type":64,"tag":532,"props":3484,"children":3486},{"id":3485},"use-object-syntax-for-addchildren-in-large-route-trees",[3487,3489,3495],{"type":69,"value":3488},"Use Object Syntax for ",{"type":64,"tag":100,"props":3490,"children":3492},{"className":3491},[],[3493],{"type":69,"value":3494},"addChildren",{"type":69,"value":3496}," in Large Route Trees",{"type":64,"tag":189,"props":3498,"children":3500},{"className":191,"code":3499,"language":193,"meta":194,"style":194},"\u002F\u002F SLOWER — tuple syntax\nconst routeTree = rootRoute.addChildren([\n  postsRoute.addChildren([postRoute, postsIndexRoute]),\n  indexRoute,\n])\n\n\u002F\u002F FASTER — object syntax (TS checks objects faster than large tuples)\nconst routeTree = rootRoute.addChildren({\n  postsRoute: postsRoute.addChildren({ postRoute, postsIndexRoute }),\n  indexRoute,\n})\n",[3501],{"type":64,"tag":100,"props":3502,"children":3503},{"__ignoreMap":194},[3504,3512,3545,3579,3591,3599,3606,3614,3649,3707,3718],{"type":64,"tag":200,"props":3505,"children":3506},{"class":202,"line":203},[3507],{"type":64,"tag":200,"props":3508,"children":3509},{"style":207},[3510],{"type":69,"value":3511},"\u002F\u002F SLOWER — tuple syntax\n",{"type":64,"tag":200,"props":3513,"children":3514},{"class":202,"line":213},[3515,3519,3523,3527,3532,3536,3540],{"type":64,"tag":200,"props":3516,"children":3517},{"style":313},[3518],{"type":69,"value":316},{"type":64,"tag":200,"props":3520,"children":3521},{"style":229},[3522],{"type":69,"value":346},{"type":64,"tag":200,"props":3524,"children":3525},{"style":223},[3526],{"type":69,"value":326},{"type":64,"tag":200,"props":3528,"children":3529},{"style":229},[3530],{"type":69,"value":3531}," rootRoute",{"type":64,"tag":200,"props":3533,"children":3534},{"style":223},[3535],{"type":69,"value":152},{"type":64,"tag":200,"props":3537,"children":3538},{"style":329},[3539],{"type":69,"value":3494},{"type":64,"tag":200,"props":3541,"children":3542},{"style":229},[3543],{"type":69,"value":3544},"([\n",{"type":64,"tag":200,"props":3546,"children":3547},{"class":202,"line":261},[3548,3553,3557,3561,3566,3570,3575],{"type":64,"tag":200,"props":3549,"children":3550},{"style":229},[3551],{"type":69,"value":3552},"  postsRoute",{"type":64,"tag":200,"props":3554,"children":3555},{"style":223},[3556],{"type":69,"value":152},{"type":64,"tag":200,"props":3558,"children":3559},{"style":329},[3560],{"type":69,"value":3494},{"type":64,"tag":200,"props":3562,"children":3563},{"style":229},[3564],{"type":69,"value":3565},"([postRoute",{"type":64,"tag":200,"props":3567,"children":3568},{"style":223},[3569],{"type":69,"value":693},{"type":64,"tag":200,"props":3571,"children":3572},{"style":229},[3573],{"type":69,"value":3574}," postsIndexRoute])",{"type":64,"tag":200,"props":3576,"children":3577},{"style":223},[3578],{"type":69,"value":768},{"type":64,"tag":200,"props":3580,"children":3581},{"class":202,"line":299},[3582,3587],{"type":64,"tag":200,"props":3583,"children":3584},{"style":229},[3585],{"type":69,"value":3586},"  indexRoute",{"type":64,"tag":200,"props":3588,"children":3589},{"style":223},[3590],{"type":69,"value":768},{"type":64,"tag":200,"props":3592,"children":3593},{"class":202,"line":309},[3594],{"type":64,"tag":200,"props":3595,"children":3596},{"style":229},[3597],{"type":69,"value":3598},"])\n",{"type":64,"tag":200,"props":3600,"children":3601},{"class":202,"line":359},[3602],{"type":64,"tag":200,"props":3603,"children":3604},{"emptyLinePlaceholder":303},[3605],{"type":69,"value":306},{"type":64,"tag":200,"props":3607,"children":3608},{"class":202,"line":367},[3609],{"type":64,"tag":200,"props":3610,"children":3611},{"style":207},[3612],{"type":69,"value":3613},"\u002F\u002F FASTER — object syntax (TS checks objects faster than large tuples)\n",{"type":64,"tag":200,"props":3615,"children":3616},{"class":202,"line":376},[3617,3621,3625,3629,3633,3637,3641,3645],{"type":64,"tag":200,"props":3618,"children":3619},{"style":313},[3620],{"type":69,"value":316},{"type":64,"tag":200,"props":3622,"children":3623},{"style":229},[3624],{"type":69,"value":346},{"type":64,"tag":200,"props":3626,"children":3627},{"style":223},[3628],{"type":69,"value":326},{"type":64,"tag":200,"props":3630,"children":3631},{"style":229},[3632],{"type":69,"value":3531},{"type":64,"tag":200,"props":3634,"children":3635},{"style":223},[3636],{"type":69,"value":152},{"type":64,"tag":200,"props":3638,"children":3639},{"style":329},[3640],{"type":69,"value":3494},{"type":64,"tag":200,"props":3642,"children":3643},{"style":229},[3644],{"type":69,"value":336},{"type":64,"tag":200,"props":3646,"children":3647},{"style":223},[3648],{"type":69,"value":647},{"type":64,"tag":200,"props":3650,"children":3651},{"class":202,"line":408},[3652,3656,3660,3665,3669,3673,3677,3681,3686,3690,3695,3699,3703],{"type":64,"tag":200,"props":3653,"children":3654},{"style":431},[3655],{"type":69,"value":3552},{"type":64,"tag":200,"props":3657,"children":3658},{"style":223},[3659],{"type":69,"value":439},{"type":64,"tag":200,"props":3661,"children":3662},{"style":229},[3663],{"type":69,"value":3664}," postsRoute",{"type":64,"tag":200,"props":3666,"children":3667},{"style":223},[3668],{"type":69,"value":152},{"type":64,"tag":200,"props":3670,"children":3671},{"style":329},[3672],{"type":69,"value":3494},{"type":64,"tag":200,"props":3674,"children":3675},{"style":229},[3676],{"type":69,"value":336},{"type":64,"tag":200,"props":3678,"children":3679},{"style":223},[3680],{"type":69,"value":341},{"type":64,"tag":200,"props":3682,"children":3683},{"style":229},[3684],{"type":69,"value":3685}," postRoute",{"type":64,"tag":200,"props":3687,"children":3688},{"style":223},[3689],{"type":69,"value":693},{"type":64,"tag":200,"props":3691,"children":3692},{"style":229},[3693],{"type":69,"value":3694}," postsIndexRoute ",{"type":64,"tag":200,"props":3696,"children":3697},{"style":223},[3698],{"type":69,"value":351},{"type":64,"tag":200,"props":3700,"children":3701},{"style":229},[3702],{"type":69,"value":763},{"type":64,"tag":200,"props":3704,"children":3705},{"style":223},[3706],{"type":69,"value":768},{"type":64,"tag":200,"props":3708,"children":3709},{"class":202,"line":427},[3710,3714],{"type":64,"tag":200,"props":3711,"children":3712},{"style":229},[3713],{"type":69,"value":3586},{"type":64,"tag":200,"props":3715,"children":3716},{"style":223},[3717],{"type":69,"value":768},{"type":64,"tag":200,"props":3719,"children":3720},{"class":202,"line":452},[3721,3725],{"type":64,"tag":200,"props":3722,"children":3723},{"style":223},[3724],{"type":69,"value":351},{"type":64,"tag":200,"props":3726,"children":3727},{"style":229},[3728],{"type":69,"value":356},{"type":64,"tag":72,"props":3730,"children":3731},{},[3732],{"type":69,"value":3733},"With file-based routing the route tree is generated, so this is handled for you.",{"type":64,"tag":532,"props":3735,"children":3737},{"id":3736},"avoid-returning-unused-inferred-types-from-loaders",[3738],{"type":69,"value":3739},"Avoid Returning Unused Inferred Types from Loaders",{"type":64,"tag":72,"props":3741,"children":3742},{},[3743],{"type":69,"value":3744},"When using external caches like TanStack Query, don't let the router infer complex return types you never consume:",{"type":64,"tag":189,"props":3746,"children":3748},{"className":191,"code":3747,"language":193,"meta":194,"style":194},"\u002F\u002F SLOWER — TS infers the full ensureQueryData return type into the route tree\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: ({ context: { queryClient }, params: { postId } }) =>\n    queryClient.ensureQueryData(postQueryOptions(postId)),\n  component: PostComponent,\n})\n\n\u002F\u002F FASTER — void return, inference stays out of the route tree\nexport const Route = createFileRoute('\u002Fposts\u002F$postId')({\n  loader: async ({ context: { queryClient }, params: { postId } }) => {\n    await queryClient.ensureQueryData(postQueryOptions(postId))\n  },\n  component: PostComponent,\n})\n",[3749],{"type":64,"tag":100,"props":3750,"children":3751},{"__ignoreMap":194},[3752,3760,3807,3873,3908,3927,3938,3945,3953,4000,4071,4112,4119,4138],{"type":64,"tag":200,"props":3753,"children":3754},{"class":202,"line":203},[3755],{"type":64,"tag":200,"props":3756,"children":3757},{"style":207},[3758],{"type":69,"value":3759},"\u002F\u002F SLOWER — TS infers the full ensureQueryData return type into the route tree\n",{"type":64,"tag":200,"props":3761,"children":3762},{"class":202,"line":213},[3763,3767,3771,3775,3779,3783,3787,3791,3795,3799,3803],{"type":64,"tag":200,"props":3764,"children":3765},{"style":217},[3766],{"type":69,"value":484},{"type":64,"tag":200,"props":3768,"children":3769},{"style":313},[3770],{"type":69,"value":607},{"type":64,"tag":200,"props":3772,"children":3773},{"style":229},[3774],{"type":69,"value":612},{"type":64,"tag":200,"props":3776,"children":3777},{"style":223},[3778],{"type":69,"value":326},{"type":64,"tag":200,"props":3780,"children":3781},{"style":329},[3782],{"type":69,"value":568},{"type":64,"tag":200,"props":3784,"children":3785},{"style":229},[3786],{"type":69,"value":336},{"type":64,"tag":200,"props":3788,"children":3789},{"style":223},[3790],{"type":69,"value":400},{"type":64,"tag":200,"props":3792,"children":3793},{"style":250},[3794],{"type":69,"value":633},{"type":64,"tag":200,"props":3796,"children":3797},{"style":223},[3798],{"type":69,"value":400},{"type":64,"tag":200,"props":3800,"children":3801},{"style":229},[3802],{"type":69,"value":642},{"type":64,"tag":200,"props":3804,"children":3805},{"style":223},[3806],{"type":69,"value":647},{"type":64,"tag":200,"props":3808,"children":3809},{"class":202,"line":261},[3810,3814,3818,3822,3826,3830,3834,3839,3844,3848,3852,3856,3860,3864,3868],{"type":64,"tag":200,"props":3811,"children":3812},{"style":329},[3813],{"type":69,"value":792},{"type":64,"tag":200,"props":3815,"children":3816},{"style":223},[3817],{"type":69,"value":439},{"type":64,"tag":200,"props":3819,"children":3820},{"style":223},[3821],{"type":69,"value":806},{"type":64,"tag":200,"props":3823,"children":3824},{"style":431},[3825],{"type":69,"value":1740},{"type":64,"tag":200,"props":3827,"children":3828},{"style":223},[3829],{"type":69,"value":439},{"type":64,"tag":200,"props":3831,"children":3832},{"style":223},[3833],{"type":69,"value":226},{"type":64,"tag":200,"props":3835,"children":3836},{"style":667},[3837],{"type":69,"value":3838}," queryClient",{"type":64,"tag":200,"props":3840,"children":3841},{"style":223},[3842],{"type":69,"value":3843}," },",{"type":64,"tag":200,"props":3845,"children":3846},{"style":431},[3847],{"type":69,"value":811},{"type":64,"tag":200,"props":3849,"children":3850},{"style":223},[3851],{"type":69,"value":439},{"type":64,"tag":200,"props":3853,"children":3854},{"style":223},[3855],{"type":69,"value":226},{"type":64,"tag":200,"props":3857,"children":3858},{"style":667},[3859],{"type":69,"value":1000},{"type":64,"tag":200,"props":3861,"children":3862},{"style":223},[3863],{"type":69,"value":237},{"type":64,"tag":200,"props":3865,"children":3866},{"style":223},[3867],{"type":69,"value":816},{"type":64,"tag":200,"props":3869,"children":3870},{"style":313},[3871],{"type":69,"value":3872}," =>\n",{"type":64,"tag":200,"props":3874,"children":3875},{"class":202,"line":299},[3876,3881,3885,3890,3894,3899,3904],{"type":64,"tag":200,"props":3877,"children":3878},{"style":229},[3879],{"type":69,"value":3880},"    queryClient",{"type":64,"tag":200,"props":3882,"children":3883},{"style":223},[3884],{"type":69,"value":152},{"type":64,"tag":200,"props":3886,"children":3887},{"style":329},[3888],{"type":69,"value":3889},"ensureQueryData",{"type":64,"tag":200,"props":3891,"children":3892},{"style":229},[3893],{"type":69,"value":336},{"type":64,"tag":200,"props":3895,"children":3896},{"style":329},[3897],{"type":69,"value":3898},"postQueryOptions",{"type":64,"tag":200,"props":3900,"children":3901},{"style":229},[3902],{"type":69,"value":3903},"(postId))",{"type":64,"tag":200,"props":3905,"children":3906},{"style":223},[3907],{"type":69,"value":768},{"type":64,"tag":200,"props":3909,"children":3910},{"class":202,"line":309},[3911,3915,3919,3923],{"type":64,"tag":200,"props":3912,"children":3913},{"style":431},[3914],{"type":69,"value":919},{"type":64,"tag":200,"props":3916,"children":3917},{"style":223},[3918],{"type":69,"value":439},{"type":64,"tag":200,"props":3920,"children":3921},{"style":229},[3922],{"type":69,"value":928},{"type":64,"tag":200,"props":3924,"children":3925},{"style":223},[3926],{"type":69,"value":768},{"type":64,"tag":200,"props":3928,"children":3929},{"class":202,"line":359},[3930,3934],{"type":64,"tag":200,"props":3931,"children":3932},{"style":223},[3933],{"type":69,"value":351},{"type":64,"tag":200,"props":3935,"children":3936},{"style":229},[3937],{"type":69,"value":356},{"type":64,"tag":200,"props":3939,"children":3940},{"class":202,"line":367},[3941],{"type":64,"tag":200,"props":3942,"children":3943},{"emptyLinePlaceholder":303},[3944],{"type":69,"value":306},{"type":64,"tag":200,"props":3946,"children":3947},{"class":202,"line":376},[3948],{"type":64,"tag":200,"props":3949,"children":3950},{"style":207},[3951],{"type":69,"value":3952},"\u002F\u002F FASTER — void return, inference stays out of the route tree\n",{"type":64,"tag":200,"props":3954,"children":3955},{"class":202,"line":408},[3956,3960,3964,3968,3972,3976,3980,3984,3988,3992,3996],{"type":64,"tag":200,"props":3957,"children":3958},{"style":217},[3959],{"type":69,"value":484},{"type":64,"tag":200,"props":3961,"children":3962},{"style":313},[3963],{"type":69,"value":607},{"type":64,"tag":200,"props":3965,"children":3966},{"style":229},[3967],{"type":69,"value":612},{"type":64,"tag":200,"props":3969,"children":3970},{"style":223},[3971],{"type":69,"value":326},{"type":64,"tag":200,"props":3973,"children":3974},{"style":329},[3975],{"type":69,"value":568},{"type":64,"tag":200,"props":3977,"children":3978},{"style":229},[3979],{"type":69,"value":336},{"type":64,"tag":200,"props":3981,"children":3982},{"style":223},[3983],{"type":69,"value":400},{"type":64,"tag":200,"props":3985,"children":3986},{"style":250},[3987],{"type":69,"value":633},{"type":64,"tag":200,"props":3989,"children":3990},{"style":223},[3991],{"type":69,"value":400},{"type":64,"tag":200,"props":3993,"children":3994},{"style":229},[3995],{"type":69,"value":642},{"type":64,"tag":200,"props":3997,"children":3998},{"style":223},[3999],{"type":69,"value":647},{"type":64,"tag":200,"props":4001,"children":4002},{"class":202,"line":427},[4003,4007,4011,4015,4019,4023,4027,4031,4035,4039,4043,4047,4051,4055,4059,4063,4067],{"type":64,"tag":200,"props":4004,"children":4005},{"style":329},[4006],{"type":69,"value":792},{"type":64,"tag":200,"props":4008,"children":4009},{"style":223},[4010],{"type":69,"value":439},{"type":64,"tag":200,"props":4012,"children":4013},{"style":313},[4014],{"type":69,"value":801},{"type":64,"tag":200,"props":4016,"children":4017},{"style":223},[4018],{"type":69,"value":806},{"type":64,"tag":200,"props":4020,"children":4021},{"style":431},[4022],{"type":69,"value":1740},{"type":64,"tag":200,"props":4024,"children":4025},{"style":223},[4026],{"type":69,"value":439},{"type":64,"tag":200,"props":4028,"children":4029},{"style":223},[4030],{"type":69,"value":226},{"type":64,"tag":200,"props":4032,"children":4033},{"style":667},[4034],{"type":69,"value":3838},{"type":64,"tag":200,"props":4036,"children":4037},{"style":223},[4038],{"type":69,"value":3843},{"type":64,"tag":200,"props":4040,"children":4041},{"style":431},[4042],{"type":69,"value":811},{"type":64,"tag":200,"props":4044,"children":4045},{"style":223},[4046],{"type":69,"value":439},{"type":64,"tag":200,"props":4048,"children":4049},{"style":223},[4050],{"type":69,"value":226},{"type":64,"tag":200,"props":4052,"children":4053},{"style":667},[4054],{"type":69,"value":1000},{"type":64,"tag":200,"props":4056,"children":4057},{"style":223},[4058],{"type":69,"value":237},{"type":64,"tag":200,"props":4060,"children":4061},{"style":223},[4062],{"type":69,"value":816},{"type":64,"tag":200,"props":4064,"children":4065},{"style":313},[4066],{"type":69,"value":708},{"type":64,"tag":200,"props":4068,"children":4069},{"style":223},[4070],{"type":69,"value":405},{"type":64,"tag":200,"props":4072,"children":4073},{"class":202,"line":452},[4074,4079,4083,4087,4091,4095,4099,4103,4107],{"type":64,"tag":200,"props":4075,"children":4076},{"style":217},[4077],{"type":69,"value":4078},"    await",{"type":64,"tag":200,"props":4080,"children":4081},{"style":229},[4082],{"type":69,"value":3838},{"type":64,"tag":200,"props":4084,"children":4085},{"style":223},[4086],{"type":69,"value":152},{"type":64,"tag":200,"props":4088,"children":4089},{"style":329},[4090],{"type":69,"value":3889},{"type":64,"tag":200,"props":4092,"children":4093},{"style":431},[4094],{"type":69,"value":336},{"type":64,"tag":200,"props":4096,"children":4097},{"style":329},[4098],{"type":69,"value":3898},{"type":64,"tag":200,"props":4100,"children":4101},{"style":431},[4102],{"type":69,"value":336},{"type":64,"tag":200,"props":4104,"children":4105},{"style":229},[4106],{"type":69,"value":878},{"type":64,"tag":200,"props":4108,"children":4109},{"style":431},[4110],{"type":69,"value":4111},"))\n",{"type":64,"tag":200,"props":4113,"children":4114},{"class":202,"line":461},[4115],{"type":64,"tag":200,"props":4116,"children":4117},{"style":223},[4118],{"type":69,"value":911},{"type":64,"tag":200,"props":4120,"children":4121},{"class":202,"line":470},[4122,4126,4130,4134],{"type":64,"tag":200,"props":4123,"children":4124},{"style":431},[4125],{"type":69,"value":919},{"type":64,"tag":200,"props":4127,"children":4128},{"style":223},[4129],{"type":69,"value":439},{"type":64,"tag":200,"props":4131,"children":4132},{"style":229},[4133],{"type":69,"value":928},{"type":64,"tag":200,"props":4135,"children":4136},{"style":223},[4137],{"type":69,"value":768},{"type":64,"tag":200,"props":4139,"children":4140},{"class":202,"line":478},[4141,4145],{"type":64,"tag":200,"props":4142,"children":4143},{"style":223},[4144],{"type":69,"value":351},{"type":64,"tag":200,"props":4146,"children":4147},{"style":229},[4148],{"type":69,"value":356},{"type":64,"tag":532,"props":4150,"children":4152},{"id":4151},"as-const-satisfies-for-link-option-objects",[4153,4159],{"type":64,"tag":100,"props":4154,"children":4156},{"className":4155},[],[4157],{"type":69,"value":4158},"as const satisfies",{"type":69,"value":4160}," for Link Option Objects",{"type":64,"tag":72,"props":4162,"children":4163},{},[4164,4166,4172],{"type":69,"value":4165},"Never use ",{"type":64,"tag":100,"props":4167,"children":4169},{"className":4168},[],[4170],{"type":69,"value":4171},"LinkProps",{"type":69,"value":4173}," as a variable type — it's an enormous union:",{"type":64,"tag":189,"props":4175,"children":4177},{"className":191,"code":4176,"language":193,"meta":194,"style":194},"import type { LinkProps, RegisteredRouter } from '@tanstack\u002Freact-router'\n\n\u002F\u002F WRONG — LinkProps is a massive union, extremely slow TS check\nconst wrongProps: LinkProps = { to: '\u002Fposts' }\n\n\u002F\u002F CORRECT — infer a precise type, validate against LinkProps\nconst goodProps = { to: '\u002Fposts' } as const satisfies LinkProps\n\n\u002F\u002F EVEN BETTER — narrow LinkProps with generic params\nconst narrowedProps = {\n  to: '\u002Fposts',\n} as const satisfies LinkProps\u003CRegisteredRouter, string, '\u002Fposts'>\n",[4178],{"type":64,"tag":100,"props":4179,"children":4180},{"__ignoreMap":194},[4181,4231,4238,4246,4298,4305,4313,4376,4383,4391,4411,4439],{"type":64,"tag":200,"props":4182,"children":4183},{"class":202,"line":203},[4184,4188,4193,4197,4202,4206,4211,4215,4219,4223,4227],{"type":64,"tag":200,"props":4185,"children":4186},{"style":217},[4187],{"type":69,"value":220},{"type":64,"tag":200,"props":4189,"children":4190},{"style":217},[4191],{"type":69,"value":4192}," type",{"type":64,"tag":200,"props":4194,"children":4195},{"style":223},[4196],{"type":69,"value":226},{"type":64,"tag":200,"props":4198,"children":4199},{"style":229},[4200],{"type":69,"value":4201}," LinkProps",{"type":64,"tag":200,"props":4203,"children":4204},{"style":223},[4205],{"type":69,"value":693},{"type":64,"tag":200,"props":4207,"children":4208},{"style":229},[4209],{"type":69,"value":4210}," RegisteredRouter",{"type":64,"tag":200,"props":4212,"children":4213},{"style":223},[4214],{"type":69,"value":237},{"type":64,"tag":200,"props":4216,"children":4217},{"style":217},[4218],{"type":69,"value":242},{"type":64,"tag":200,"props":4220,"children":4221},{"style":223},[4222],{"type":69,"value":247},{"type":64,"tag":200,"props":4224,"children":4225},{"style":250},[4226],{"type":69,"value":253},{"type":64,"tag":200,"props":4228,"children":4229},{"style":223},[4230],{"type":69,"value":258},{"type":64,"tag":200,"props":4232,"children":4233},{"class":202,"line":213},[4234],{"type":64,"tag":200,"props":4235,"children":4236},{"emptyLinePlaceholder":303},[4237],{"type":69,"value":306},{"type":64,"tag":200,"props":4239,"children":4240},{"class":202,"line":261},[4241],{"type":64,"tag":200,"props":4242,"children":4243},{"style":207},[4244],{"type":69,"value":4245},"\u002F\u002F WRONG — LinkProps is a massive union, extremely slow TS check\n",{"type":64,"tag":200,"props":4247,"children":4248},{"class":202,"line":299},[4249,4253,4258,4262,4266,4270,4274,4278,4282,4286,4290,4294],{"type":64,"tag":200,"props":4250,"children":4251},{"style":313},[4252],{"type":69,"value":316},{"type":64,"tag":200,"props":4254,"children":4255},{"style":229},[4256],{"type":69,"value":4257}," wrongProps",{"type":64,"tag":200,"props":4259,"children":4260},{"style":223},[4261],{"type":69,"value":439},{"type":64,"tag":200,"props":4263,"children":4264},{"style":417},[4265],{"type":69,"value":4201},{"type":64,"tag":200,"props":4267,"children":4268},{"style":223},[4269],{"type":69,"value":850},{"type":64,"tag":200,"props":4271,"children":4272},{"style":223},[4273],{"type":69,"value":226},{"type":64,"tag":200,"props":4275,"children":4276},{"style":431},[4277],{"type":69,"value":1826},{"type":64,"tag":200,"props":4279,"children":4280},{"style":223},[4281],{"type":69,"value":439},{"type":64,"tag":200,"props":4283,"children":4284},{"style":223},[4285],{"type":69,"value":247},{"type":64,"tag":200,"props":4287,"children":4288},{"style":250},[4289],{"type":69,"value":3236},{"type":64,"tag":200,"props":4291,"children":4292},{"style":223},[4293],{"type":69,"value":400},{"type":64,"tag":200,"props":4295,"children":4296},{"style":223},[4297],{"type":69,"value":903},{"type":64,"tag":200,"props":4299,"children":4300},{"class":202,"line":309},[4301],{"type":64,"tag":200,"props":4302,"children":4303},{"emptyLinePlaceholder":303},[4304],{"type":69,"value":306},{"type":64,"tag":200,"props":4306,"children":4307},{"class":202,"line":359},[4308],{"type":64,"tag":200,"props":4309,"children":4310},{"style":207},[4311],{"type":69,"value":4312},"\u002F\u002F CORRECT — infer a precise type, validate against LinkProps\n",{"type":64,"tag":200,"props":4314,"children":4315},{"class":202,"line":367},[4316,4320,4325,4329,4333,4337,4341,4345,4349,4353,4357,4362,4366,4371],{"type":64,"tag":200,"props":4317,"children":4318},{"style":313},[4319],{"type":69,"value":316},{"type":64,"tag":200,"props":4321,"children":4322},{"style":229},[4323],{"type":69,"value":4324}," goodProps ",{"type":64,"tag":200,"props":4326,"children":4327},{"style":223},[4328],{"type":69,"value":326},{"type":64,"tag":200,"props":4330,"children":4331},{"style":223},[4332],{"type":69,"value":226},{"type":64,"tag":200,"props":4334,"children":4335},{"style":431},[4336],{"type":69,"value":1826},{"type":64,"tag":200,"props":4338,"children":4339},{"style":223},[4340],{"type":69,"value":439},{"type":64,"tag":200,"props":4342,"children":4343},{"style":223},[4344],{"type":69,"value":247},{"type":64,"tag":200,"props":4346,"children":4347},{"style":250},[4348],{"type":69,"value":3236},{"type":64,"tag":200,"props":4350,"children":4351},{"style":223},[4352],{"type":69,"value":400},{"type":64,"tag":200,"props":4354,"children":4355},{"style":223},[4356],{"type":69,"value":237},{"type":64,"tag":200,"props":4358,"children":4359},{"style":217},[4360],{"type":69,"value":4361}," as",{"type":64,"tag":200,"props":4363,"children":4364},{"style":417},[4365],{"type":69,"value":607},{"type":64,"tag":200,"props":4367,"children":4368},{"style":217},[4369],{"type":69,"value":4370}," satisfies",{"type":64,"tag":200,"props":4372,"children":4373},{"style":417},[4374],{"type":69,"value":4375}," LinkProps\n",{"type":64,"tag":200,"props":4377,"children":4378},{"class":202,"line":376},[4379],{"type":64,"tag":200,"props":4380,"children":4381},{"emptyLinePlaceholder":303},[4382],{"type":69,"value":306},{"type":64,"tag":200,"props":4384,"children":4385},{"class":202,"line":408},[4386],{"type":64,"tag":200,"props":4387,"children":4388},{"style":207},[4389],{"type":69,"value":4390},"\u002F\u002F EVEN BETTER — narrow LinkProps with generic params\n",{"type":64,"tag":200,"props":4392,"children":4393},{"class":202,"line":427},[4394,4398,4403,4407],{"type":64,"tag":200,"props":4395,"children":4396},{"style":313},[4397],{"type":69,"value":316},{"type":64,"tag":200,"props":4399,"children":4400},{"style":229},[4401],{"type":69,"value":4402}," narrowedProps ",{"type":64,"tag":200,"props":4404,"children":4405},{"style":223},[4406],{"type":69,"value":326},{"type":64,"tag":200,"props":4408,"children":4409},{"style":223},[4410],{"type":69,"value":405},{"type":64,"tag":200,"props":4412,"children":4413},{"class":202,"line":452},[4414,4419,4423,4427,4431,4435],{"type":64,"tag":200,"props":4415,"children":4416},{"style":431},[4417],{"type":69,"value":4418},"  to",{"type":64,"tag":200,"props":4420,"children":4421},{"style":223},[4422],{"type":69,"value":439},{"type":64,"tag":200,"props":4424,"children":4425},{"style":223},[4426],{"type":69,"value":247},{"type":64,"tag":200,"props":4428,"children":4429},{"style":250},[4430],{"type":69,"value":3236},{"type":64,"tag":200,"props":4432,"children":4433},{"style":223},[4434],{"type":69,"value":400},{"type":64,"tag":200,"props":4436,"children":4437},{"style":223},[4438],{"type":69,"value":768},{"type":64,"tag":200,"props":4440,"children":4441},{"class":202,"line":461},[4442,4446,4450,4454,4458,4462,4466,4471,4475,4479,4483,4487,4491,4495],{"type":64,"tag":200,"props":4443,"children":4444},{"style":223},[4445],{"type":69,"value":351},{"type":64,"tag":200,"props":4447,"children":4448},{"style":217},[4449],{"type":69,"value":4361},{"type":64,"tag":200,"props":4451,"children":4452},{"style":417},[4453],{"type":69,"value":607},{"type":64,"tag":200,"props":4455,"children":4456},{"style":217},[4457],{"type":69,"value":4370},{"type":64,"tag":200,"props":4459,"children":4460},{"style":417},[4461],{"type":69,"value":4201},{"type":64,"tag":200,"props":4463,"children":4464},{"style":223},[4465],{"type":69,"value":683},{"type":64,"tag":200,"props":4467,"children":4468},{"style":417},[4469],{"type":69,"value":4470},"RegisteredRouter",{"type":64,"tag":200,"props":4472,"children":4473},{"style":223},[4474],{"type":69,"value":693},{"type":64,"tag":200,"props":4476,"children":4477},{"style":417},[4478],{"type":69,"value":1434},{"type":64,"tag":200,"props":4480,"children":4481},{"style":223},[4482],{"type":69,"value":693},{"type":64,"tag":200,"props":4484,"children":4485},{"style":223},[4486],{"type":69,"value":247},{"type":64,"tag":200,"props":4488,"children":4489},{"style":250},[4490],{"type":69,"value":3236},{"type":64,"tag":200,"props":4492,"children":4493},{"style":223},[4494],{"type":69,"value":400},{"type":64,"tag":200,"props":4496,"children":4497},{"style":223},[4498],{"type":69,"value":1192},{"type":64,"tag":532,"props":4500,"children":4502},{"id":4501},"type-safe-link-option-arrays",[4503],{"type":69,"value":4504},"Type-Safe Link Option Arrays",{"type":64,"tag":189,"props":4506,"children":4508},{"className":191,"code":4507,"language":193,"meta":194,"style":194},"import type { LinkProps } from '@tanstack\u002Freact-router'\n\nexport const navLinks = [\n  { to: '\u002Fposts' },\n  { to: '\u002Fposts\u002F$postId', params: { postId: '1' } },\n] as const satisfies ReadonlyArray\u003CLinkProps>\n\n\u002F\u002F Use the precise inferred type, not LinkProps directly\nexport type NavLink = (typeof navLinks)[number]\n",[4509],{"type":64,"tag":100,"props":4510,"children":4511},{"__ignoreMap":194},[4512,4551,4558,4583,4616,4688,4726,4733,4741],{"type":64,"tag":200,"props":4513,"children":4514},{"class":202,"line":203},[4515,4519,4523,4527,4531,4535,4539,4543,4547],{"type":64,"tag":200,"props":4516,"children":4517},{"style":217},[4518],{"type":69,"value":220},{"type":64,"tag":200,"props":4520,"children":4521},{"style":217},[4522],{"type":69,"value":4192},{"type":64,"tag":200,"props":4524,"children":4525},{"style":223},[4526],{"type":69,"value":226},{"type":64,"tag":200,"props":4528,"children":4529},{"style":229},[4530],{"type":69,"value":4201},{"type":64,"tag":200,"props":4532,"children":4533},{"style":223},[4534],{"type":69,"value":237},{"type":64,"tag":200,"props":4536,"children":4537},{"style":217},[4538],{"type":69,"value":242},{"type":64,"tag":200,"props":4540,"children":4541},{"style":223},[4542],{"type":69,"value":247},{"type":64,"tag":200,"props":4544,"children":4545},{"style":250},[4546],{"type":69,"value":253},{"type":64,"tag":200,"props":4548,"children":4549},{"style":223},[4550],{"type":69,"value":258},{"type":64,"tag":200,"props":4552,"children":4553},{"class":202,"line":213},[4554],{"type":64,"tag":200,"props":4555,"children":4556},{"emptyLinePlaceholder":303},[4557],{"type":69,"value":306},{"type":64,"tag":200,"props":4559,"children":4560},{"class":202,"line":261},[4561,4565,4569,4574,4578],{"type":64,"tag":200,"props":4562,"children":4563},{"style":217},[4564],{"type":69,"value":484},{"type":64,"tag":200,"props":4566,"children":4567},{"style":313},[4568],{"type":69,"value":607},{"type":64,"tag":200,"props":4570,"children":4571},{"style":229},[4572],{"type":69,"value":4573}," navLinks ",{"type":64,"tag":200,"props":4575,"children":4576},{"style":223},[4577],{"type":69,"value":326},{"type":64,"tag":200,"props":4579,"children":4580},{"style":229},[4581],{"type":69,"value":4582}," [\n",{"type":64,"tag":200,"props":4584,"children":4585},{"class":202,"line":299},[4586,4591,4595,4599,4603,4607,4611],{"type":64,"tag":200,"props":4587,"children":4588},{"style":223},[4589],{"type":69,"value":4590},"  {",{"type":64,"tag":200,"props":4592,"children":4593},{"style":431},[4594],{"type":69,"value":1826},{"type":64,"tag":200,"props":4596,"children":4597},{"style":223},[4598],{"type":69,"value":439},{"type":64,"tag":200,"props":4600,"children":4601},{"style":223},[4602],{"type":69,"value":247},{"type":64,"tag":200,"props":4604,"children":4605},{"style":250},[4606],{"type":69,"value":3236},{"type":64,"tag":200,"props":4608,"children":4609},{"style":223},[4610],{"type":69,"value":400},{"type":64,"tag":200,"props":4612,"children":4613},{"style":223},[4614],{"type":69,"value":4615}," },\n",{"type":64,"tag":200,"props":4617,"children":4618},{"class":202,"line":309},[4619,4623,4627,4631,4635,4639,4643,4647,4651,4655,4659,4663,4667,4671,4676,4680,4684],{"type":64,"tag":200,"props":4620,"children":4621},{"style":223},[4622],{"type":69,"value":4590},{"type":64,"tag":200,"props":4624,"children":4625},{"style":431},[4626],{"type":69,"value":1826},{"type":64,"tag":200,"props":4628,"children":4629},{"style":223},[4630],{"type":69,"value":439},{"type":64,"tag":200,"props":4632,"children":4633},{"style":223},[4634],{"type":69,"value":247},{"type":64,"tag":200,"props":4636,"children":4637},{"style":250},[4638],{"type":69,"value":633},{"type":64,"tag":200,"props":4640,"children":4641},{"style":223},[4642],{"type":69,"value":400},{"type":64,"tag":200,"props":4644,"children":4645},{"style":223},[4646],{"type":69,"value":693},{"type":64,"tag":200,"props":4648,"children":4649},{"style":431},[4650],{"type":69,"value":811},{"type":64,"tag":200,"props":4652,"children":4653},{"style":223},[4654],{"type":69,"value":439},{"type":64,"tag":200,"props":4656,"children":4657},{"style":223},[4658],{"type":69,"value":226},{"type":64,"tag":200,"props":4660,"children":4661},{"style":431},[4662],{"type":69,"value":1000},{"type":64,"tag":200,"props":4664,"children":4665},{"style":223},[4666],{"type":69,"value":439},{"type":64,"tag":200,"props":4668,"children":4669},{"style":223},[4670],{"type":69,"value":247},{"type":64,"tag":200,"props":4672,"children":4673},{"style":250},[4674],{"type":69,"value":4675},"1",{"type":64,"tag":200,"props":4677,"children":4678},{"style":223},[4679],{"type":69,"value":400},{"type":64,"tag":200,"props":4681,"children":4682},{"style":223},[4683],{"type":69,"value":237},{"type":64,"tag":200,"props":4685,"children":4686},{"style":223},[4687],{"type":69,"value":4615},{"type":64,"tag":200,"props":4689,"children":4690},{"class":202,"line":359},[4691,4696,4701,4705,4709,4714,4718,4722],{"type":64,"tag":200,"props":4692,"children":4693},{"style":229},[4694],{"type":69,"value":4695},"] ",{"type":64,"tag":200,"props":4697,"children":4698},{"style":217},[4699],{"type":69,"value":4700},"as",{"type":64,"tag":200,"props":4702,"children":4703},{"style":417},[4704],{"type":69,"value":607},{"type":64,"tag":200,"props":4706,"children":4707},{"style":217},[4708],{"type":69,"value":4370},{"type":64,"tag":200,"props":4710,"children":4711},{"style":417},[4712],{"type":69,"value":4713}," ReadonlyArray",{"type":64,"tag":200,"props":4715,"children":4716},{"style":223},[4717],{"type":69,"value":683},{"type":64,"tag":200,"props":4719,"children":4720},{"style":417},[4721],{"type":69,"value":4171},{"type":64,"tag":200,"props":4723,"children":4724},{"style":223},[4725],{"type":69,"value":1192},{"type":64,"tag":200,"props":4727,"children":4728},{"class":202,"line":367},[4729],{"type":64,"tag":200,"props":4730,"children":4731},{"emptyLinePlaceholder":303},[4732],{"type":69,"value":306},{"type":64,"tag":200,"props":4734,"children":4735},{"class":202,"line":376},[4736],{"type":64,"tag":200,"props":4737,"children":4738},{"style":207},[4739],{"type":69,"value":4740},"\u002F\u002F Use the precise inferred type, not LinkProps directly\n",{"type":64,"tag":200,"props":4742,"children":4743},{"class":202,"line":408},[4744,4748,4752,4757,4761,4765,4770,4775,4780],{"type":64,"tag":200,"props":4745,"children":4746},{"style":217},[4747],{"type":69,"value":484},{"type":64,"tag":200,"props":4749,"children":4750},{"style":313},[4751],{"type":69,"value":4192},{"type":64,"tag":200,"props":4753,"children":4754},{"style":417},[4755],{"type":69,"value":4756}," NavLink",{"type":64,"tag":200,"props":4758,"children":4759},{"style":223},[4760],{"type":69,"value":850},{"type":64,"tag":200,"props":4762,"children":4763},{"style":229},[4764],{"type":69,"value":664},{"type":64,"tag":200,"props":4766,"children":4767},{"style":223},[4768],{"type":69,"value":4769},"typeof",{"type":64,"tag":200,"props":4771,"children":4772},{"style":229},[4773],{"type":69,"value":4774}," navLinks)[",{"type":64,"tag":200,"props":4776,"children":4777},{"style":417},[4778],{"type":69,"value":4779},"number",{"type":64,"tag":200,"props":4781,"children":4782},{"style":229},[4783],{"type":69,"value":4784},"]\n",{"type":64,"tag":154,"props":4786,"children":4788},{"id":4787},"type-utilities-for-generic-components",[4789],{"type":69,"value":4790},"Type Utilities for Generic Components",{"type":64,"tag":532,"props":4792,"children":4794},{"id":4793},"validatelinkoptions-type-safe-link-props-in-custom-components",[4795,4801],{"type":64,"tag":100,"props":4796,"children":4798},{"className":4797},[],[4799],{"type":69,"value":4800},"ValidateLinkOptions",{"type":69,"value":4802}," — Type-Safe Link Props in Custom Components",{"type":64,"tag":189,"props":4804,"children":4806},{"className":191,"code":4805,"language":193,"meta":194,"style":194},"import {\n  Link,\n  type RegisteredRouter,\n  type ValidateLinkOptions,\n} from '@tanstack\u002Freact-router'\n\ninterface NavItemProps\u003C\n  TRouter extends RegisteredRouter = RegisteredRouter,\n  TOptions = unknown,\n> {\n  label: string\n  linkOptions: ValidateLinkOptions\u003CTRouter, TOptions>\n}\n\nexport function NavItem\u003CTRouter extends RegisteredRouter, TOptions>(\n  props: NavItemProps\u003CTRouter, TOptions>,\n): React.ReactNode\nexport function NavItem(props: NavItemProps): React.ReactNode {\n  return (\n    \u003Cli>\n      \u003CLink {...props.linkOptions}>{props.label}\u003C\u002FLink>\n    \u003C\u002Fli>\n  )\n}\n\n\u002F\u002F Usage — fully type-safe\n\u003CNavItem label=\"Posts\" linkOptions={{ to: '\u002Fposts' }} \u002F>\n\u003CNavItem label=\"Post\" linkOptions={{ to: '\u002Fposts\u002F$postId', params: { postId: '1' } }} \u002F>\n",[4807],{"type":64,"tag":100,"props":4808,"children":4809},{"__ignoreMap":194},[4810,4821,4833,4849,4865,4888,4895,4912,4941,4961,4972,4989,5027,5034,5041,5087,5124,5146,5199,5210,5226,5285,5300,5307,5314,5321,5329,5396],{"type":64,"tag":200,"props":4811,"children":4812},{"class":202,"line":203},[4813,4817],{"type":64,"tag":200,"props":4814,"children":4815},{"style":217},[4816],{"type":69,"value":220},{"type":64,"tag":200,"props":4818,"children":4819},{"style":223},[4820],{"type":69,"value":405},{"type":64,"tag":200,"props":4822,"children":4823},{"class":202,"line":213},[4824,4829],{"type":64,"tag":200,"props":4825,"children":4826},{"style":229},[4827],{"type":69,"value":4828},"  Link",{"type":64,"tag":200,"props":4830,"children":4831},{"style":223},[4832],{"type":69,"value":768},{"type":64,"tag":200,"props":4834,"children":4835},{"class":202,"line":261},[4836,4841,4845],{"type":64,"tag":200,"props":4837,"children":4838},{"style":217},[4839],{"type":69,"value":4840},"  type",{"type":64,"tag":200,"props":4842,"children":4843},{"style":229},[4844],{"type":69,"value":4210},{"type":64,"tag":200,"props":4846,"children":4847},{"style":223},[4848],{"type":69,"value":768},{"type":64,"tag":200,"props":4850,"children":4851},{"class":202,"line":299},[4852,4856,4861],{"type":64,"tag":200,"props":4853,"children":4854},{"style":217},[4855],{"type":69,"value":4840},{"type":64,"tag":200,"props":4857,"children":4858},{"style":229},[4859],{"type":69,"value":4860}," ValidateLinkOptions",{"type":64,"tag":200,"props":4862,"children":4863},{"style":223},[4864],{"type":69,"value":768},{"type":64,"tag":200,"props":4866,"children":4867},{"class":202,"line":309},[4868,4872,4876,4880,4884],{"type":64,"tag":200,"props":4869,"children":4870},{"style":223},[4871],{"type":69,"value":351},{"type":64,"tag":200,"props":4873,"children":4874},{"style":217},[4875],{"type":69,"value":242},{"type":64,"tag":200,"props":4877,"children":4878},{"style":223},[4879],{"type":69,"value":247},{"type":64,"tag":200,"props":4881,"children":4882},{"style":250},[4883],{"type":69,"value":253},{"type":64,"tag":200,"props":4885,"children":4886},{"style":223},[4887],{"type":69,"value":258},{"type":64,"tag":200,"props":4889,"children":4890},{"class":202,"line":359},[4891],{"type":64,"tag":200,"props":4892,"children":4893},{"emptyLinePlaceholder":303},[4894],{"type":69,"value":306},{"type":64,"tag":200,"props":4896,"children":4897},{"class":202,"line":367},[4898,4902,4907],{"type":64,"tag":200,"props":4899,"children":4900},{"style":313},[4901],{"type":69,"value":1395},{"type":64,"tag":200,"props":4903,"children":4904},{"style":417},[4905],{"type":69,"value":4906}," NavItemProps",{"type":64,"tag":200,"props":4908,"children":4909},{"style":223},[4910],{"type":69,"value":4911},"\u003C\n",{"type":64,"tag":200,"props":4913,"children":4914},{"class":202,"line":376},[4915,4920,4925,4929,4933,4937],{"type":64,"tag":200,"props":4916,"children":4917},{"style":417},[4918],{"type":69,"value":4919},"  TRouter",{"type":64,"tag":200,"props":4921,"children":4922},{"style":313},[4923],{"type":69,"value":4924}," extends",{"type":64,"tag":200,"props":4926,"children":4927},{"style":417},[4928],{"type":69,"value":4210},{"type":64,"tag":200,"props":4930,"children":4931},{"style":223},[4932],{"type":69,"value":850},{"type":64,"tag":200,"props":4934,"children":4935},{"style":417},[4936],{"type":69,"value":4210},{"type":64,"tag":200,"props":4938,"children":4939},{"style":223},[4940],{"type":69,"value":768},{"type":64,"tag":200,"props":4942,"children":4943},{"class":202,"line":408},[4944,4949,4953,4957],{"type":64,"tag":200,"props":4945,"children":4946},{"style":417},[4947],{"type":69,"value":4948},"  TOptions",{"type":64,"tag":200,"props":4950,"children":4951},{"style":223},[4952],{"type":69,"value":850},{"type":64,"tag":200,"props":4954,"children":4955},{"style":417},[4956],{"type":69,"value":698},{"type":64,"tag":200,"props":4958,"children":4959},{"style":223},[4960],{"type":69,"value":768},{"type":64,"tag":200,"props":4962,"children":4963},{"class":202,"line":427},[4964,4968],{"type":64,"tag":200,"props":4965,"children":4966},{"style":223},[4967],{"type":69,"value":1254},{"type":64,"tag":200,"props":4969,"children":4970},{"style":223},[4971],{"type":69,"value":405},{"type":64,"tag":200,"props":4973,"children":4974},{"class":202,"line":452},[4975,4980,4984],{"type":64,"tag":200,"props":4976,"children":4977},{"style":431},[4978],{"type":69,"value":4979},"  label",{"type":64,"tag":200,"props":4981,"children":4982},{"style":223},[4983],{"type":69,"value":439},{"type":64,"tag":200,"props":4985,"children":4986},{"style":417},[4987],{"type":69,"value":4988}," string\n",{"type":64,"tag":200,"props":4990,"children":4991},{"class":202,"line":461},[4992,4997,5001,5005,5009,5014,5018,5023],{"type":64,"tag":200,"props":4993,"children":4994},{"style":431},[4995],{"type":69,"value":4996},"  linkOptions",{"type":64,"tag":200,"props":4998,"children":4999},{"style":223},[5000],{"type":69,"value":439},{"type":64,"tag":200,"props":5002,"children":5003},{"style":417},[5004],{"type":69,"value":4860},{"type":64,"tag":200,"props":5006,"children":5007},{"style":223},[5008],{"type":69,"value":683},{"type":64,"tag":200,"props":5010,"children":5011},{"style":417},[5012],{"type":69,"value":5013},"TRouter",{"type":64,"tag":200,"props":5015,"children":5016},{"style":223},[5017],{"type":69,"value":693},{"type":64,"tag":200,"props":5019,"children":5020},{"style":417},[5021],{"type":69,"value":5022}," TOptions",{"type":64,"tag":200,"props":5024,"children":5025},{"style":223},[5026],{"type":69,"value":1192},{"type":64,"tag":200,"props":5028,"children":5029},{"class":202,"line":470},[5030],{"type":64,"tag":200,"props":5031,"children":5032},{"style":223},[5033],{"type":69,"value":467},{"type":64,"tag":200,"props":5035,"children":5036},{"class":202,"line":478},[5037],{"type":64,"tag":200,"props":5038,"children":5039},{"emptyLinePlaceholder":303},[5040],{"type":69,"value":306},{"type":64,"tag":200,"props":5042,"children":5043},{"class":202,"line":946},[5044,5048,5053,5058,5062,5066,5070,5074,5078,5082],{"type":64,"tag":200,"props":5045,"children":5046},{"style":217},[5047],{"type":69,"value":484},{"type":64,"tag":200,"props":5049,"children":5050},{"style":313},[5051],{"type":69,"value":5052}," function",{"type":64,"tag":200,"props":5054,"children":5055},{"style":329},[5056],{"type":69,"value":5057}," NavItem",{"type":64,"tag":200,"props":5059,"children":5060},{"style":223},[5061],{"type":69,"value":683},{"type":64,"tag":200,"props":5063,"children":5064},{"style":417},[5065],{"type":69,"value":5013},{"type":64,"tag":200,"props":5067,"children":5068},{"style":313},[5069],{"type":69,"value":4924},{"type":64,"tag":200,"props":5071,"children":5072},{"style":417},[5073],{"type":69,"value":4210},{"type":64,"tag":200,"props":5075,"children":5076},{"style":223},[5077],{"type":69,"value":693},{"type":64,"tag":200,"props":5079,"children":5080},{"style":417},[5081],{"type":69,"value":5022},{"type":64,"tag":200,"props":5083,"children":5084},{"style":223},[5085],{"type":69,"value":5086},">(\n",{"type":64,"tag":200,"props":5088,"children":5089},{"class":202,"line":954},[5090,5095,5099,5103,5107,5111,5115,5119],{"type":64,"tag":200,"props":5091,"children":5092},{"style":667},[5093],{"type":69,"value":5094},"  props",{"type":64,"tag":200,"props":5096,"children":5097},{"style":223},[5098],{"type":69,"value":439},{"type":64,"tag":200,"props":5100,"children":5101},{"style":417},[5102],{"type":69,"value":4906},{"type":64,"tag":200,"props":5104,"children":5105},{"style":223},[5106],{"type":69,"value":683},{"type":64,"tag":200,"props":5108,"children":5109},{"style":417},[5110],{"type":69,"value":5013},{"type":64,"tag":200,"props":5112,"children":5113},{"style":223},[5114],{"type":69,"value":693},{"type":64,"tag":200,"props":5116,"children":5117},{"style":417},[5118],{"type":69,"value":5022},{"type":64,"tag":200,"props":5120,"children":5121},{"style":223},[5122],{"type":69,"value":5123},">,\n",{"type":64,"tag":200,"props":5125,"children":5126},{"class":202,"line":976},[5127,5132,5137,5141],{"type":64,"tag":200,"props":5128,"children":5129},{"style":223},[5130],{"type":69,"value":5131},"):",{"type":64,"tag":200,"props":5133,"children":5134},{"style":417},[5135],{"type":69,"value":5136}," React",{"type":64,"tag":200,"props":5138,"children":5139},{"style":223},[5140],{"type":69,"value":152},{"type":64,"tag":200,"props":5142,"children":5143},{"style":417},[5144],{"type":69,"value":5145},"ReactNode\n",{"type":64,"tag":200,"props":5147,"children":5148},{"class":202,"line":985},[5149,5153,5157,5161,5165,5170,5174,5178,5182,5186,5190,5195],{"type":64,"tag":200,"props":5150,"children":5151},{"style":217},[5152],{"type":69,"value":484},{"type":64,"tag":200,"props":5154,"children":5155},{"style":313},[5156],{"type":69,"value":5052},{"type":64,"tag":200,"props":5158,"children":5159},{"style":329},[5160],{"type":69,"value":5057},{"type":64,"tag":200,"props":5162,"children":5163},{"style":223},[5164],{"type":69,"value":336},{"type":64,"tag":200,"props":5166,"children":5167},{"style":667},[5168],{"type":69,"value":5169},"props",{"type":64,"tag":200,"props":5171,"children":5172},{"style":223},[5173],{"type":69,"value":439},{"type":64,"tag":200,"props":5175,"children":5176},{"style":417},[5177],{"type":69,"value":4906},{"type":64,"tag":200,"props":5179,"children":5180},{"style":223},[5181],{"type":69,"value":5131},{"type":64,"tag":200,"props":5183,"children":5184},{"style":417},[5185],{"type":69,"value":5136},{"type":64,"tag":200,"props":5187,"children":5188},{"style":223},[5189],{"type":69,"value":152},{"type":64,"tag":200,"props":5191,"children":5192},{"style":417},[5193],{"type":69,"value":5194},"ReactNode",{"type":64,"tag":200,"props":5196,"children":5197},{"style":223},[5198],{"type":69,"value":405},{"type":64,"tag":200,"props":5200,"children":5201},{"class":202,"line":1029},[5202,5206],{"type":64,"tag":200,"props":5203,"children":5204},{"style":217},[5205],{"type":69,"value":1168},{"type":64,"tag":200,"props":5207,"children":5208},{"style":431},[5209],{"type":69,"value":1173},{"type":64,"tag":200,"props":5211,"children":5212},{"class":202,"line":1038},[5213,5217,5222],{"type":64,"tag":200,"props":5214,"children":5215},{"style":223},[5216],{"type":69,"value":1182},{"type":64,"tag":200,"props":5218,"children":5219},{"style":431},[5220],{"type":69,"value":5221},"li",{"type":64,"tag":200,"props":5223,"children":5224},{"style":223},[5225],{"type":69,"value":1192},{"type":64,"tag":200,"props":5227,"children":5228},{"class":202,"line":1046},[5229,5233,5237,5242,5246,5250,5255,5260,5264,5268,5273,5277,5281],{"type":64,"tag":200,"props":5230,"children":5231},{"style":223},[5232],{"type":69,"value":1201},{"type":64,"tag":200,"props":5234,"children":5235},{"style":417},[5236],{"type":69,"value":170},{"type":64,"tag":200,"props":5238,"children":5239},{"style":223},[5240],{"type":69,"value":5241}," {...",{"type":64,"tag":200,"props":5243,"children":5244},{"style":229},[5245],{"type":69,"value":5169},{"type":64,"tag":200,"props":5247,"children":5248},{"style":223},[5249],{"type":69,"value":152},{"type":64,"tag":200,"props":5251,"children":5252},{"style":229},[5253],{"type":69,"value":5254},"linkOptions",{"type":64,"tag":200,"props":5256,"children":5257},{"style":223},[5258],{"type":69,"value":5259},"}>{",{"type":64,"tag":200,"props":5261,"children":5262},{"style":229},[5263],{"type":69,"value":5169},{"type":64,"tag":200,"props":5265,"children":5266},{"style":223},[5267],{"type":69,"value":152},{"type":64,"tag":200,"props":5269,"children":5270},{"style":229},[5271],{"type":69,"value":5272},"label",{"type":64,"tag":200,"props":5274,"children":5275},{"style":223},[5276],{"type":69,"value":1229},{"type":64,"tag":200,"props":5278,"children":5279},{"style":417},[5280],{"type":69,"value":170},{"type":64,"tag":200,"props":5282,"children":5283},{"style":223},[5284],{"type":69,"value":1192},{"type":64,"tag":200,"props":5286,"children":5287},{"class":202,"line":1087},[5288,5292,5296],{"type":64,"tag":200,"props":5289,"children":5290},{"style":223},[5291],{"type":69,"value":1289},{"type":64,"tag":200,"props":5293,"children":5294},{"style":431},[5295],{"type":69,"value":5221},{"type":64,"tag":200,"props":5297,"children":5298},{"style":223},[5299],{"type":69,"value":1192},{"type":64,"tag":200,"props":5301,"children":5302},{"class":202,"line":1096},[5303],{"type":64,"tag":200,"props":5304,"children":5305},{"style":431},[5306],{"type":69,"value":1306},{"type":64,"tag":200,"props":5308,"children":5309},{"class":202,"line":1104},[5310],{"type":64,"tag":200,"props":5311,"children":5312},{"style":223},[5313],{"type":69,"value":467},{"type":64,"tag":200,"props":5315,"children":5316},{"class":202,"line":1145},[5317],{"type":64,"tag":200,"props":5318,"children":5319},{"emptyLinePlaceholder":303},[5320],{"type":69,"value":306},{"type":64,"tag":200,"props":5322,"children":5323},{"class":202,"line":1154},[5324],{"type":64,"tag":200,"props":5325,"children":5326},{"style":207},[5327],{"type":69,"value":5328},"\u002F\u002F Usage — fully type-safe\n",{"type":64,"tag":200,"props":5330,"children":5331},{"class":202,"line":1162},[5332,5336,5341,5346,5350,5354,5359,5363,5368,5372,5376,5380,5384,5388,5392],{"type":64,"tag":200,"props":5333,"children":5334},{"style":223},[5335],{"type":69,"value":683},{"type":64,"tag":200,"props":5337,"children":5338},{"style":417},[5339],{"type":69,"value":5340},"NavItem",{"type":64,"tag":200,"props":5342,"children":5343},{"style":313},[5344],{"type":69,"value":5345}," label",{"type":64,"tag":200,"props":5347,"children":5348},{"style":223},[5349],{"type":69,"value":326},{"type":64,"tag":200,"props":5351,"children":5352},{"style":223},[5353],{"type":69,"value":2654},{"type":64,"tag":200,"props":5355,"children":5356},{"style":250},[5357],{"type":69,"value":5358},"Posts",{"type":64,"tag":200,"props":5360,"children":5361},{"style":223},[5362],{"type":69,"value":2654},{"type":64,"tag":200,"props":5364,"children":5365},{"style":313},[5366],{"type":69,"value":5367}," linkOptions",{"type":64,"tag":200,"props":5369,"children":5370},{"style":223},[5371],{"type":69,"value":2672},{"type":64,"tag":200,"props":5373,"children":5374},{"style":431},[5375],{"type":69,"value":1826},{"type":64,"tag":200,"props":5377,"children":5378},{"style":223},[5379],{"type":69,"value":439},{"type":64,"tag":200,"props":5381,"children":5382},{"style":223},[5383],{"type":69,"value":247},{"type":64,"tag":200,"props":5385,"children":5386},{"style":250},[5387],{"type":69,"value":3236},{"type":64,"tag":200,"props":5389,"children":5390},{"style":223},[5391],{"type":69,"value":400},{"type":64,"tag":200,"props":5393,"children":5394},{"style":223},[5395],{"type":69,"value":2690},{"type":64,"tag":200,"props":5397,"children":5398},{"class":202,"line":1176},[5399,5403,5407,5411,5415,5419,5424,5428,5432,5436,5440,5444,5448,5452,5456,5460,5464,5468,5472,5476,5480,5484,5488,5492,5496],{"type":64,"tag":200,"props":5400,"children":5401},{"style":223},[5402],{"type":69,"value":683},{"type":64,"tag":200,"props":5404,"children":5405},{"style":417},[5406],{"type":69,"value":5340},{"type":64,"tag":200,"props":5408,"children":5409},{"style":313},[5410],{"type":69,"value":5345},{"type":64,"tag":200,"props":5412,"children":5413},{"style":223},[5414],{"type":69,"value":326},{"type":64,"tag":200,"props":5416,"children":5417},{"style":223},[5418],{"type":69,"value":2654},{"type":64,"tag":200,"props":5420,"children":5421},{"style":250},[5422],{"type":69,"value":5423},"Post",{"type":64,"tag":200,"props":5425,"children":5426},{"style":223},[5427],{"type":69,"value":2654},{"type":64,"tag":200,"props":5429,"children":5430},{"style":313},[5431],{"type":69,"value":5367},{"type":64,"tag":200,"props":5433,"children":5434},{"style":223},[5435],{"type":69,"value":2672},{"type":64,"tag":200,"props":5437,"children":5438},{"style":431},[5439],{"type":69,"value":1826},{"type":64,"tag":200,"props":5441,"children":5442},{"style":223},[5443],{"type":69,"value":439},{"type":64,"tag":200,"props":5445,"children":5446},{"style":223},[5447],{"type":69,"value":247},{"type":64,"tag":200,"props":5449,"children":5450},{"style":250},[5451],{"type":69,"value":633},{"type":64,"tag":200,"props":5453,"children":5454},{"style":223},[5455],{"type":69,"value":400},{"type":64,"tag":200,"props":5457,"children":5458},{"style":223},[5459],{"type":69,"value":693},{"type":64,"tag":200,"props":5461,"children":5462},{"style":431},[5463],{"type":69,"value":811},{"type":64,"tag":200,"props":5465,"children":5466},{"style":223},[5467],{"type":69,"value":439},{"type":64,"tag":200,"props":5469,"children":5470},{"style":223},[5471],{"type":69,"value":226},{"type":64,"tag":200,"props":5473,"children":5474},{"style":431},[5475],{"type":69,"value":1000},{"type":64,"tag":200,"props":5477,"children":5478},{"style":223},[5479],{"type":69,"value":439},{"type":64,"tag":200,"props":5481,"children":5482},{"style":223},[5483],{"type":69,"value":247},{"type":64,"tag":200,"props":5485,"children":5486},{"style":250},[5487],{"type":69,"value":4675},{"type":64,"tag":200,"props":5489,"children":5490},{"style":223},[5491],{"type":69,"value":400},{"type":64,"tag":200,"props":5493,"children":5494},{"style":223},[5495],{"type":69,"value":237},{"type":64,"tag":200,"props":5497,"children":5498},{"style":223},[5499],{"type":69,"value":2690},{"type":64,"tag":532,"props":5501,"children":5503},{"id":5502},"validatenavigateoptions-and-validateredirectoptions",[5504,5510,5512],{"type":64,"tag":100,"props":5505,"children":5507},{"className":5506},[],[5508],{"type":69,"value":5509},"ValidateNavigateOptions",{"type":69,"value":5511}," and ",{"type":64,"tag":100,"props":5513,"children":5515},{"className":5514},[],[5516],{"type":69,"value":5517},"ValidateRedirectOptions",{"type":64,"tag":72,"props":5519,"children":5520},{},[5521,5523,5528,5530,5535,5536,5542],{"type":69,"value":5522},"Same pattern as ",{"type":64,"tag":100,"props":5524,"children":5526},{"className":5525},[],[5527],{"type":69,"value":4800},{"type":69,"value":5529}," above, for ",{"type":64,"tag":100,"props":5531,"children":5533},{"className":5532},[],[5534],{"type":69,"value":178},{"type":69,"value":5511},{"type":64,"tag":100,"props":5537,"children":5539},{"className":5538},[],[5540],{"type":69,"value":5541},"redirect",{"type":69,"value":5543},". Declare a generic public overload plus a non-generic implementation signature so the call site stays narrowed and the body works without casts:",{"type":64,"tag":189,"props":5545,"children":5547},{"className":191,"code":5546,"language":193,"meta":194,"style":194},"import {\n  useNavigate,\n  type RegisteredRouter,\n  type ValidateNavigateOptions,\n} from '@tanstack\u002Freact-router'\n\nexport function useDelayedNavigate\u003C\n  TRouter extends RegisteredRouter = RegisteredRouter,\n  TOptions = unknown,\n>(\n  options: ValidateNavigateOptions\u003CTRouter, TOptions>,\n  delayMs: number,\n): () => void\nexport function useDelayedNavigate(\n  options: ValidateNavigateOptions,\n  delayMs: number,\n) {\n  const navigate = useNavigate()\n  return () => {\n    setTimeout(() => navigate(options), delayMs)\n  }\n}\n",[5548],{"type":64,"tag":100,"props":5549,"children":5550},{"__ignoreMap":194},[5551,5562,5574,5589,5605,5628,5635,5655,5682,5701,5708,5744,5765,5785,5805,5824,5843,5854,5877,5896,5946,5953],{"type":64,"tag":200,"props":5552,"children":5553},{"class":202,"line":203},[5554,5558],{"type":64,"tag":200,"props":5555,"children":5556},{"style":217},[5557],{"type":69,"value":220},{"type":64,"tag":200,"props":5559,"children":5560},{"style":223},[5561],{"type":69,"value":405},{"type":64,"tag":200,"props":5563,"children":5564},{"class":202,"line":213},[5565,5570],{"type":64,"tag":200,"props":5566,"children":5567},{"style":229},[5568],{"type":69,"value":5569},"  useNavigate",{"type":64,"tag":200,"props":5571,"children":5572},{"style":223},[5573],{"type":69,"value":768},{"type":64,"tag":200,"props":5575,"children":5576},{"class":202,"line":261},[5577,5581,5585],{"type":64,"tag":200,"props":5578,"children":5579},{"style":217},[5580],{"type":69,"value":4840},{"type":64,"tag":200,"props":5582,"children":5583},{"style":229},[5584],{"type":69,"value":4210},{"type":64,"tag":200,"props":5586,"children":5587},{"style":223},[5588],{"type":69,"value":768},{"type":64,"tag":200,"props":5590,"children":5591},{"class":202,"line":299},[5592,5596,5601],{"type":64,"tag":200,"props":5593,"children":5594},{"style":217},[5595],{"type":69,"value":4840},{"type":64,"tag":200,"props":5597,"children":5598},{"style":229},[5599],{"type":69,"value":5600}," ValidateNavigateOptions",{"type":64,"tag":200,"props":5602,"children":5603},{"style":223},[5604],{"type":69,"value":768},{"type":64,"tag":200,"props":5606,"children":5607},{"class":202,"line":309},[5608,5612,5616,5620,5624],{"type":64,"tag":200,"props":5609,"children":5610},{"style":223},[5611],{"type":69,"value":351},{"type":64,"tag":200,"props":5613,"children":5614},{"style":217},[5615],{"type":69,"value":242},{"type":64,"tag":200,"props":5617,"children":5618},{"style":223},[5619],{"type":69,"value":247},{"type":64,"tag":200,"props":5621,"children":5622},{"style":250},[5623],{"type":69,"value":253},{"type":64,"tag":200,"props":5625,"children":5626},{"style":223},[5627],{"type":69,"value":258},{"type":64,"tag":200,"props":5629,"children":5630},{"class":202,"line":359},[5631],{"type":64,"tag":200,"props":5632,"children":5633},{"emptyLinePlaceholder":303},[5634],{"type":69,"value":306},{"type":64,"tag":200,"props":5636,"children":5637},{"class":202,"line":367},[5638,5642,5646,5651],{"type":64,"tag":200,"props":5639,"children":5640},{"style":217},[5641],{"type":69,"value":484},{"type":64,"tag":200,"props":5643,"children":5644},{"style":313},[5645],{"type":69,"value":5052},{"type":64,"tag":200,"props":5647,"children":5648},{"style":329},[5649],{"type":69,"value":5650}," useDelayedNavigate",{"type":64,"tag":200,"props":5652,"children":5653},{"style":223},[5654],{"type":69,"value":4911},{"type":64,"tag":200,"props":5656,"children":5657},{"class":202,"line":376},[5658,5662,5666,5670,5674,5678],{"type":64,"tag":200,"props":5659,"children":5660},{"style":417},[5661],{"type":69,"value":4919},{"type":64,"tag":200,"props":5663,"children":5664},{"style":313},[5665],{"type":69,"value":4924},{"type":64,"tag":200,"props":5667,"children":5668},{"style":417},[5669],{"type":69,"value":4210},{"type":64,"tag":200,"props":5671,"children":5672},{"style":223},[5673],{"type":69,"value":850},{"type":64,"tag":200,"props":5675,"children":5676},{"style":417},[5677],{"type":69,"value":4210},{"type":64,"tag":200,"props":5679,"children":5680},{"style":223},[5681],{"type":69,"value":768},{"type":64,"tag":200,"props":5683,"children":5684},{"class":202,"line":408},[5685,5689,5693,5697],{"type":64,"tag":200,"props":5686,"children":5687},{"style":417},[5688],{"type":69,"value":4948},{"type":64,"tag":200,"props":5690,"children":5691},{"style":223},[5692],{"type":69,"value":850},{"type":64,"tag":200,"props":5694,"children":5695},{"style":417},[5696],{"type":69,"value":698},{"type":64,"tag":200,"props":5698,"children":5699},{"style":223},[5700],{"type":69,"value":768},{"type":64,"tag":200,"props":5702,"children":5703},{"class":202,"line":427},[5704],{"type":64,"tag":200,"props":5705,"children":5706},{"style":223},[5707],{"type":69,"value":5086},{"type":64,"tag":200,"props":5709,"children":5710},{"class":202,"line":452},[5711,5716,5720,5724,5728,5732,5736,5740],{"type":64,"tag":200,"props":5712,"children":5713},{"style":667},[5714],{"type":69,"value":5715},"  options",{"type":64,"tag":200,"props":5717,"children":5718},{"style":223},[5719],{"type":69,"value":439},{"type":64,"tag":200,"props":5721,"children":5722},{"style":417},[5723],{"type":69,"value":5600},{"type":64,"tag":200,"props":5725,"children":5726},{"style":223},[5727],{"type":69,"value":683},{"type":64,"tag":200,"props":5729,"children":5730},{"style":417},[5731],{"type":69,"value":5013},{"type":64,"tag":200,"props":5733,"children":5734},{"style":223},[5735],{"type":69,"value":693},{"type":64,"tag":200,"props":5737,"children":5738},{"style":417},[5739],{"type":69,"value":5022},{"type":64,"tag":200,"props":5741,"children":5742},{"style":223},[5743],{"type":69,"value":5123},{"type":64,"tag":200,"props":5745,"children":5746},{"class":202,"line":461},[5747,5752,5756,5761],{"type":64,"tag":200,"props":5748,"children":5749},{"style":667},[5750],{"type":69,"value":5751},"  delayMs",{"type":64,"tag":200,"props":5753,"children":5754},{"style":223},[5755],{"type":69,"value":439},{"type":64,"tag":200,"props":5757,"children":5758},{"style":417},[5759],{"type":69,"value":5760}," number",{"type":64,"tag":200,"props":5762,"children":5763},{"style":223},[5764],{"type":69,"value":768},{"type":64,"tag":200,"props":5766,"children":5767},{"class":202,"line":470},[5768,5772,5776,5780],{"type":64,"tag":200,"props":5769,"children":5770},{"style":223},[5771],{"type":69,"value":5131},{"type":64,"tag":200,"props":5773,"children":5774},{"style":223},[5775],{"type":69,"value":1575},{"type":64,"tag":200,"props":5777,"children":5778},{"style":313},[5779],{"type":69,"value":708},{"type":64,"tag":200,"props":5781,"children":5782},{"style":417},[5783],{"type":69,"value":5784}," void\n",{"type":64,"tag":200,"props":5786,"children":5787},{"class":202,"line":478},[5788,5792,5796,5800],{"type":64,"tag":200,"props":5789,"children":5790},{"style":217},[5791],{"type":69,"value":484},{"type":64,"tag":200,"props":5793,"children":5794},{"style":313},[5795],{"type":69,"value":5052},{"type":64,"tag":200,"props":5797,"children":5798},{"style":329},[5799],{"type":69,"value":5650},{"type":64,"tag":200,"props":5801,"children":5802},{"style":223},[5803],{"type":69,"value":5804},"(\n",{"type":64,"tag":200,"props":5806,"children":5807},{"class":202,"line":946},[5808,5812,5816,5820],{"type":64,"tag":200,"props":5809,"children":5810},{"style":667},[5811],{"type":69,"value":5715},{"type":64,"tag":200,"props":5813,"children":5814},{"style":223},[5815],{"type":69,"value":439},{"type":64,"tag":200,"props":5817,"children":5818},{"style":417},[5819],{"type":69,"value":5600},{"type":64,"tag":200,"props":5821,"children":5822},{"style":223},[5823],{"type":69,"value":768},{"type":64,"tag":200,"props":5825,"children":5826},{"class":202,"line":954},[5827,5831,5835,5839],{"type":64,"tag":200,"props":5828,"children":5829},{"style":667},[5830],{"type":69,"value":5751},{"type":64,"tag":200,"props":5832,"children":5833},{"style":223},[5834],{"type":69,"value":439},{"type":64,"tag":200,"props":5836,"children":5837},{"style":417},[5838],{"type":69,"value":5760},{"type":64,"tag":200,"props":5840,"children":5841},{"style":223},[5842],{"type":69,"value":768},{"type":64,"tag":200,"props":5844,"children":5845},{"class":202,"line":976},[5846,5850],{"type":64,"tag":200,"props":5847,"children":5848},{"style":223},[5849],{"type":69,"value":763},{"type":64,"tag":200,"props":5851,"children":5852},{"style":223},[5853],{"type":69,"value":405},{"type":64,"tag":200,"props":5855,"children":5856},{"class":202,"line":985},[5857,5861,5865,5869,5873],{"type":64,"tag":200,"props":5858,"children":5859},{"style":313},[5860],{"type":69,"value":991},{"type":64,"tag":200,"props":5862,"children":5863},{"style":229},[5864],{"type":69,"value":2510},{"type":64,"tag":200,"props":5866,"children":5867},{"style":223},[5868],{"type":69,"value":850},{"type":64,"tag":200,"props":5870,"children":5871},{"style":329},[5872],{"type":69,"value":2248},{"type":64,"tag":200,"props":5874,"children":5875},{"style":431},[5876],{"type":69,"value":1026},{"type":64,"tag":200,"props":5878,"children":5879},{"class":202,"line":1029},[5880,5884,5888,5892],{"type":64,"tag":200,"props":5881,"children":5882},{"style":217},[5883],{"type":69,"value":1168},{"type":64,"tag":200,"props":5885,"children":5886},{"style":223},[5887],{"type":69,"value":1575},{"type":64,"tag":200,"props":5889,"children":5890},{"style":313},[5891],{"type":69,"value":708},{"type":64,"tag":200,"props":5893,"children":5894},{"style":223},[5895],{"type":69,"value":405},{"type":64,"tag":200,"props":5897,"children":5898},{"class":202,"line":1038},[5899,5904,5908,5912,5916,5920,5924,5929,5933,5937,5942],{"type":64,"tag":200,"props":5900,"children":5901},{"style":329},[5902],{"type":69,"value":5903},"    setTimeout",{"type":64,"tag":200,"props":5905,"children":5906},{"style":431},[5907],{"type":69,"value":336},{"type":64,"tag":200,"props":5909,"children":5910},{"style":223},[5911],{"type":69,"value":969},{"type":64,"tag":200,"props":5913,"children":5914},{"style":313},[5915],{"type":69,"value":708},{"type":64,"tag":200,"props":5917,"children":5918},{"style":329},[5919],{"type":69,"value":2510},{"type":64,"tag":200,"props":5921,"children":5922},{"style":431},[5923],{"type":69,"value":336},{"type":64,"tag":200,"props":5925,"children":5926},{"style":229},[5927],{"type":69,"value":5928},"options",{"type":64,"tag":200,"props":5930,"children":5931},{"style":431},[5932],{"type":69,"value":763},{"type":64,"tag":200,"props":5934,"children":5935},{"style":223},[5936],{"type":69,"value":693},{"type":64,"tag":200,"props":5938,"children":5939},{"style":229},[5940],{"type":69,"value":5941}," delayMs",{"type":64,"tag":200,"props":5943,"children":5944},{"style":431},[5945],{"type":69,"value":356},{"type":64,"tag":200,"props":5947,"children":5948},{"class":202,"line":1046},[5949],{"type":64,"tag":200,"props":5950,"children":5951},{"style":223},[5952],{"type":69,"value":458},{"type":64,"tag":200,"props":5954,"children":5955},{"class":202,"line":1087},[5956],{"type":64,"tag":200,"props":5957,"children":5958},{"style":223},[5959],{"type":69,"value":467},{"type":64,"tag":72,"props":5961,"children":5962},{},[5963,5968,5970,5976,5978,5983,5985,5991],{"type":64,"tag":100,"props":5964,"children":5966},{"className":5965},[],[5967],{"type":69,"value":5517},{"type":69,"value":5969}," works identically — declare a generic overload accepting ",{"type":64,"tag":100,"props":5971,"children":5973},{"className":5972},[],[5974],{"type":69,"value":5975},"ValidateRedirectOptions\u003CTRouter, TOptions>",{"type":69,"value":5977}," and an impl signature accepting ",{"type":64,"tag":100,"props":5979,"children":5981},{"className":5980},[],[5982],{"type":69,"value":5517},{"type":69,"value":5984},", then call ",{"type":64,"tag":100,"props":5986,"children":5988},{"className":5987},[],[5989],{"type":69,"value":5990},"redirect(options)",{"type":69,"value":5992}," in the body.",{"type":64,"tag":532,"props":5994,"children":5996},{"id":5995},"render-props-for-maximum-performance",[5997],{"type":69,"value":5998},"Render Props for Maximum Performance",{"type":64,"tag":72,"props":6000,"children":6001},{},[6002,6004,6009,6011,6016],{"type":69,"value":6003},"Instead of accepting ",{"type":64,"tag":100,"props":6005,"children":6007},{"className":6006},[],[6008],{"type":69,"value":4171},{"type":69,"value":6010},", invert control so ",{"type":64,"tag":100,"props":6012,"children":6014},{"className":6013},[],[6015],{"type":69,"value":170},{"type":69,"value":6017}," is narrowed at the call site:",{"type":64,"tag":189,"props":6019,"children":6021},{"className":191,"code":6020,"language":193,"meta":194,"style":194},"function Card(props: { title: string; renderLink: () => React.ReactNode }) {\n  return (\n    \u003Cdiv>\n      \u003Ch2>{props.title}\u003C\u002Fh2>\n      {props.renderLink()}\n    \u003C\u002Fdiv>\n  )\n}\n\n\u002F\u002F Link narrowed to exactly \u002Fposts — no union check\n;\u003CCard title=\"All Posts\" renderLink={() => \u003CLink to=\"\u002Fposts\">View\u003C\u002FLink>} \u002F>\n",[6022],{"type":64,"tag":100,"props":6023,"children":6024},{"__ignoreMap":194},[6025,6107,6118,6133,6172,6201,6216,6223,6230,6237,6245],{"type":64,"tag":200,"props":6026,"children":6027},{"class":202,"line":203},[6028,6032,6037,6041,6045,6049,6053,6058,6062,6066,6070,6075,6079,6083,6087,6091,6095,6099,6103],{"type":64,"tag":200,"props":6029,"children":6030},{"style":313},[6031],{"type":69,"value":960},{"type":64,"tag":200,"props":6033,"children":6034},{"style":329},[6035],{"type":69,"value":6036}," Card",{"type":64,"tag":200,"props":6038,"children":6039},{"style":223},[6040],{"type":69,"value":336},{"type":64,"tag":200,"props":6042,"children":6043},{"style":667},[6044],{"type":69,"value":5169},{"type":64,"tag":200,"props":6046,"children":6047},{"style":223},[6048],{"type":69,"value":439},{"type":64,"tag":200,"props":6050,"children":6051},{"style":223},[6052],{"type":69,"value":226},{"type":64,"tag":200,"props":6054,"children":6055},{"style":431},[6056],{"type":69,"value":6057}," title",{"type":64,"tag":200,"props":6059,"children":6060},{"style":223},[6061],{"type":69,"value":439},{"type":64,"tag":200,"props":6063,"children":6064},{"style":417},[6065],{"type":69,"value":1434},{"type":64,"tag":200,"props":6067,"children":6068},{"style":223},[6069],{"type":69,"value":1439},{"type":64,"tag":200,"props":6071,"children":6072},{"style":431},[6073],{"type":69,"value":6074}," renderLink",{"type":64,"tag":200,"props":6076,"children":6077},{"style":223},[6078],{"type":69,"value":439},{"type":64,"tag":200,"props":6080,"children":6081},{"style":223},[6082],{"type":69,"value":1575},{"type":64,"tag":200,"props":6084,"children":6085},{"style":313},[6086],{"type":69,"value":708},{"type":64,"tag":200,"props":6088,"children":6089},{"style":417},[6090],{"type":69,"value":5136},{"type":64,"tag":200,"props":6092,"children":6093},{"style":223},[6094],{"type":69,"value":152},{"type":64,"tag":200,"props":6096,"children":6097},{"style":417},[6098],{"type":69,"value":5194},{"type":64,"tag":200,"props":6100,"children":6101},{"style":223},[6102],{"type":69,"value":816},{"type":64,"tag":200,"props":6104,"children":6105},{"style":223},[6106],{"type":69,"value":405},{"type":64,"tag":200,"props":6108,"children":6109},{"class":202,"line":213},[6110,6114],{"type":64,"tag":200,"props":6111,"children":6112},{"style":217},[6113],{"type":69,"value":1168},{"type":64,"tag":200,"props":6115,"children":6116},{"style":431},[6117],{"type":69,"value":1173},{"type":64,"tag":200,"props":6119,"children":6120},{"class":202,"line":261},[6121,6125,6129],{"type":64,"tag":200,"props":6122,"children":6123},{"style":223},[6124],{"type":69,"value":1182},{"type":64,"tag":200,"props":6126,"children":6127},{"style":431},[6128],{"type":69,"value":1187},{"type":64,"tag":200,"props":6130,"children":6131},{"style":223},[6132],{"type":69,"value":1192},{"type":64,"tag":200,"props":6134,"children":6135},{"class":202,"line":299},[6136,6140,6144,6148,6152,6156,6160,6164,6168],{"type":64,"tag":200,"props":6137,"children":6138},{"style":223},[6139],{"type":69,"value":1201},{"type":64,"tag":200,"props":6141,"children":6142},{"style":431},[6143],{"type":69,"value":154},{"type":64,"tag":200,"props":6145,"children":6146},{"style":223},[6147],{"type":69,"value":1210},{"type":64,"tag":200,"props":6149,"children":6150},{"style":229},[6151],{"type":69,"value":5169},{"type":64,"tag":200,"props":6153,"children":6154},{"style":223},[6155],{"type":69,"value":152},{"type":64,"tag":200,"props":6157,"children":6158},{"style":229},[6159],{"type":69,"value":1224},{"type":64,"tag":200,"props":6161,"children":6162},{"style":223},[6163],{"type":69,"value":1229},{"type":64,"tag":200,"props":6165,"children":6166},{"style":431},[6167],{"type":69,"value":154},{"type":64,"tag":200,"props":6169,"children":6170},{"style":223},[6171],{"type":69,"value":1192},{"type":64,"tag":200,"props":6173,"children":6174},{"class":202,"line":309},[6175,6180,6184,6188,6193,6197],{"type":64,"tag":200,"props":6176,"children":6177},{"style":223},[6178],{"type":69,"value":6179},"      {",{"type":64,"tag":200,"props":6181,"children":6182},{"style":229},[6183],{"type":69,"value":5169},{"type":64,"tag":200,"props":6185,"children":6186},{"style":223},[6187],{"type":69,"value":152},{"type":64,"tag":200,"props":6189,"children":6190},{"style":329},[6191],{"type":69,"value":6192},"renderLink",{"type":64,"tag":200,"props":6194,"children":6195},{"style":229},[6196],{"type":69,"value":969},{"type":64,"tag":200,"props":6198,"children":6199},{"style":223},[6200],{"type":69,"value":467},{"type":64,"tag":200,"props":6202,"children":6203},{"class":202,"line":359},[6204,6208,6212],{"type":64,"tag":200,"props":6205,"children":6206},{"style":223},[6207],{"type":69,"value":1289},{"type":64,"tag":200,"props":6209,"children":6210},{"style":431},[6211],{"type":69,"value":1187},{"type":64,"tag":200,"props":6213,"children":6214},{"style":223},[6215],{"type":69,"value":1192},{"type":64,"tag":200,"props":6217,"children":6218},{"class":202,"line":367},[6219],{"type":64,"tag":200,"props":6220,"children":6221},{"style":431},[6222],{"type":69,"value":1306},{"type":64,"tag":200,"props":6224,"children":6225},{"class":202,"line":376},[6226],{"type":64,"tag":200,"props":6227,"children":6228},{"style":223},[6229],{"type":69,"value":467},{"type":64,"tag":200,"props":6231,"children":6232},{"class":202,"line":408},[6233],{"type":64,"tag":200,"props":6234,"children":6235},{"emptyLinePlaceholder":303},[6236],{"type":69,"value":306},{"type":64,"tag":200,"props":6238,"children":6239},{"class":202,"line":427},[6240],{"type":64,"tag":200,"props":6241,"children":6242},{"style":207},[6243],{"type":69,"value":6244},"\u002F\u002F Link narrowed to exactly \u002Fposts — no union check\n",{"type":64,"tag":200,"props":6246,"children":6247},{"class":202,"line":452},[6248,6253,6258,6262,6266,6271,6275,6279,6283,6288,6292,6296,6300,6304,6308,6313,6317,6322,6327,6331],{"type":64,"tag":200,"props":6249,"children":6250},{"style":223},[6251],{"type":69,"value":6252},";\u003C",{"type":64,"tag":200,"props":6254,"children":6255},{"style":229},[6256],{"type":69,"value":6257},"Card title",{"type":64,"tag":200,"props":6259,"children":6260},{"style":223},[6261],{"type":69,"value":326},{"type":64,"tag":200,"props":6263,"children":6264},{"style":223},[6265],{"type":69,"value":2654},{"type":64,"tag":200,"props":6267,"children":6268},{"style":250},[6269],{"type":69,"value":6270},"All Posts",{"type":64,"tag":200,"props":6272,"children":6273},{"style":223},[6274],{"type":69,"value":2654},{"type":64,"tag":200,"props":6276,"children":6277},{"style":229},[6278],{"type":69,"value":6074},{"type":64,"tag":200,"props":6280,"children":6281},{"style":223},[6282],{"type":69,"value":2815},{"type":64,"tag":200,"props":6284,"children":6285},{"style":229},[6286],{"type":69,"value":6287},"() => \u003CLink to",{"type":64,"tag":200,"props":6289,"children":6290},{"style":223},[6291],{"type":69,"value":326},{"type":64,"tag":200,"props":6293,"children":6294},{"style":223},[6295],{"type":69,"value":2654},{"type":64,"tag":200,"props":6297,"children":6298},{"style":250},[6299],{"type":69,"value":3236},{"type":64,"tag":200,"props":6301,"children":6302},{"style":223},[6303],{"type":69,"value":2654},{"type":64,"tag":200,"props":6305,"children":6306},{"style":223},[6307],{"type":69,"value":1254},{"type":64,"tag":200,"props":6309,"children":6310},{"style":229},[6311],{"type":69,"value":6312},"View",{"type":64,"tag":200,"props":6314,"children":6315},{"style":223},[6316],{"type":69,"value":683},{"type":64,"tag":200,"props":6318,"children":6319},{"style":223},[6320],{"type":69,"value":6321},"\u002F",{"type":64,"tag":200,"props":6323,"children":6324},{"style":250},[6325],{"type":69,"value":6326},"Link>} ",{"type":64,"tag":200,"props":6328,"children":6329},{"style":223},[6330],{"type":69,"value":6321},{"type":64,"tag":200,"props":6332,"children":6333},{"style":223},[6334],{"type":69,"value":1192},{"type":64,"tag":154,"props":6336,"children":6338},{"id":6337},"render-optimizations",[6339],{"type":69,"value":6340},"Render Optimizations",{"type":64,"tag":532,"props":6342,"children":6344},{"id":6343},"fine-grained-selectors-with-select",[6345,6347],{"type":69,"value":6346},"Fine-Grained Selectors with ",{"type":64,"tag":100,"props":6348,"children":6350},{"className":6349},[],[6351],{"type":69,"value":6352},"select",{"type":64,"tag":189,"props":6354,"children":6356},{"className":191,"code":6355,"language":193,"meta":194,"style":194},"function PostTitle() {\n  \u002F\u002F Only re-renders when page changes, not when other search params change\n  const page = Route.useSearch({ select: ({ page }) => page })\n  return \u003Cspan>Page {page}\u003C\u002Fspan>\n}\n",[6357],{"type":64,"tag":100,"props":6358,"children":6359},{"__ignoreMap":194},[6360,6380,6388,6460,6503],{"type":64,"tag":200,"props":6361,"children":6362},{"class":202,"line":203},[6363,6367,6372,6376],{"type":64,"tag":200,"props":6364,"children":6365},{"style":313},[6366],{"type":69,"value":960},{"type":64,"tag":200,"props":6368,"children":6369},{"style":329},[6370],{"type":69,"value":6371}," PostTitle",{"type":64,"tag":200,"props":6373,"children":6374},{"style":223},[6375],{"type":69,"value":969},{"type":64,"tag":200,"props":6377,"children":6378},{"style":223},[6379],{"type":69,"value":405},{"type":64,"tag":200,"props":6381,"children":6382},{"class":202,"line":213},[6383],{"type":64,"tag":200,"props":6384,"children":6385},{"style":207},[6386],{"type":69,"value":6387},"  \u002F\u002F Only re-renders when page changes, not when other search params change\n",{"type":64,"tag":200,"props":6389,"children":6390},{"class":202,"line":261},[6391,6395,6399,6403,6407,6411,6415,6419,6423,6428,6432,6436,6440,6444,6448,6452,6456],{"type":64,"tag":200,"props":6392,"children":6393},{"style":313},[6394],{"type":69,"value":991},{"type":64,"tag":200,"props":6396,"children":6397},{"style":229},[6398],{"type":69,"value":1060},{"type":64,"tag":200,"props":6400,"children":6401},{"style":223},[6402],{"type":69,"value":850},{"type":64,"tag":200,"props":6404,"children":6405},{"style":229},[6406],{"type":69,"value":1013},{"type":64,"tag":200,"props":6408,"children":6409},{"style":223},[6410],{"type":69,"value":152},{"type":64,"tag":200,"props":6412,"children":6413},{"style":329},[6414],{"type":69,"value":185},{"type":64,"tag":200,"props":6416,"children":6417},{"style":431},[6418],{"type":69,"value":336},{"type":64,"tag":200,"props":6420,"children":6421},{"style":223},[6422],{"type":69,"value":341},{"type":64,"tag":200,"props":6424,"children":6425},{"style":329},[6426],{"type":69,"value":6427}," select",{"type":64,"tag":200,"props":6429,"children":6430},{"style":223},[6431],{"type":69,"value":439},{"type":64,"tag":200,"props":6433,"children":6434},{"style":223},[6435],{"type":69,"value":806},{"type":64,"tag":200,"props":6437,"children":6438},{"style":667},[6439],{"type":69,"value":1060},{"type":64,"tag":200,"props":6441,"children":6442},{"style":223},[6443],{"type":69,"value":816},{"type":64,"tag":200,"props":6445,"children":6446},{"style":313},[6447],{"type":69,"value":708},{"type":64,"tag":200,"props":6449,"children":6450},{"style":229},[6451],{"type":69,"value":1060},{"type":64,"tag":200,"props":6453,"children":6454},{"style":223},[6455],{"type":69,"value":237},{"type":64,"tag":200,"props":6457,"children":6458},{"style":431},[6459],{"type":69,"value":356},{"type":64,"tag":200,"props":6461,"children":6462},{"class":202,"line":299},[6463,6467,6471,6475,6479,6483,6487,6491,6495,6499],{"type":64,"tag":200,"props":6464,"children":6465},{"style":217},[6466],{"type":69,"value":1168},{"type":64,"tag":200,"props":6468,"children":6469},{"style":223},[6470],{"type":69,"value":1584},{"type":64,"tag":200,"props":6472,"children":6473},{"style":431},[6474],{"type":69,"value":200},{"type":64,"tag":200,"props":6476,"children":6477},{"style":223},[6478],{"type":69,"value":1254},{"type":64,"tag":200,"props":6480,"children":6481},{"style":229},[6482],{"type":69,"value":1259},{"type":64,"tag":200,"props":6484,"children":6485},{"style":223},[6486],{"type":69,"value":341},{"type":64,"tag":200,"props":6488,"children":6489},{"style":229},[6490],{"type":69,"value":1268},{"type":64,"tag":200,"props":6492,"children":6493},{"style":223},[6494],{"type":69,"value":1229},{"type":64,"tag":200,"props":6496,"children":6497},{"style":431},[6498],{"type":69,"value":200},{"type":64,"tag":200,"props":6500,"children":6501},{"style":223},[6502],{"type":69,"value":1192},{"type":64,"tag":200,"props":6504,"children":6505},{"class":202,"line":309},[6506],{"type":64,"tag":200,"props":6507,"children":6508},{"style":223},[6509],{"type":69,"value":467},{"type":64,"tag":532,"props":6511,"children":6513},{"id":6512},"structural-sharing",[6514],{"type":69,"value":6515},"Structural Sharing",{"type":64,"tag":72,"props":6517,"children":6518},{},[6519],{"type":69,"value":6520},"Preserve referential identity across re-renders for search params:",{"type":64,"tag":189,"props":6522,"children":6524},{"className":191,"code":6523,"language":193,"meta":194,"style":194},"const router = createRouter({\n  routeTree,\n  defaultStructuralSharing: true, \u002F\u002F Enable globally\n})\n\n\u002F\u002F Or per-hook\nconst result = Route.useSearch({\n  select: (search) => ({ foo: search.foo, label: `Page ${search.foo}` }),\n  structuralSharing: true,\n})\n",[6525],{"type":64,"tag":100,"props":6526,"children":6527},{"__ignoreMap":194},[6528,6555,6567,6593,6604,6611,6619,6655,6768,6788],{"type":64,"tag":200,"props":6529,"children":6530},{"class":202,"line":203},[6531,6535,6539,6543,6547,6551],{"type":64,"tag":200,"props":6532,"children":6533},{"style":313},[6534],{"type":69,"value":316},{"type":64,"tag":200,"props":6536,"children":6537},{"style":229},[6538],{"type":69,"value":321},{"type":64,"tag":200,"props":6540,"children":6541},{"style":223},[6542],{"type":69,"value":326},{"type":64,"tag":200,"props":6544,"children":6545},{"style":329},[6546],{"type":69,"value":232},{"type":64,"tag":200,"props":6548,"children":6549},{"style":229},[6550],{"type":69,"value":336},{"type":64,"tag":200,"props":6552,"children":6553},{"style":223},[6554],{"type":69,"value":647},{"type":64,"tag":200,"props":6556,"children":6557},{"class":202,"line":213},[6558,6563],{"type":64,"tag":200,"props":6559,"children":6560},{"style":229},[6561],{"type":69,"value":6562},"  routeTree",{"type":64,"tag":200,"props":6564,"children":6565},{"style":223},[6566],{"type":69,"value":768},{"type":64,"tag":200,"props":6568,"children":6569},{"class":202,"line":261},[6570,6575,6579,6584,6588],{"type":64,"tag":200,"props":6571,"children":6572},{"style":431},[6573],{"type":69,"value":6574},"  defaultStructuralSharing",{"type":64,"tag":200,"props":6576,"children":6577},{"style":223},[6578],{"type":69,"value":439},{"type":64,"tag":200,"props":6580,"children":6581},{"style":3025},[6582],{"type":69,"value":6583}," true",{"type":64,"tag":200,"props":6585,"children":6586},{"style":223},[6587],{"type":69,"value":693},{"type":64,"tag":200,"props":6589,"children":6590},{"style":207},[6591],{"type":69,"value":6592}," \u002F\u002F Enable globally\n",{"type":64,"tag":200,"props":6594,"children":6595},{"class":202,"line":299},[6596,6600],{"type":64,"tag":200,"props":6597,"children":6598},{"style":223},[6599],{"type":69,"value":351},{"type":64,"tag":200,"props":6601,"children":6602},{"style":229},[6603],{"type":69,"value":356},{"type":64,"tag":200,"props":6605,"children":6606},{"class":202,"line":309},[6607],{"type":64,"tag":200,"props":6608,"children":6609},{"emptyLinePlaceholder":303},[6610],{"type":69,"value":306},{"type":64,"tag":200,"props":6612,"children":6613},{"class":202,"line":359},[6614],{"type":64,"tag":200,"props":6615,"children":6616},{"style":207},[6617],{"type":69,"value":6618},"\u002F\u002F Or per-hook\n",{"type":64,"tag":200,"props":6620,"children":6621},{"class":202,"line":367},[6622,6626,6631,6635,6639,6643,6647,6651],{"type":64,"tag":200,"props":6623,"children":6624},{"style":313},[6625],{"type":69,"value":316},{"type":64,"tag":200,"props":6627,"children":6628},{"style":229},[6629],{"type":69,"value":6630}," result ",{"type":64,"tag":200,"props":6632,"children":6633},{"style":223},[6634],{"type":69,"value":326},{"type":64,"tag":200,"props":6636,"children":6637},{"style":229},[6638],{"type":69,"value":1013},{"type":64,"tag":200,"props":6640,"children":6641},{"style":223},[6642],{"type":69,"value":152},{"type":64,"tag":200,"props":6644,"children":6645},{"style":329},[6646],{"type":69,"value":185},{"type":64,"tag":200,"props":6648,"children":6649},{"style":229},[6650],{"type":69,"value":336},{"type":64,"tag":200,"props":6652,"children":6653},{"style":223},[6654],{"type":69,"value":647},{"type":64,"tag":200,"props":6656,"children":6657},{"class":202,"line":376},[6658,6663,6667,6671,6675,6679,6683,6687,6691,6696,6700,6704,6708,6713,6717,6721,6725,6730,6734,6739,6743,6747,6751,6756,6760,6764],{"type":64,"tag":200,"props":6659,"children":6660},{"style":329},[6661],{"type":69,"value":6662},"  select",{"type":64,"tag":200,"props":6664,"children":6665},{"style":223},[6666],{"type":69,"value":439},{"type":64,"tag":200,"props":6668,"children":6669},{"style":223},[6670],{"type":69,"value":664},{"type":64,"tag":200,"props":6672,"children":6673},{"style":667},[6674],{"type":69,"value":37},{"type":64,"tag":200,"props":6676,"children":6677},{"style":223},[6678],{"type":69,"value":763},{"type":64,"tag":200,"props":6680,"children":6681},{"style":313},[6682],{"type":69,"value":708},{"type":64,"tag":200,"props":6684,"children":6685},{"style":229},[6686],{"type":69,"value":664},{"type":64,"tag":200,"props":6688,"children":6689},{"style":223},[6690],{"type":69,"value":341},{"type":64,"tag":200,"props":6692,"children":6693},{"style":431},[6694],{"type":69,"value":6695}," foo",{"type":64,"tag":200,"props":6697,"children":6698},{"style":223},[6699],{"type":69,"value":439},{"type":64,"tag":200,"props":6701,"children":6702},{"style":229},[6703],{"type":69,"value":2315},{"type":64,"tag":200,"props":6705,"children":6706},{"style":223},[6707],{"type":69,"value":152},{"type":64,"tag":200,"props":6709,"children":6710},{"style":229},[6711],{"type":69,"value":6712},"foo",{"type":64,"tag":200,"props":6714,"children":6715},{"style":223},[6716],{"type":69,"value":693},{"type":64,"tag":200,"props":6718,"children":6719},{"style":431},[6720],{"type":69,"value":5345},{"type":64,"tag":200,"props":6722,"children":6723},{"style":223},[6724],{"type":69,"value":439},{"type":64,"tag":200,"props":6726,"children":6727},{"style":223},[6728],{"type":69,"value":6729}," `",{"type":64,"tag":200,"props":6731,"children":6732},{"style":250},[6733],{"type":69,"value":1259},{"type":64,"tag":200,"props":6735,"children":6736},{"style":223},[6737],{"type":69,"value":6738},"${",{"type":64,"tag":200,"props":6740,"children":6741},{"style":229},[6742],{"type":69,"value":37},{"type":64,"tag":200,"props":6744,"children":6745},{"style":223},[6746],{"type":69,"value":152},{"type":64,"tag":200,"props":6748,"children":6749},{"style":229},[6750],{"type":69,"value":6712},{"type":64,"tag":200,"props":6752,"children":6753},{"style":223},[6754],{"type":69,"value":6755},"}`",{"type":64,"tag":200,"props":6757,"children":6758},{"style":223},[6759],{"type":69,"value":237},{"type":64,"tag":200,"props":6761,"children":6762},{"style":229},[6763],{"type":69,"value":763},{"type":64,"tag":200,"props":6765,"children":6766},{"style":223},[6767],{"type":69,"value":768},{"type":64,"tag":200,"props":6769,"children":6770},{"class":202,"line":408},[6771,6776,6780,6784],{"type":64,"tag":200,"props":6772,"children":6773},{"style":431},[6774],{"type":69,"value":6775},"  structuralSharing",{"type":64,"tag":200,"props":6777,"children":6778},{"style":223},[6779],{"type":69,"value":439},{"type":64,"tag":200,"props":6781,"children":6782},{"style":3025},[6783],{"type":69,"value":6583},{"type":64,"tag":200,"props":6785,"children":6786},{"style":223},[6787],{"type":69,"value":768},{"type":64,"tag":200,"props":6789,"children":6790},{"class":202,"line":427},[6791,6795],{"type":64,"tag":200,"props":6792,"children":6793},{"style":223},[6794],{"type":69,"value":351},{"type":64,"tag":200,"props":6796,"children":6797},{"style":229},[6798],{"type":69,"value":356},{"type":64,"tag":72,"props":6800,"children":6801},{},[6802,6804,6810],{"type":69,"value":6803},"Structural sharing only works with JSON-compatible data. TypeScript will error if you return class instances with ",{"type":64,"tag":100,"props":6805,"children":6807},{"className":6806},[],[6808],{"type":69,"value":6809},"structuralSharing: true",{"type":69,"value":152},{"type":64,"tag":154,"props":6812,"children":6814},{"id":6813},"common-mistakes",[6815],{"type":69,"value":6816},"Common Mistakes",{"type":64,"tag":532,"props":6818,"children":6820},{"id":6819},"_1-critical-adding-type-annotations-or-casts-to-inferred-values",[6821],{"type":69,"value":6822},"1. CRITICAL: Adding type annotations or casts to inferred values",{"type":64,"tag":189,"props":6824,"children":6826},{"className":191,"code":6825,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG — casting masks real type errors\nconst search = useSearch({ from: '\u002Fposts' }) as { page: number }\n\n\u002F\u002F WRONG — unnecessary annotation\nconst params: { postId: string } = useParams({ from: '\u002Fposts\u002F$postId' })\n\n\u002F\u002F WRONG — generic param on hook\nconst data = useLoaderData\u003C{ posts: Post[] }>({ from: '\u002Fposts' })\n\n\u002F\u002F CORRECT — let inference work\nconst search = useSearch({ from: '\u002Fposts' })\nconst params = useParams({ from: '\u002Fposts\u002F$postId' })\nconst data = useLoaderData({ from: '\u002Fposts' })\n",[6827],{"type":64,"tag":100,"props":6828,"children":6829},{"__ignoreMap":194},[6830,6838,6918,6925,6933,7012,7019,7027,7113,7120,7128,7183,7239],{"type":64,"tag":200,"props":6831,"children":6832},{"class":202,"line":203},[6833],{"type":64,"tag":200,"props":6834,"children":6835},{"style":207},[6836],{"type":69,"value":6837},"\u002F\u002F WRONG — casting masks real type errors\n",{"type":64,"tag":200,"props":6839,"children":6840},{"class":202,"line":213},[6841,6845,6850,6854,6858,6862,6866,6870,6874,6878,6882,6886,6890,6894,6898,6902,6906,6910,6914],{"type":64,"tag":200,"props":6842,"children":6843},{"style":313},[6844],{"type":69,"value":316},{"type":64,"tag":200,"props":6846,"children":6847},{"style":229},[6848],{"type":69,"value":6849}," search ",{"type":64,"tag":200,"props":6851,"children":6852},{"style":223},[6853],{"type":69,"value":326},{"type":64,"tag":200,"props":6855,"children":6856},{"style":329},[6857],{"type":69,"value":2230},{"type":64,"tag":200,"props":6859,"children":6860},{"style":229},[6861],{"type":69,"value":336},{"type":64,"tag":200,"props":6863,"children":6864},{"style":223},[6865],{"type":69,"value":341},{"type":64,"tag":200,"props":6867,"children":6868},{"style":431},[6869],{"type":69,"value":242},{"type":64,"tag":200,"props":6871,"children":6872},{"style":223},[6873],{"type":69,"value":439},{"type":64,"tag":200,"props":6875,"children":6876},{"style":223},[6877],{"type":69,"value":247},{"type":64,"tag":200,"props":6879,"children":6880},{"style":250},[6881],{"type":69,"value":3236},{"type":64,"tag":200,"props":6883,"children":6884},{"style":223},[6885],{"type":69,"value":400},{"type":64,"tag":200,"props":6887,"children":6888},{"style":223},[6889],{"type":69,"value":237},{"type":64,"tag":200,"props":6891,"children":6892},{"style":229},[6893],{"type":69,"value":1804},{"type":64,"tag":200,"props":6895,"children":6896},{"style":217},[6897],{"type":69,"value":4700},{"type":64,"tag":200,"props":6899,"children":6900},{"style":223},[6901],{"type":69,"value":226},{"type":64,"tag":200,"props":6903,"children":6904},{"style":431},[6905],{"type":69,"value":1060},{"type":64,"tag":200,"props":6907,"children":6908},{"style":223},[6909],{"type":69,"value":439},{"type":64,"tag":200,"props":6911,"children":6912},{"style":417},[6913],{"type":69,"value":5760},{"type":64,"tag":200,"props":6915,"children":6916},{"style":223},[6917],{"type":69,"value":903},{"type":64,"tag":200,"props":6919,"children":6920},{"class":202,"line":261},[6921],{"type":64,"tag":200,"props":6922,"children":6923},{"emptyLinePlaceholder":303},[6924],{"type":69,"value":306},{"type":64,"tag":200,"props":6926,"children":6927},{"class":202,"line":299},[6928],{"type":64,"tag":200,"props":6929,"children":6930},{"style":207},[6931],{"type":69,"value":6932},"\u002F\u002F WRONG — unnecessary annotation\n",{"type":64,"tag":200,"props":6934,"children":6935},{"class":202,"line":309},[6936,6940,6944,6948,6952,6956,6960,6964,6968,6972,6976,6980,6984,6988,6992,6996,7000,7004,7008],{"type":64,"tag":200,"props":6937,"children":6938},{"style":313},[6939],{"type":69,"value":316},{"type":64,"tag":200,"props":6941,"children":6942},{"style":229},[6943],{"type":69,"value":811},{"type":64,"tag":200,"props":6945,"children":6946},{"style":223},[6947],{"type":69,"value":439},{"type":64,"tag":200,"props":6949,"children":6950},{"style":223},[6951],{"type":69,"value":226},{"type":64,"tag":200,"props":6953,"children":6954},{"style":431},[6955],{"type":69,"value":1000},{"type":64,"tag":200,"props":6957,"children":6958},{"style":223},[6959],{"type":69,"value":439},{"type":64,"tag":200,"props":6961,"children":6962},{"style":417},[6963],{"type":69,"value":1434},{"type":64,"tag":200,"props":6965,"children":6966},{"style":223},[6967],{"type":69,"value":237},{"type":64,"tag":200,"props":6969,"children":6970},{"style":223},[6971],{"type":69,"value":850},{"type":64,"tag":200,"props":6973,"children":6974},{"style":329},[6975],{"type":69,"value":2239},{"type":64,"tag":200,"props":6977,"children":6978},{"style":229},[6979],{"type":69,"value":336},{"type":64,"tag":200,"props":6981,"children":6982},{"style":223},[6983],{"type":69,"value":341},{"type":64,"tag":200,"props":6985,"children":6986},{"style":431},[6987],{"type":69,"value":242},{"type":64,"tag":200,"props":6989,"children":6990},{"style":223},[6991],{"type":69,"value":439},{"type":64,"tag":200,"props":6993,"children":6994},{"style":223},[6995],{"type":69,"value":247},{"type":64,"tag":200,"props":6997,"children":6998},{"style":250},[6999],{"type":69,"value":633},{"type":64,"tag":200,"props":7001,"children":7002},{"style":223},[7003],{"type":69,"value":400},{"type":64,"tag":200,"props":7005,"children":7006},{"style":223},[7007],{"type":69,"value":237},{"type":64,"tag":200,"props":7009,"children":7010},{"style":229},[7011],{"type":69,"value":356},{"type":64,"tag":200,"props":7013,"children":7014},{"class":202,"line":359},[7015],{"type":64,"tag":200,"props":7016,"children":7017},{"emptyLinePlaceholder":303},[7018],{"type":69,"value":306},{"type":64,"tag":200,"props":7020,"children":7021},{"class":202,"line":367},[7022],{"type":64,"tag":200,"props":7023,"children":7024},{"style":207},[7025],{"type":69,"value":7026},"\u002F\u002F WRONG — generic param on hook\n",{"type":64,"tag":200,"props":7028,"children":7029},{"class":202,"line":376},[7030,7034,7039,7043,7048,7053,7058,7062,7067,7072,7077,7081,7085,7089,7093,7097,7101,7105,7109],{"type":64,"tag":200,"props":7031,"children":7032},{"style":313},[7033],{"type":69,"value":316},{"type":64,"tag":200,"props":7035,"children":7036},{"style":229},[7037],{"type":69,"value":7038}," data ",{"type":64,"tag":200,"props":7040,"children":7041},{"style":223},[7042],{"type":69,"value":326},{"type":64,"tag":200,"props":7044,"children":7045},{"style":329},[7046],{"type":69,"value":7047}," useLoaderData",{"type":64,"tag":200,"props":7049,"children":7050},{"style":223},[7051],{"type":69,"value":7052},"\u003C{",{"type":64,"tag":200,"props":7054,"children":7055},{"style":431},[7056],{"type":69,"value":7057}," posts",{"type":64,"tag":200,"props":7059,"children":7060},{"style":223},[7061],{"type":69,"value":439},{"type":64,"tag":200,"props":7063,"children":7064},{"style":417},[7065],{"type":69,"value":7066}," Post",{"type":64,"tag":200,"props":7068,"children":7069},{"style":229},[7070],{"type":69,"value":7071},"[] ",{"type":64,"tag":200,"props":7073,"children":7074},{"style":223},[7075],{"type":69,"value":7076},"}>",{"type":64,"tag":200,"props":7078,"children":7079},{"style":229},[7080],{"type":69,"value":336},{"type":64,"tag":200,"props":7082,"children":7083},{"style":223},[7084],{"type":69,"value":341},{"type":64,"tag":200,"props":7086,"children":7087},{"style":431},[7088],{"type":69,"value":242},{"type":64,"tag":200,"props":7090,"children":7091},{"style":223},[7092],{"type":69,"value":439},{"type":64,"tag":200,"props":7094,"children":7095},{"style":223},[7096],{"type":69,"value":247},{"type":64,"tag":200,"props":7098,"children":7099},{"style":250},[7100],{"type":69,"value":3236},{"type":64,"tag":200,"props":7102,"children":7103},{"style":223},[7104],{"type":69,"value":400},{"type":64,"tag":200,"props":7106,"children":7107},{"style":223},[7108],{"type":69,"value":237},{"type":64,"tag":200,"props":7110,"children":7111},{"style":229},[7112],{"type":69,"value":356},{"type":64,"tag":200,"props":7114,"children":7115},{"class":202,"line":408},[7116],{"type":64,"tag":200,"props":7117,"children":7118},{"emptyLinePlaceholder":303},[7119],{"type":69,"value":306},{"type":64,"tag":200,"props":7121,"children":7122},{"class":202,"line":427},[7123],{"type":64,"tag":200,"props":7124,"children":7125},{"style":207},[7126],{"type":69,"value":7127},"\u002F\u002F CORRECT — let inference work\n",{"type":64,"tag":200,"props":7129,"children":7130},{"class":202,"line":452},[7131,7135,7139,7143,7147,7151,7155,7159,7163,7167,7171,7175,7179],{"type":64,"tag":200,"props":7132,"children":7133},{"style":313},[7134],{"type":69,"value":316},{"type":64,"tag":200,"props":7136,"children":7137},{"style":229},[7138],{"type":69,"value":6849},{"type":64,"tag":200,"props":7140,"children":7141},{"style":223},[7142],{"type":69,"value":326},{"type":64,"tag":200,"props":7144,"children":7145},{"style":329},[7146],{"type":69,"value":2230},{"type":64,"tag":200,"props":7148,"children":7149},{"style":229},[7150],{"type":69,"value":336},{"type":64,"tag":200,"props":7152,"children":7153},{"style":223},[7154],{"type":69,"value":341},{"type":64,"tag":200,"props":7156,"children":7157},{"style":431},[7158],{"type":69,"value":242},{"type":64,"tag":200,"props":7160,"children":7161},{"style":223},[7162],{"type":69,"value":439},{"type":64,"tag":200,"props":7164,"children":7165},{"style":223},[7166],{"type":69,"value":247},{"type":64,"tag":200,"props":7168,"children":7169},{"style":250},[7170],{"type":69,"value":3236},{"type":64,"tag":200,"props":7172,"children":7173},{"style":223},[7174],{"type":69,"value":400},{"type":64,"tag":200,"props":7176,"children":7177},{"style":223},[7178],{"type":69,"value":237},{"type":64,"tag":200,"props":7180,"children":7181},{"style":229},[7182],{"type":69,"value":356},{"type":64,"tag":200,"props":7184,"children":7185},{"class":202,"line":461},[7186,7190,7195,7199,7203,7207,7211,7215,7219,7223,7227,7231,7235],{"type":64,"tag":200,"props":7187,"children":7188},{"style":313},[7189],{"type":69,"value":316},{"type":64,"tag":200,"props":7191,"children":7192},{"style":229},[7193],{"type":69,"value":7194}," params ",{"type":64,"tag":200,"props":7196,"children":7197},{"style":223},[7198],{"type":69,"value":326},{"type":64,"tag":200,"props":7200,"children":7201},{"style":329},[7202],{"type":69,"value":2239},{"type":64,"tag":200,"props":7204,"children":7205},{"style":229},[7206],{"type":69,"value":336},{"type":64,"tag":200,"props":7208,"children":7209},{"style":223},[7210],{"type":69,"value":341},{"type":64,"tag":200,"props":7212,"children":7213},{"style":431},[7214],{"type":69,"value":242},{"type":64,"tag":200,"props":7216,"children":7217},{"style":223},[7218],{"type":69,"value":439},{"type":64,"tag":200,"props":7220,"children":7221},{"style":223},[7222],{"type":69,"value":247},{"type":64,"tag":200,"props":7224,"children":7225},{"style":250},[7226],{"type":69,"value":633},{"type":64,"tag":200,"props":7228,"children":7229},{"style":223},[7230],{"type":69,"value":400},{"type":64,"tag":200,"props":7232,"children":7233},{"style":223},[7234],{"type":69,"value":237},{"type":64,"tag":200,"props":7236,"children":7237},{"style":229},[7238],{"type":69,"value":356},{"type":64,"tag":200,"props":7240,"children":7241},{"class":202,"line":470},[7242,7246,7250,7254,7258,7262,7266,7270,7274,7278,7282,7286,7290],{"type":64,"tag":200,"props":7243,"children":7244},{"style":313},[7245],{"type":69,"value":316},{"type":64,"tag":200,"props":7247,"children":7248},{"style":229},[7249],{"type":69,"value":7038},{"type":64,"tag":200,"props":7251,"children":7252},{"style":223},[7253],{"type":69,"value":326},{"type":64,"tag":200,"props":7255,"children":7256},{"style":329},[7257],{"type":69,"value":7047},{"type":64,"tag":200,"props":7259,"children":7260},{"style":229},[7261],{"type":69,"value":336},{"type":64,"tag":200,"props":7263,"children":7264},{"style":223},[7265],{"type":69,"value":341},{"type":64,"tag":200,"props":7267,"children":7268},{"style":431},[7269],{"type":69,"value":242},{"type":64,"tag":200,"props":7271,"children":7272},{"style":223},[7273],{"type":69,"value":439},{"type":64,"tag":200,"props":7275,"children":7276},{"style":223},[7277],{"type":69,"value":247},{"type":64,"tag":200,"props":7279,"children":7280},{"style":250},[7281],{"type":69,"value":3236},{"type":64,"tag":200,"props":7283,"children":7284},{"style":223},[7285],{"type":69,"value":400},{"type":64,"tag":200,"props":7287,"children":7288},{"style":223},[7289],{"type":69,"value":237},{"type":64,"tag":200,"props":7291,"children":7292},{"style":229},[7293],{"type":69,"value":356},{"type":64,"tag":532,"props":7295,"children":7297},{"id":7296},"_2-high-using-un-narrowed-linkprops-type",[7298,7300,7305],{"type":69,"value":7299},"2. HIGH: Using un-narrowed ",{"type":64,"tag":100,"props":7301,"children":7303},{"className":7302},[],[7304],{"type":69,"value":4171},{"type":69,"value":4192},{"type":64,"tag":189,"props":7307,"children":7309},{"className":191,"code":7308,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG — LinkProps is a massive union, causes severe TS slowdown\nconst myProps: LinkProps = { to: '\u002Fposts' }\n\n\u002F\u002F CORRECT — use as const satisfies for precise inference\nconst myProps = { to: '\u002Fposts' } as const satisfies LinkProps\n",[7310],{"type":64,"tag":100,"props":7311,"children":7312},{"__ignoreMap":194},[7313,7321,7373,7380,7388],{"type":64,"tag":200,"props":7314,"children":7315},{"class":202,"line":203},[7316],{"type":64,"tag":200,"props":7317,"children":7318},{"style":207},[7319],{"type":69,"value":7320},"\u002F\u002F WRONG — LinkProps is a massive union, causes severe TS slowdown\n",{"type":64,"tag":200,"props":7322,"children":7323},{"class":202,"line":213},[7324,7328,7333,7337,7341,7345,7349,7353,7357,7361,7365,7369],{"type":64,"tag":200,"props":7325,"children":7326},{"style":313},[7327],{"type":69,"value":316},{"type":64,"tag":200,"props":7329,"children":7330},{"style":229},[7331],{"type":69,"value":7332}," myProps",{"type":64,"tag":200,"props":7334,"children":7335},{"style":223},[7336],{"type":69,"value":439},{"type":64,"tag":200,"props":7338,"children":7339},{"style":417},[7340],{"type":69,"value":4201},{"type":64,"tag":200,"props":7342,"children":7343},{"style":223},[7344],{"type":69,"value":850},{"type":64,"tag":200,"props":7346,"children":7347},{"style":223},[7348],{"type":69,"value":226},{"type":64,"tag":200,"props":7350,"children":7351},{"style":431},[7352],{"type":69,"value":1826},{"type":64,"tag":200,"props":7354,"children":7355},{"style":223},[7356],{"type":69,"value":439},{"type":64,"tag":200,"props":7358,"children":7359},{"style":223},[7360],{"type":69,"value":247},{"type":64,"tag":200,"props":7362,"children":7363},{"style":250},[7364],{"type":69,"value":3236},{"type":64,"tag":200,"props":7366,"children":7367},{"style":223},[7368],{"type":69,"value":400},{"type":64,"tag":200,"props":7370,"children":7371},{"style":223},[7372],{"type":69,"value":903},{"type":64,"tag":200,"props":7374,"children":7375},{"class":202,"line":261},[7376],{"type":64,"tag":200,"props":7377,"children":7378},{"emptyLinePlaceholder":303},[7379],{"type":69,"value":306},{"type":64,"tag":200,"props":7381,"children":7382},{"class":202,"line":299},[7383],{"type":64,"tag":200,"props":7384,"children":7385},{"style":207},[7386],{"type":69,"value":7387},"\u002F\u002F CORRECT — use as const satisfies for precise inference\n",{"type":64,"tag":200,"props":7389,"children":7390},{"class":202,"line":309},[7391,7395,7400,7404,7408,7412,7416,7420,7424,7428,7432,7436,7440,7444],{"type":64,"tag":200,"props":7392,"children":7393},{"style":313},[7394],{"type":69,"value":316},{"type":64,"tag":200,"props":7396,"children":7397},{"style":229},[7398],{"type":69,"value":7399}," myProps ",{"type":64,"tag":200,"props":7401,"children":7402},{"style":223},[7403],{"type":69,"value":326},{"type":64,"tag":200,"props":7405,"children":7406},{"style":223},[7407],{"type":69,"value":226},{"type":64,"tag":200,"props":7409,"children":7410},{"style":431},[7411],{"type":69,"value":1826},{"type":64,"tag":200,"props":7413,"children":7414},{"style":223},[7415],{"type":69,"value":439},{"type":64,"tag":200,"props":7417,"children":7418},{"style":223},[7419],{"type":69,"value":247},{"type":64,"tag":200,"props":7421,"children":7422},{"style":250},[7423],{"type":69,"value":3236},{"type":64,"tag":200,"props":7425,"children":7426},{"style":223},[7427],{"type":69,"value":400},{"type":64,"tag":200,"props":7429,"children":7430},{"style":223},[7431],{"type":69,"value":237},{"type":64,"tag":200,"props":7433,"children":7434},{"style":217},[7435],{"type":69,"value":4361},{"type":64,"tag":200,"props":7437,"children":7438},{"style":417},[7439],{"type":69,"value":607},{"type":64,"tag":200,"props":7441,"children":7442},{"style":217},[7443],{"type":69,"value":4370},{"type":64,"tag":200,"props":7445,"children":7446},{"style":417},[7447],{"type":69,"value":4375},{"type":64,"tag":532,"props":7449,"children":7451},{"id":7450},"_3-high-not-narrowing-linkusenavigate-with-from",[7452,7454,7459,7460,7465,7467],{"type":69,"value":7453},"3. HIGH: Not narrowing ",{"type":64,"tag":100,"props":7455,"children":7457},{"className":7456},[],[7458],{"type":69,"value":170},{"type":69,"value":6321},{"type":64,"tag":100,"props":7461,"children":7463},{"className":7462},[],[7464],{"type":69,"value":178},{"type":69,"value":7466}," with ",{"type":64,"tag":100,"props":7468,"children":7470},{"className":7469},[],[7471],{"type":69,"value":2189},{"type":64,"tag":189,"props":7473,"children":7475},{"className":191,"code":7474,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG — search is a union of ALL routes, TS check grows with route count\n\u003CLink to=\"..\" search={{ page: 0 }} \u002F>\n\n\u002F\u002F CORRECT — narrowed, fast check\n\u003CLink from={Route.fullPath} to=\"..\" search={{ page: 0 }} \u002F>\n",[7476],{"type":64,"tag":100,"props":7477,"children":7478},{"__ignoreMap":194},[7479,7487,7542,7549,7557],{"type":64,"tag":200,"props":7480,"children":7481},{"class":202,"line":203},[7482],{"type":64,"tag":200,"props":7483,"children":7484},{"style":207},[7485],{"type":69,"value":7486},"\u002F\u002F WRONG — search is a union of ALL routes, TS check grows with route count\n",{"type":64,"tag":200,"props":7488,"children":7489},{"class":202,"line":213},[7490,7494,7498,7502,7506,7510,7514,7518,7522,7526,7530,7534,7538],{"type":64,"tag":200,"props":7491,"children":7492},{"style":223},[7493],{"type":69,"value":683},{"type":64,"tag":200,"props":7495,"children":7496},{"style":417},[7497],{"type":69,"value":170},{"type":64,"tag":200,"props":7499,"children":7500},{"style":313},[7501],{"type":69,"value":1826},{"type":64,"tag":200,"props":7503,"children":7504},{"style":223},[7505],{"type":69,"value":326},{"type":64,"tag":200,"props":7507,"children":7508},{"style":223},[7509],{"type":69,"value":2654},{"type":64,"tag":200,"props":7511,"children":7512},{"style":250},[7513],{"type":69,"value":2659},{"type":64,"tag":200,"props":7515,"children":7516},{"style":223},[7517],{"type":69,"value":2654},{"type":64,"tag":200,"props":7519,"children":7520},{"style":313},[7521],{"type":69,"value":2315},{"type":64,"tag":200,"props":7523,"children":7524},{"style":223},[7525],{"type":69,"value":2672},{"type":64,"tag":200,"props":7527,"children":7528},{"style":431},[7529],{"type":69,"value":1060},{"type":64,"tag":200,"props":7531,"children":7532},{"style":223},[7533],{"type":69,"value":439},{"type":64,"tag":200,"props":7535,"children":7536},{"style":755},[7537],{"type":69,"value":2685},{"type":64,"tag":200,"props":7539,"children":7540},{"style":223},[7541],{"type":69,"value":2690},{"type":64,"tag":200,"props":7543,"children":7544},{"class":202,"line":261},[7545],{"type":64,"tag":200,"props":7546,"children":7547},{"emptyLinePlaceholder":303},[7548],{"type":69,"value":306},{"type":64,"tag":200,"props":7550,"children":7551},{"class":202,"line":299},[7552],{"type":64,"tag":200,"props":7553,"children":7554},{"style":207},[7555],{"type":69,"value":7556},"\u002F\u002F CORRECT — narrowed, fast check\n",{"type":64,"tag":200,"props":7558,"children":7559},{"class":202,"line":309},[7560,7564,7568,7572,7576,7580,7584,7588,7592,7596,7600,7604,7608,7612,7616,7620,7624,7628,7632],{"type":64,"tag":200,"props":7561,"children":7562},{"style":223},[7563],{"type":69,"value":683},{"type":64,"tag":200,"props":7565,"children":7566},{"style":417},[7567],{"type":69,"value":170},{"type":64,"tag":200,"props":7569,"children":7570},{"style":313},[7571],{"type":69,"value":242},{"type":64,"tag":200,"props":7573,"children":7574},{"style":223},[7575],{"type":69,"value":2815},{"type":64,"tag":200,"props":7577,"children":7578},{"style":229},[7579],{"type":69,"value":2820},{"type":64,"tag":200,"props":7581,"children":7582},{"style":223},[7583],{"type":69,"value":152},{"type":64,"tag":200,"props":7585,"children":7586},{"style":229},[7587],{"type":69,"value":2829},{"type":64,"tag":200,"props":7589,"children":7590},{"style":223},[7591],{"type":69,"value":2834},{"type":64,"tag":200,"props":7593,"children":7594},{"style":313},[7595],{"type":69,"value":2839},{"type":64,"tag":200,"props":7597,"children":7598},{"style":223},[7599],{"type":69,"value":326},{"type":64,"tag":200,"props":7601,"children":7602},{"style":223},[7603],{"type":69,"value":2654},{"type":64,"tag":200,"props":7605,"children":7606},{"style":250},[7607],{"type":69,"value":2659},{"type":64,"tag":200,"props":7609,"children":7610},{"style":223},[7611],{"type":69,"value":2654},{"type":64,"tag":200,"props":7613,"children":7614},{"style":313},[7615],{"type":69,"value":2315},{"type":64,"tag":200,"props":7617,"children":7618},{"style":223},[7619],{"type":69,"value":2672},{"type":64,"tag":200,"props":7621,"children":7622},{"style":431},[7623],{"type":69,"value":1060},{"type":64,"tag":200,"props":7625,"children":7626},{"style":223},[7627],{"type":69,"value":439},{"type":64,"tag":200,"props":7629,"children":7630},{"style":755},[7631],{"type":69,"value":2685},{"type":64,"tag":200,"props":7633,"children":7634},{"style":223},[7635],{"type":69,"value":2690},{"type":64,"tag":532,"props":7637,"children":7639},{"id":7638},"_4-critical-cross-skill-missing-router-type-registration",[7640],{"type":69,"value":7641},"4. CRITICAL (cross-skill): Missing router type registration",{"type":64,"tag":189,"props":7643,"children":7645},{"className":191,"code":7644,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG — Link\u002FuseNavigate have no autocomplete, all paths are untyped strings\nconst router = createRouter({ routeTree })\n\u002F\u002F (no declare module)\n\n\u002F\u002F CORRECT — always register\nconst router = createRouter({ routeTree })\ndeclare module '@tanstack\u002Freact-router' {\n  interface Register {\n    router: typeof router\n  }\n}\n",[7646],{"type":64,"tag":100,"props":7647,"children":7648},{"__ignoreMap":194},[7649,7657,7696,7704,7711,7719,7758,7785,7800,7819,7826],{"type":64,"tag":200,"props":7650,"children":7651},{"class":202,"line":203},[7652],{"type":64,"tag":200,"props":7653,"children":7654},{"style":207},[7655],{"type":69,"value":7656},"\u002F\u002F WRONG — Link\u002FuseNavigate have no autocomplete, all paths are untyped strings\n",{"type":64,"tag":200,"props":7658,"children":7659},{"class":202,"line":213},[7660,7664,7668,7672,7676,7680,7684,7688,7692],{"type":64,"tag":200,"props":7661,"children":7662},{"style":313},[7663],{"type":69,"value":316},{"type":64,"tag":200,"props":7665,"children":7666},{"style":229},[7667],{"type":69,"value":321},{"type":64,"tag":200,"props":7669,"children":7670},{"style":223},[7671],{"type":69,"value":326},{"type":64,"tag":200,"props":7673,"children":7674},{"style":329},[7675],{"type":69,"value":232},{"type":64,"tag":200,"props":7677,"children":7678},{"style":229},[7679],{"type":69,"value":336},{"type":64,"tag":200,"props":7681,"children":7682},{"style":223},[7683],{"type":69,"value":341},{"type":64,"tag":200,"props":7685,"children":7686},{"style":229},[7687],{"type":69,"value":346},{"type":64,"tag":200,"props":7689,"children":7690},{"style":223},[7691],{"type":69,"value":351},{"type":64,"tag":200,"props":7693,"children":7694},{"style":229},[7695],{"type":69,"value":356},{"type":64,"tag":200,"props":7697,"children":7698},{"class":202,"line":261},[7699],{"type":64,"tag":200,"props":7700,"children":7701},{"style":207},[7702],{"type":69,"value":7703},"\u002F\u002F (no declare module)\n",{"type":64,"tag":200,"props":7705,"children":7706},{"class":202,"line":299},[7707],{"type":64,"tag":200,"props":7708,"children":7709},{"emptyLinePlaceholder":303},[7710],{"type":69,"value":306},{"type":64,"tag":200,"props":7712,"children":7713},{"class":202,"line":309},[7714],{"type":64,"tag":200,"props":7715,"children":7716},{"style":207},[7717],{"type":69,"value":7718},"\u002F\u002F CORRECT — always register\n",{"type":64,"tag":200,"props":7720,"children":7721},{"class":202,"line":359},[7722,7726,7730,7734,7738,7742,7746,7750,7754],{"type":64,"tag":200,"props":7723,"children":7724},{"style":313},[7725],{"type":69,"value":316},{"type":64,"tag":200,"props":7727,"children":7728},{"style":229},[7729],{"type":69,"value":321},{"type":64,"tag":200,"props":7731,"children":7732},{"style":223},[7733],{"type":69,"value":326},{"type":64,"tag":200,"props":7735,"children":7736},{"style":329},[7737],{"type":69,"value":232},{"type":64,"tag":200,"props":7739,"children":7740},{"style":229},[7741],{"type":69,"value":336},{"type":64,"tag":200,"props":7743,"children":7744},{"style":223},[7745],{"type":69,"value":341},{"type":64,"tag":200,"props":7747,"children":7748},{"style":229},[7749],{"type":69,"value":346},{"type":64,"tag":200,"props":7751,"children":7752},{"style":223},[7753],{"type":69,"value":351},{"type":64,"tag":200,"props":7755,"children":7756},{"style":229},[7757],{"type":69,"value":356},{"type":64,"tag":200,"props":7759,"children":7760},{"class":202,"line":367},[7761,7765,7769,7773,7777,7781],{"type":64,"tag":200,"props":7762,"children":7763},{"style":313},[7764],{"type":69,"value":382},{"type":64,"tag":200,"props":7766,"children":7767},{"style":313},[7768],{"type":69,"value":387},{"type":64,"tag":200,"props":7770,"children":7771},{"style":223},[7772],{"type":69,"value":247},{"type":64,"tag":200,"props":7774,"children":7775},{"style":250},[7776],{"type":69,"value":253},{"type":64,"tag":200,"props":7778,"children":7779},{"style":223},[7780],{"type":69,"value":400},{"type":64,"tag":200,"props":7782,"children":7783},{"style":223},[7784],{"type":69,"value":405},{"type":64,"tag":200,"props":7786,"children":7787},{"class":202,"line":376},[7788,7792,7796],{"type":64,"tag":200,"props":7789,"children":7790},{"style":313},[7791],{"type":69,"value":414},{"type":64,"tag":200,"props":7793,"children":7794},{"style":417},[7795],{"type":69,"value":420},{"type":64,"tag":200,"props":7797,"children":7798},{"style":223},[7799],{"type":69,"value":405},{"type":64,"tag":200,"props":7801,"children":7802},{"class":202,"line":408},[7803,7807,7811,7815],{"type":64,"tag":200,"props":7804,"children":7805},{"style":431},[7806],{"type":69,"value":434},{"type":64,"tag":200,"props":7808,"children":7809},{"style":223},[7810],{"type":69,"value":439},{"type":64,"tag":200,"props":7812,"children":7813},{"style":223},[7814],{"type":69,"value":444},{"type":64,"tag":200,"props":7816,"children":7817},{"style":229},[7818],{"type":69,"value":449},{"type":64,"tag":200,"props":7820,"children":7821},{"class":202,"line":427},[7822],{"type":64,"tag":200,"props":7823,"children":7824},{"style":223},[7825],{"type":69,"value":458},{"type":64,"tag":200,"props":7827,"children":7828},{"class":202,"line":452},[7829],{"type":64,"tag":200,"props":7830,"children":7831},{"style":223},[7832],{"type":69,"value":467},{"type":64,"tag":532,"props":7834,"children":7836},{"id":7835},"_5-critical-cross-skill-wrong-framework-imports-and-file-structure",[7837],{"type":69,"value":7838},"5. CRITICAL (cross-skill): Wrong-framework imports and file structure",{"type":64,"tag":72,"props":7840,"children":7841},{},[7842,7844,7849],{"type":69,"value":7843},"Wrong-framework code looks plausible (it's React) but breaks the build or produces conflicting ",{"type":64,"tag":100,"props":7845,"children":7847},{"className":7846},[],[7848],{"type":69,"value":6321},{"type":69,"value":7850}," routes at runtime.",{"type":64,"tag":189,"props":7852,"children":7854},{"className":191,"code":7853,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG — react-router-dom and next\u002F* are different libraries\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom'\nimport Link from 'next\u002Flink'\nimport { useRouter, useParams } from 'next\u002Fnavigation'\n\n\u002F\u002F CORRECT — all routing exports come from @tanstack\u002Freact-router\nimport {\n  Link,\n  Outlet,\n  useNavigate,\n  useRouter,\n  useLocation,\n  useParams,\n  redirect,\n} from '@tanstack\u002Freact-router'\n",[7855],{"type":64,"tag":100,"props":7856,"children":7857},{"__ignoreMap":194},[7858,7866,7918,7947,7992,7999,8007,8018,8029,8041,8052,8064,8076,8088,8100],{"type":64,"tag":200,"props":7859,"children":7860},{"class":202,"line":203},[7861],{"type":64,"tag":200,"props":7862,"children":7863},{"style":207},[7864],{"type":69,"value":7865},"\u002F\u002F WRONG — react-router-dom and next\u002F* are different libraries\n",{"type":64,"tag":200,"props":7867,"children":7868},{"class":202,"line":213},[7869,7873,7877,7881,7885,7889,7893,7898,7902,7906,7910,7914],{"type":64,"tag":200,"props":7870,"children":7871},{"style":217},[7872],{"type":69,"value":220},{"type":64,"tag":200,"props":7874,"children":7875},{"style":223},[7876],{"type":69,"value":226},{"type":64,"tag":200,"props":7878,"children":7879},{"style":229},[7880],{"type":69,"value":2595},{"type":64,"tag":200,"props":7882,"children":7883},{"style":223},[7884],{"type":69,"value":693},{"type":64,"tag":200,"props":7886,"children":7887},{"style":229},[7888],{"type":69,"value":2248},{"type":64,"tag":200,"props":7890,"children":7891},{"style":223},[7892],{"type":69,"value":693},{"type":64,"tag":200,"props":7894,"children":7895},{"style":229},[7896],{"type":69,"value":7897}," useSearchParams",{"type":64,"tag":200,"props":7899,"children":7900},{"style":223},[7901],{"type":69,"value":237},{"type":64,"tag":200,"props":7903,"children":7904},{"style":217},[7905],{"type":69,"value":242},{"type":64,"tag":200,"props":7907,"children":7908},{"style":223},[7909],{"type":69,"value":247},{"type":64,"tag":200,"props":7911,"children":7912},{"style":250},[7913],{"type":69,"value":150},{"type":64,"tag":200,"props":7915,"children":7916},{"style":223},[7917],{"type":69,"value":258},{"type":64,"tag":200,"props":7919,"children":7920},{"class":202,"line":261},[7921,7925,7930,7934,7938,7943],{"type":64,"tag":200,"props":7922,"children":7923},{"style":217},[7924],{"type":69,"value":220},{"type":64,"tag":200,"props":7926,"children":7927},{"style":229},[7928],{"type":69,"value":7929}," Link ",{"type":64,"tag":200,"props":7931,"children":7932},{"style":217},[7933],{"type":69,"value":2189},{"type":64,"tag":200,"props":7935,"children":7936},{"style":223},[7937],{"type":69,"value":247},{"type":64,"tag":200,"props":7939,"children":7940},{"style":250},[7941],{"type":69,"value":7942},"next\u002Flink",{"type":64,"tag":200,"props":7944,"children":7945},{"style":223},[7946],{"type":69,"value":258},{"type":64,"tag":200,"props":7948,"children":7949},{"class":202,"line":299},[7950,7954,7958,7963,7967,7971,7975,7979,7983,7988],{"type":64,"tag":200,"props":7951,"children":7952},{"style":217},[7953],{"type":69,"value":220},{"type":64,"tag":200,"props":7955,"children":7956},{"style":223},[7957],{"type":69,"value":226},{"type":64,"tag":200,"props":7959,"children":7960},{"style":229},[7961],{"type":69,"value":7962}," useRouter",{"type":64,"tag":200,"props":7964,"children":7965},{"style":223},[7966],{"type":69,"value":693},{"type":64,"tag":200,"props":7968,"children":7969},{"style":229},[7970],{"type":69,"value":2239},{"type":64,"tag":200,"props":7972,"children":7973},{"style":223},[7974],{"type":69,"value":237},{"type":64,"tag":200,"props":7976,"children":7977},{"style":217},[7978],{"type":69,"value":242},{"type":64,"tag":200,"props":7980,"children":7981},{"style":223},[7982],{"type":69,"value":247},{"type":64,"tag":200,"props":7984,"children":7985},{"style":250},[7986],{"type":69,"value":7987},"next\u002Fnavigation",{"type":64,"tag":200,"props":7989,"children":7990},{"style":223},[7991],{"type":69,"value":258},{"type":64,"tag":200,"props":7993,"children":7994},{"class":202,"line":309},[7995],{"type":64,"tag":200,"props":7996,"children":7997},{"emptyLinePlaceholder":303},[7998],{"type":69,"value":306},{"type":64,"tag":200,"props":8000,"children":8001},{"class":202,"line":359},[8002],{"type":64,"tag":200,"props":8003,"children":8004},{"style":207},[8005],{"type":69,"value":8006},"\u002F\u002F CORRECT — all routing exports come from @tanstack\u002Freact-router\n",{"type":64,"tag":200,"props":8008,"children":8009},{"class":202,"line":367},[8010,8014],{"type":64,"tag":200,"props":8011,"children":8012},{"style":217},[8013],{"type":69,"value":220},{"type":64,"tag":200,"props":8015,"children":8016},{"style":223},[8017],{"type":69,"value":405},{"type":64,"tag":200,"props":8019,"children":8020},{"class":202,"line":376},[8021,8025],{"type":64,"tag":200,"props":8022,"children":8023},{"style":229},[8024],{"type":69,"value":4828},{"type":64,"tag":200,"props":8026,"children":8027},{"style":223},[8028],{"type":69,"value":768},{"type":64,"tag":200,"props":8030,"children":8031},{"class":202,"line":408},[8032,8037],{"type":64,"tag":200,"props":8033,"children":8034},{"style":229},[8035],{"type":69,"value":8036},"  Outlet",{"type":64,"tag":200,"props":8038,"children":8039},{"style":223},[8040],{"type":69,"value":768},{"type":64,"tag":200,"props":8042,"children":8043},{"class":202,"line":427},[8044,8048],{"type":64,"tag":200,"props":8045,"children":8046},{"style":229},[8047],{"type":69,"value":5569},{"type":64,"tag":200,"props":8049,"children":8050},{"style":223},[8051],{"type":69,"value":768},{"type":64,"tag":200,"props":8053,"children":8054},{"class":202,"line":452},[8055,8060],{"type":64,"tag":200,"props":8056,"children":8057},{"style":229},[8058],{"type":69,"value":8059},"  useRouter",{"type":64,"tag":200,"props":8061,"children":8062},{"style":223},[8063],{"type":69,"value":768},{"type":64,"tag":200,"props":8065,"children":8066},{"class":202,"line":461},[8067,8072],{"type":64,"tag":200,"props":8068,"children":8069},{"style":229},[8070],{"type":69,"value":8071},"  useLocation",{"type":64,"tag":200,"props":8073,"children":8074},{"style":223},[8075],{"type":69,"value":768},{"type":64,"tag":200,"props":8077,"children":8078},{"class":202,"line":470},[8079,8084],{"type":64,"tag":200,"props":8080,"children":8081},{"style":229},[8082],{"type":69,"value":8083},"  useParams",{"type":64,"tag":200,"props":8085,"children":8086},{"style":223},[8087],{"type":69,"value":768},{"type":64,"tag":200,"props":8089,"children":8090},{"class":202,"line":478},[8091,8096],{"type":64,"tag":200,"props":8092,"children":8093},{"style":229},[8094],{"type":69,"value":8095},"  redirect",{"type":64,"tag":200,"props":8097,"children":8098},{"style":223},[8099],{"type":69,"value":768},{"type":64,"tag":200,"props":8101,"children":8102},{"class":202,"line":946},[8103,8107,8111,8115,8119],{"type":64,"tag":200,"props":8104,"children":8105},{"style":223},[8106],{"type":69,"value":351},{"type":64,"tag":200,"props":8108,"children":8109},{"style":217},[8110],{"type":69,"value":242},{"type":64,"tag":200,"props":8112,"children":8113},{"style":223},[8114],{"type":69,"value":247},{"type":64,"tag":200,"props":8116,"children":8117},{"style":250},[8118],{"type":69,"value":253},{"type":64,"tag":200,"props":8120,"children":8121},{"style":223},[8122],{"type":69,"value":258},{"type":64,"tag":189,"props":8124,"children":8126},{"className":191,"code":8125,"language":193,"meta":194,"style":194},"\u002F\u002F WRONG file structures + APIs:\n\u002F\u002F   src\u002Fpages\u002F*.tsx with getServerSideProps \u002F getStaticProps  (Next.js Pages Router)\n\u002F\u002F   app\u002Flayout.tsx + app\u002Fpage.tsx                              (Next.js App Router)\n\u002F\u002F   _app\u002Findex.tsx, pages\u002F_app.tsx, pages\u002F_document.tsx        (Next.js custom App)\n\u002F\u002F   loader\u002Faction exports                                       (Remix)\n\n\u002F\u002F CORRECT — TanStack file-based routing at src\u002Froutes\u002F*.tsx\nexport const Route = createFileRoute('\u002Fposts')({\n  loader: async () => { ... },\n  validateSearch: zodValidator(schema),\n  component: PostsComponent,\n})\nconst search = Route.useSearch()\n",[8127],{"type":64,"tag":100,"props":8128,"children":8129},{"__ignoreMap":194},[8130,8138,8146,8154,8162,8170,8177,8185,8232,8268,8293,8312,8323],{"type":64,"tag":200,"props":8131,"children":8132},{"class":202,"line":203},[8133],{"type":64,"tag":200,"props":8134,"children":8135},{"style":207},[8136],{"type":69,"value":8137},"\u002F\u002F WRONG file structures + APIs:\n",{"type":64,"tag":200,"props":8139,"children":8140},{"class":202,"line":213},[8141],{"type":64,"tag":200,"props":8142,"children":8143},{"style":207},[8144],{"type":69,"value":8145},"\u002F\u002F   src\u002Fpages\u002F*.tsx with getServerSideProps \u002F getStaticProps  (Next.js Pages Router)\n",{"type":64,"tag":200,"props":8147,"children":8148},{"class":202,"line":261},[8149],{"type":64,"tag":200,"props":8150,"children":8151},{"style":207},[8152],{"type":69,"value":8153},"\u002F\u002F   app\u002Flayout.tsx + app\u002Fpage.tsx                              (Next.js App Router)\n",{"type":64,"tag":200,"props":8155,"children":8156},{"class":202,"line":299},[8157],{"type":64,"tag":200,"props":8158,"children":8159},{"style":207},[8160],{"type":69,"value":8161},"\u002F\u002F   _app\u002Findex.tsx, pages\u002F_app.tsx, pages\u002F_document.tsx        (Next.js custom App)\n",{"type":64,"tag":200,"props":8163,"children":8164},{"class":202,"line":309},[8165],{"type":64,"tag":200,"props":8166,"children":8167},{"style":207},[8168],{"type":69,"value":8169},"\u002F\u002F   loader\u002Faction exports                                       (Remix)\n",{"type":64,"tag":200,"props":8171,"children":8172},{"class":202,"line":359},[8173],{"type":64,"tag":200,"props":8174,"children":8175},{"emptyLinePlaceholder":303},[8176],{"type":69,"value":306},{"type":64,"tag":200,"props":8178,"children":8179},{"class":202,"line":367},[8180],{"type":64,"tag":200,"props":8181,"children":8182},{"style":207},[8183],{"type":69,"value":8184},"\u002F\u002F CORRECT — TanStack file-based routing at src\u002Froutes\u002F*.tsx\n",{"type":64,"tag":200,"props":8186,"children":8187},{"class":202,"line":376},[8188,8192,8196,8200,8204,8208,8212,8216,8220,8224,8228],{"type":64,"tag":200,"props":8189,"children":8190},{"style":217},[8191],{"type":69,"value":484},{"type":64,"tag":200,"props":8193,"children":8194},{"style":313},[8195],{"type":69,"value":607},{"type":64,"tag":200,"props":8197,"children":8198},{"style":229},[8199],{"type":69,"value":612},{"type":64,"tag":200,"props":8201,"children":8202},{"style":223},[8203],{"type":69,"value":326},{"type":64,"tag":200,"props":8205,"children":8206},{"style":329},[8207],{"type":69,"value":568},{"type":64,"tag":200,"props":8209,"children":8210},{"style":229},[8211],{"type":69,"value":336},{"type":64,"tag":200,"props":8213,"children":8214},{"style":223},[8215],{"type":69,"value":400},{"type":64,"tag":200,"props":8217,"children":8218},{"style":250},[8219],{"type":69,"value":3236},{"type":64,"tag":200,"props":8221,"children":8222},{"style":223},[8223],{"type":69,"value":400},{"type":64,"tag":200,"props":8225,"children":8226},{"style":229},[8227],{"type":69,"value":642},{"type":64,"tag":200,"props":8229,"children":8230},{"style":223},[8231],{"type":69,"value":647},{"type":64,"tag":200,"props":8233,"children":8234},{"class":202,"line":408},[8235,8239,8243,8247,8251,8255,8259,8264],{"type":64,"tag":200,"props":8236,"children":8237},{"style":329},[8238],{"type":69,"value":792},{"type":64,"tag":200,"props":8240,"children":8241},{"style":223},[8242],{"type":69,"value":439},{"type":64,"tag":200,"props":8244,"children":8245},{"style":313},[8246],{"type":69,"value":801},{"type":64,"tag":200,"props":8248,"children":8249},{"style":223},[8250],{"type":69,"value":1575},{"type":64,"tag":200,"props":8252,"children":8253},{"style":313},[8254],{"type":69,"value":708},{"type":64,"tag":200,"props":8256,"children":8257},{"style":223},[8258],{"type":69,"value":226},{"type":64,"tag":200,"props":8260,"children":8261},{"style":223},[8262],{"type":69,"value":8263}," ...",{"type":64,"tag":200,"props":8265,"children":8266},{"style":223},[8267],{"type":69,"value":4615},{"type":64,"tag":200,"props":8269,"children":8270},{"class":202,"line":427},[8271,8275,8279,8284,8289],{"type":64,"tag":200,"props":8272,"children":8273},{"style":431},[8274],{"type":69,"value":655},{"type":64,"tag":200,"props":8276,"children":8277},{"style":223},[8278],{"type":69,"value":439},{"type":64,"tag":200,"props":8280,"children":8281},{"style":329},[8282],{"type":69,"value":8283}," zodValidator",{"type":64,"tag":200,"props":8285,"children":8286},{"style":229},[8287],{"type":69,"value":8288},"(schema)",{"type":64,"tag":200,"props":8290,"children":8291},{"style":223},[8292],{"type":69,"value":768},{"type":64,"tag":200,"props":8294,"children":8295},{"class":202,"line":452},[8296,8300,8304,8308],{"type":64,"tag":200,"props":8297,"children":8298},{"style":431},[8299],{"type":69,"value":919},{"type":64,"tag":200,"props":8301,"children":8302},{"style":223},[8303],{"type":69,"value":439},{"type":64,"tag":200,"props":8305,"children":8306},{"style":229},[8307],{"type":69,"value":3314},{"type":64,"tag":200,"props":8309,"children":8310},{"style":223},[8311],{"type":69,"value":768},{"type":64,"tag":200,"props":8313,"children":8314},{"class":202,"line":461},[8315,8319],{"type":64,"tag":200,"props":8316,"children":8317},{"style":223},[8318],{"type":69,"value":351},{"type":64,"tag":200,"props":8320,"children":8321},{"style":229},[8322],{"type":69,"value":356},{"type":64,"tag":200,"props":8324,"children":8325},{"class":202,"line":470},[8326,8330,8334,8338,8342,8346,8350],{"type":64,"tag":200,"props":8327,"children":8328},{"style":313},[8329],{"type":69,"value":316},{"type":64,"tag":200,"props":8331,"children":8332},{"style":229},[8333],{"type":69,"value":6849},{"type":64,"tag":200,"props":8335,"children":8336},{"style":223},[8337],{"type":69,"value":326},{"type":64,"tag":200,"props":8339,"children":8340},{"style":229},[8341],{"type":69,"value":1013},{"type":64,"tag":200,"props":8343,"children":8344},{"style":223},[8345],{"type":69,"value":152},{"type":64,"tag":200,"props":8347,"children":8348},{"style":329},[8349],{"type":69,"value":185},{"type":64,"tag":200,"props":8351,"children":8352},{"style":229},[8353],{"type":69,"value":1026},{"type":64,"tag":72,"props":8355,"children":8356},{},[8357,8359,8364,8365,8371,8372,8378,8380,8385],{"type":69,"value":8358},"If a build error mentions ",{"type":64,"tag":100,"props":8360,"children":8362},{"className":8361},[],[8363],{"type":69,"value":150},{"type":69,"value":172},{"type":64,"tag":100,"props":8366,"children":8368},{"className":8367},[],[8369],{"type":69,"value":8370},"next\u002F",{"type":69,"value":172},{"type":64,"tag":100,"props":8373,"children":8375},{"className":8374},[],[8376],{"type":69,"value":8377},"pages\u002F_app",{"type":69,"value":8379},", or duplicate ",{"type":64,"tag":100,"props":8381,"children":8383},{"className":8382},[],[8384],{"type":69,"value":6321},{"type":69,"value":8386}," routes, fix the import — don't paper over with type assertions.",{"type":64,"tag":532,"props":8388,"children":8390},{"id":8389},"_6-critical-treating-typecheck-as-proof-of-runtime-schema-propagation",[8391],{"type":69,"value":8392},"6. CRITICAL: Treating typecheck as proof of runtime schema propagation",{"type":64,"tag":72,"props":8394,"children":8395},{},[8396,8398,8404],{"type":69,"value":8397},"Types can say a field exists while a database projection, API serializer, or server function omits it. When adding or renaming a field, trace the value through storage, validation, handler output, loader data, and rendered UI. Do not cast the response to the desired type.\nAdd a runtime assertion against the real handler or serialized response, such as ",{"type":64,"tag":100,"props":8399,"children":8401},{"className":8400},[],[8402],{"type":69,"value":8403},"expect(await getOrder({ data: { id } })).toMatchObject({ totalCents: 2599 })",{"type":69,"value":8405},".\nThen run the route-level test and production build. The type test remains necessary, but it is not the runtime contract test.",{"type":64,"tag":72,"props":8407,"children":8408},{},[8409],{"type":69,"value":8410},"See also: router-core (Register setup), router-core\u002Fnavigation (from narrowing), router-core\u002Fcode-splitting (getRouteApi).",{"type":64,"tag":8412,"props":8413,"children":8414},"style",{},[8415],{"type":69,"value":8416},"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":8418,"total":1240},[8419,8435,8450,8466,8479,8498,8509],{"slug":8420,"name":8420,"fn":8421,"description":8422,"org":8423,"tags":8424,"stars":23,"repoUrl":24,"updatedAt":8434},"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},[8425,8427,8430,8432,8433],{"name":8426,"slug":1799,"type":15},"Auth",{"name":8428,"slug":8429,"type":15},"Frontend","frontend",{"name":8431,"slug":35,"type":15},"Routing",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:07.639032",{"slug":8436,"name":8436,"fn":8437,"description":8438,"org":8439,"tags":8440,"stars":23,"repoUrl":24,"updatedAt":8449},"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},[8441,8442,8445,8448],{"name":8426,"slug":1799,"type":15},{"name":8443,"slug":8444,"type":15},"OAuth","oauth",{"name":8446,"slug":8447,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":8451,"name":8451,"fn":8452,"description":8453,"org":8454,"tags":8455,"stars":23,"repoUrl":24,"updatedAt":8465},"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},[8456,8459,8460,8463,8464],{"name":8457,"slug":8458,"type":15},"Engineering","engineering",{"name":8428,"slug":8429,"type":15},{"name":8461,"slug":8462,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:11.494406",{"slug":8467,"name":8467,"fn":8468,"description":8469,"org":8470,"tags":8471,"stars":23,"repoUrl":24,"updatedAt":8478},"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},[8472,8475,8476,8477],{"name":8473,"slug":8474,"type":15},"Caching","caching",{"name":8461,"slug":8462,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:26:54.487943",{"slug":8480,"name":8480,"fn":8481,"description":8482,"org":8483,"tags":8484,"stars":23,"repoUrl":24,"updatedAt":8497},"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},[8485,8488,8490,8493,8494],{"name":8486,"slug":8487,"type":15},"Cloudflare","cloudflare",{"name":8489,"slug":8480,"type":15},"Deployment",{"name":8491,"slug":8492,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":8495,"slug":8496,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":8499,"name":8499,"fn":8500,"description":8501,"org":8502,"tags":8503,"stars":23,"repoUrl":24,"updatedAt":8508},"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},[8504,8507],{"name":8505,"slug":8506,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":8510,"name":8510,"fn":8511,"description":8512,"org":8513,"tags":8514,"stars":23,"repoUrl":24,"updatedAt":8522},"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},[8515,8518,8519,8521],{"name":8516,"slug":8517,"type":15},"Backend","backend",{"name":8428,"slug":8429,"type":15},{"name":8520,"slug":8510,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019",{"items":8524,"total":8662},[8525,8539,8551,8563,8576,8588,8598,8608,8621,8631,8642,8652],{"slug":8526,"name":8526,"fn":8527,"description":8528,"org":8529,"tags":8530,"stars":8536,"repoUrl":8537,"updatedAt":8538},"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},[8531,8534,8535],{"name":8532,"slug":8533,"type":15},"Data Analysis","data-analysis",{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":8540,"name":8540,"fn":8541,"description":8542,"org":8543,"tags":8544,"stars":8536,"repoUrl":8537,"updatedAt":8550},"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},[8545,8548,8549],{"name":8546,"slug":8547,"type":15},"Debugging","debugging",{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":8552,"name":8552,"fn":8553,"description":8554,"org":8555,"tags":8556,"stars":8536,"repoUrl":8537,"updatedAt":8562},"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},[8557,8558,8559],{"name":8532,"slug":8533,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":8564,"name":8564,"fn":8565,"description":8566,"org":8567,"tags":8568,"stars":8536,"repoUrl":8537,"updatedAt":8575},"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},[8569,8572,8573,8574],{"name":8570,"slug":8571,"type":15},"Data Pipeline","data-pipeline",{"name":8428,"slug":8429,"type":15},{"name":8461,"slug":8462,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":8577,"name":8577,"fn":8578,"description":8579,"org":8580,"tags":8581,"stars":8536,"repoUrl":8537,"updatedAt":8587},"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},[8582,8585,8586],{"name":8583,"slug":8584,"type":15},"Data Visualization","data-visualization",{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":8589,"name":8589,"fn":8590,"description":8591,"org":8592,"tags":8593,"stars":8536,"repoUrl":8537,"updatedAt":8597},"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},[8594,8595,8596],{"name":8532,"slug":8533,"type":15},{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":8599,"name":8599,"fn":8600,"description":8601,"org":8602,"tags":8603,"stars":8536,"repoUrl":8537,"updatedAt":8607},"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},[8604,8605,8606],{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:26:03.37801",{"slug":8609,"name":8609,"fn":8610,"description":8611,"org":8612,"tags":8613,"stars":8536,"repoUrl":8537,"updatedAt":8620},"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},[8614,8617,8618,8619],{"name":8615,"slug":8616,"type":15},"CSS","css",{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:25:55.377366",{"slug":8622,"name":8622,"fn":8623,"description":8624,"org":8625,"tags":8626,"stars":8536,"repoUrl":8537,"updatedAt":8630},"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},[8627,8628,8629],{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:25:51.400011",{"slug":8632,"name":8632,"fn":8633,"description":8634,"org":8635,"tags":8636,"stars":8536,"repoUrl":8537,"updatedAt":8641},"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},[8637,8638,8639,8640],{"name":8615,"slug":8616,"type":15},{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:25:48.703799",{"slug":8643,"name":8643,"fn":8644,"description":8645,"org":8646,"tags":8647,"stars":8536,"repoUrl":8537,"updatedAt":8651},"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},[8648,8649,8650],{"name":8428,"slug":8429,"type":15},{"name":9,"slug":8,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:25:47.367943",{"slug":8653,"name":8653,"fn":8654,"description":8655,"org":8656,"tags":8657,"stars":8536,"repoUrl":8537,"updatedAt":8661},"core","build data grids with TanStack Table","Use TanStack Table v9 as a headless data-grid state and row-processing engine. Load for first-table architecture, stable data and columns, row numbering with getDisplayIndex, semantic rendering, framework adapter choice, or deciding what Table owns versus the renderer.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8658,8659,8660],{"name":8532,"slug":8533,"type":15},{"name":8428,"slug":8429,"type":15},{"name":8560,"slug":8561,"type":15},"2026-07-30T05:25:52.366295",125]