diff --git a/router_docs_files.txt b/router_docs_files.txt
new file mode 100644
index 00000000000..7eaca43a889
--- /dev/null
+++ b/router_docs_files.txt
@@ -0,0 +1,200 @@
+api/file-based-routing.md
+eslint/create-route-property-order.md
+eslint/eslint-plugin-router.md
+framework/react/api/router.md
+framework/react/api/router/ActiveLinkOptionsType.md
+framework/react/api/router/AsyncRouteComponentType.md
+framework/react/api/router/FileRouteClass.md
+framework/react/api/router/LinkOptionsType.md
+framework/react/api/router/LinkPropsType.md
+framework/react/api/router/MatchRouteOptionsType.md
+framework/react/api/router/NavigateOptionsType.md
+framework/react/api/router/NotFoundErrorType.md
+framework/react/api/router/NotFoundRouteClass.md
+framework/react/api/router/ParsedHistoryStateType.md
+framework/react/api/router/ParsedLocationType.md
+framework/react/api/router/RedirectType.md
+framework/react/api/router/RegisterType.md
+framework/react/api/router/RootRouteClass.md
+framework/react/api/router/RouteApiClass.md
+framework/react/api/router/RouteApiType.md
+framework/react/api/router/RouteClass.md
+framework/react/api/router/RouteMaskType.md
+framework/react/api/router/RouteMatchType.md
+framework/react/api/router/RouteOptionsType.md
+framework/react/api/router/RouteType.md
+framework/react/api/router/RouterClass.md
+framework/react/api/router/RouterEventsType.md
+framework/react/api/router/RouterOptionsType.md
+framework/react/api/router/RouterStateType.md
+framework/react/api/router/RouterType.md
+framework/react/api/router/ToMaskOptionsType.md
+framework/react/api/router/ToOptionsType.md
+framework/react/api/router/UseMatchRouteOptionsType.md
+framework/react/api/router/ViewTransitionOptionsType.md
+framework/react/api/router/awaitComponent.md
+framework/react/api/router/catchBoundaryComponent.md
+framework/react/api/router/catchNotFoundComponent.md
+framework/react/api/router/clientOnlyComponent.md
+framework/react/api/router/createFileRouteFunction.md
+framework/react/api/router/createLazyFileRouteFunction.md
+framework/react/api/router/createLazyRouteFunction.md
+framework/react/api/router/createRootRouteFunction.md
+framework/react/api/router/createRootRouteWithContextFunction.md
+framework/react/api/router/createRouteFunction.md
+framework/react/api/router/createRouteMaskFunction.md
+framework/react/api/router/createRouterFunction.md
+framework/react/api/router/defaultGlobalNotFoundComponent.md
+framework/react/api/router/deferFunction.md
+framework/react/api/router/errorComponentComponent.md
+framework/react/api/router/getRouteApiFunction.md
+framework/react/api/router/historyStateInterface.md
+framework/react/api/router/isNotFoundFunction.md
+framework/react/api/router/isRedirectFunction.md
+framework/react/api/router/lazyRouteComponentFunction.md
+framework/react/api/router/linkComponent.md
+framework/react/api/router/linkOptions.md
+framework/react/api/router/matchRouteComponent.md
+framework/react/api/router/navigateComponent.md
+framework/react/api/router/notFoundFunction.md
+framework/react/api/router/outletComponent.md
+framework/react/api/router/redirectFunction.md
+framework/react/api/router/retainSearchParamsFunction.md
+framework/react/api/router/rootRouteWithContextFunction.md
+framework/react/api/router/stripSearchParamsFunction.md
+framework/react/api/router/useAwaitedHook.md
+framework/react/api/router/useBlockerHook.md
+framework/react/api/router/useCanGoBack.md
+framework/react/api/router/useChildMatchesHook.md
+framework/react/api/router/useLinkPropsHook.md
+framework/react/api/router/useLoaderDataHook.md
+framework/react/api/router/useLoaderDepsHook.md
+framework/react/api/router/useLocationHook.md
+framework/react/api/router/useMatchHook.md
+framework/react/api/router/useMatchRouteHook.md
+framework/react/api/router/useMatchesHook.md
+framework/react/api/router/useNavigateHook.md
+framework/react/api/router/useParamsHook.md
+framework/react/api/router/useParentMatchesHook.md
+framework/react/api/router/useRouteContextHook.md
+framework/react/api/router/useRouterHook.md
+framework/react/api/router/useRouterStateHook.md
+framework/react/api/router/useSearchHook.md
+framework/react/comparison.md
+framework/react/decisions-on-dx.md
+framework/react/devtools.md
+framework/react/faq.md
+framework/react/guide/authenticated-routes.md
+framework/react/guide/automatic-code-splitting.md
+framework/react/guide/code-splitting.md
+framework/react/guide/creating-a-router.md
+framework/react/guide/custom-link.md
+framework/react/guide/custom-search-param-serialization.md
+framework/react/guide/data-loading.md
+framework/react/guide/data-mutations.md
+framework/react/guide/deferred-data-loading.md
+framework/react/guide/document-head-management.md
+framework/react/guide/external-data-loading.md
+framework/react/guide/history-types.md
+framework/react/guide/link-options.md
+framework/react/guide/navigation-blocking.md
+framework/react/guide/navigation.md
+framework/react/guide/not-found-errors.md
+framework/react/guide/outlets.md
+framework/react/guide/parallel-routes.md
+framework/react/guide/path-params.md
+framework/react/guide/preloading.md
+framework/react/guide/render-optimizations.md
+framework/react/guide/route-masking.md
+framework/react/guide/router-context.md
+framework/react/guide/scroll-restoration.md
+framework/react/guide/search-params.md
+framework/react/guide/ssr.md
+framework/react/guide/static-route-data.md
+framework/react/guide/type-safety.md
+framework/react/guide/type-utilities.md
+framework/react/how-to/README.md
+framework/react/how-to/arrays-objects-dates-search-params.md
+framework/react/how-to/debug-router-issues.md
+framework/react/how-to/deploy-to-production.md
+framework/react/how-to/drafts/README.md
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md
+framework/react/how-to/drafts/search-params-in-forms.draft.md
+framework/react/how-to/install.md
+framework/react/how-to/integrate-chakra-ui.md
+framework/react/how-to/integrate-framer-motion.md
+framework/react/how-to/integrate-material-ui.md
+framework/react/how-to/integrate-shadcn-ui.md
+framework/react/how-to/migrate-from-react-router.md
+framework/react/how-to/navigate-with-search-params.md
+framework/react/how-to/setup-auth-providers.md
+framework/react/how-to/setup-authentication.md
+framework/react/how-to/setup-basic-search-params.md
+framework/react/how-to/setup-rbac.md
+framework/react/how-to/setup-ssr.md
+framework/react/how-to/setup-testing.md
+framework/react/how-to/share-search-params-across-routes.md
+framework/react/how-to/test-file-based-routing.md
+framework/react/how-to/use-environment-variables.md
+framework/react/how-to/validate-search-params.md
+framework/react/installation.md
+framework/react/migrate-from-react-location.md
+framework/react/migrate-from-react-router.md
+framework/react/overview.md
+framework/react/quick-start.md
+framework/react/routing/code-based-routing.md
+framework/react/routing/file-based-routing.md
+framework/react/routing/file-naming-conventions.md
+framework/react/routing/installation-with-esbuild.md
+framework/react/routing/installation-with-router-cli.md
+framework/react/routing/installation-with-rspack.md
+framework/react/routing/installation-with-vite.md
+framework/react/routing/installation-with-webpack.md
+framework/react/routing/route-matching.md
+framework/react/routing/route-trees.md
+framework/react/routing/routing-concepts.md
+framework/react/routing/virtual-file-routes.md
+framework/solid/decisions-on-dx.md
+framework/solid/devtools.md
+framework/solid/faq.md
+framework/solid/guide/authenticated-routes.md
+framework/solid/guide/automatic-code-splitting.md
+framework/solid/guide/code-splitting.md
+framework/solid/guide/creating-a-router.md
+framework/solid/guide/custom-link.md
+framework/solid/guide/custom-search-param-serialization.md
+framework/solid/guide/data-loading.md
+framework/solid/guide/data-mutations.md
+framework/solid/guide/deferred-data-loading.md
+framework/solid/guide/document-head-management.md
+framework/solid/guide/external-data-loading.md
+framework/solid/guide/history-types.md
+framework/solid/guide/link-options.md
+framework/solid/guide/navigation-blocking.md
+framework/solid/guide/navigation.md
+framework/solid/guide/not-found-errors.md
+framework/solid/guide/outlets.md
+framework/solid/guide/path-params.md
+framework/solid/guide/preloading.md
+framework/solid/guide/route-masking.md
+framework/solid/guide/router-context.md
+framework/solid/guide/scroll-restoration.md
+framework/solid/guide/search-params.md
+framework/solid/guide/ssr.md
+framework/solid/guide/static-route-data.md
+framework/solid/guide/type-safety.md
+framework/solid/guide/type-utilities.md
+framework/solid/installation.md
+framework/solid/overview.md
+framework/solid/quick-start.md
+framework/solid/routing/code-based-routing.md
+framework/solid/routing/file-based-routing.md
+framework/solid/routing/file-naming-conventions.md
+framework/solid/routing/installation-with-router-cli.md
+framework/solid/routing/installation-with-vite.md
+framework/solid/routing/route-matching.md
+framework/solid/routing/route-trees.md
+framework/solid/routing/routing-concepts.md
+framework/solid/routing/virtual-file-routes.md
+integrations/query.md
diff --git a/router_docs_headings.json b/router_docs_headings.json
new file mode 100644
index 00000000000..458b6d058e7
--- /dev/null
+++ b/router_docs_headings.json
@@ -0,0 +1,8210 @@
+[
+ {
+ "path": "api/file-based-routing.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Configuration options"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "`routesDirectory` (required)"
+ },
+ {
+ "line": 44,
+ "level": 3,
+ "text": "`generatedRouteTree` (required)"
+ },
+ {
+ "line": 56,
+ "level": 3,
+ "text": "`virtualRouteConfig`"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "`routeFilePrefix`"
+ },
+ {
+ "line": 68,
+ "level": 3,
+ "text": "`routeFileIgnorePrefix`"
+ },
+ {
+ "line": 85,
+ "level": 3,
+ "text": "`routeFileIgnorePattern`"
+ },
+ {
+ "line": 91,
+ "level": 3,
+ "text": "`routeToken`"
+ },
+ {
+ "line": 105,
+ "level": 3,
+ "text": "`indexToken`"
+ },
+ {
+ "line": 118,
+ "level": 3,
+ "text": "`quoteStyle`"
+ },
+ {
+ "line": 127,
+ "level": 3,
+ "text": "`semicolons`"
+ },
+ {
+ "line": 136,
+ "level": 3,
+ "text": "`autoCodeSplitting`"
+ },
+ {
+ "line": 147,
+ "level": 3,
+ "text": "`disableTypes`"
+ },
+ {
+ "line": 155,
+ "level": 3,
+ "text": "`addExtensions`"
+ },
+ {
+ "line": 161,
+ "level": 3,
+ "text": "`disableLogging`"
+ },
+ {
+ "line": 167,
+ "level": 3,
+ "text": "`routeTreeFileHeader`"
+ },
+ {
+ "line": 181,
+ "level": 3,
+ "text": "`routeTreeFileFooter`"
+ },
+ {
+ "line": 191,
+ "level": 3,
+ "text": "`enableRouteTreeFormatting`"
+ },
+ {
+ "line": 197,
+ "level": 3,
+ "text": "`tmpDir`"
+ }
+ ]
+ },
+ {
+ "path": "framework/solid/decisions-on-dx.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/devtools.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/faq.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/installation.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/overview.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/quick-start.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Using File-Based Route Generation"
+ },
+ {
+ "line": 11,
+ "level": 3,
+ "text": "Scaffolding Your First TanStack Router Project"
+ },
+ {
+ "line": 19,
+ "level": 3,
+ "text": "Manual Setup"
+ },
+ {
+ "line": 23,
+ "level": 4,
+ "text": "Install TanStack Router, Vite Plugin, and the Router Devtools"
+ },
+ {
+ "line": 28,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 31,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 34,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 37,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 41,
+ "level": 4,
+ "text": "Configure the Vite Plugin"
+ },
+ {
+ "line": 72,
+ "level": 4,
+ "text": "`src/routes/__root.tsx`"
+ },
+ {
+ "line": 97,
+ "level": 4,
+ "text": "`src/routes/index.tsx`"
+ },
+ {
+ "line": 115,
+ "level": 4,
+ "text": "`src/routes/about.tsx`"
+ },
+ {
+ "line": 129,
+ "level": 4,
+ "text": "`src/main.tsx`"
+ },
+ {
+ "line": 161,
+ "level": 2,
+ "text": "Using Code-Based Route Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/solid/routing/code-based-routing.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/file-based-routing.md",
+ "headings": [
+ {
+ "line": 13,
+ "level": 3,
+ "text": "Configuration with Vite"
+ }
+ ]
+ },
+ {
+ "path": "framework/solid/routing/file-naming-conventions.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/installation-with-router-cli.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/installation-with-vite.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/route-matching.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/route-trees.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/routing-concepts.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/routing/virtual-file-routes.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/authenticated-routes.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/automatic-code-splitting.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/code-splitting.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/creating-a-router.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/custom-link.md",
+ "headings": [
+ {
+ "line": 36,
+ "level": 2,
+ "text": "`createLink` with third party libraries"
+ },
+ {
+ "line": 40,
+ "level": 3,
+ "text": "Some Library example"
+ }
+ ]
+ },
+ {
+ "path": "framework/solid/guide/custom-search-param-serialization.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/data-loading.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/data-mutations.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/deferred-data-loading.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/document-head-management.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/external-data-loading.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/history-types.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/link-options.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/navigation-blocking.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/navigation.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/not-found-errors.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/outlets.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/path-params.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/preloading.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/route-masking.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/router-context.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/scroll-restoration.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/search-params.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/ssr.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/static-route-data.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/type-safety.md",
+ "headings": []
+ },
+ {
+ "path": "framework/solid/guide/type-utilities.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/comparison.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/decisions-on-dx.md",
+ "headings": [
+ {
+ "line": 17,
+ "level": 2,
+ "text": "TanStack Router's origin story"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "How does TanStack Router achieve this?"
+ },
+ {
+ "line": 37,
+ "level": 2,
+ "text": "1. Why is the Router's configuration done this way?"
+ },
+ {
+ "line": 98,
+ "level": 2,
+ "text": "2. Declaring the Router instance for type inference"
+ },
+ {
+ "line": 154,
+ "level": 2,
+ "text": "3. Why is file-based routing the preferred way to define routes?"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/devtools.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "Installation"
+ },
+ {
+ "line": 37,
+ "level": 2,
+ "text": "Import the Devtools"
+ },
+ {
+ "line": 43,
+ "level": 2,
+ "text": "Using Devtools in production"
+ },
+ {
+ "line": 51,
+ "level": 2,
+ "text": "Using inside of the `RouterProvider`"
+ },
+ {
+ "line": 78,
+ "level": 2,
+ "text": "Manually passing the Router Instance"
+ },
+ {
+ "line": 93,
+ "level": 2,
+ "text": "Floating Mode"
+ },
+ {
+ "line": 112,
+ "level": 3,
+ "text": "Devtools Options"
+ },
+ {
+ "line": 135,
+ "level": 2,
+ "text": "Fixed Mode"
+ },
+ {
+ "line": 154,
+ "level": 2,
+ "text": "Embedded Mode"
+ },
+ {
+ "line": 175,
+ "level": 3,
+ "text": "DevtoolsPanel Options"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/faq.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Should I commit my `routeTree.gen.ts` file into git?"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Can I conditionally render the Root Route component?"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/installation.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 13,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 15,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 17,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "Requirements"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "LLM Assistance Support"
+ },
+ {
+ "line": 55,
+ "level": 3,
+ "text": "Usage with yarn workspaces"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/migrate-from-react-location.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Differences between React Location and TanStack Router"
+ },
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Migration guide"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "Step 1: Swap over to TanStack Router's dependencies"
+ },
+ {
+ "line": 37,
+ "level": 3,
+ "text": "Step 2: Use the file-based routing watcher"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "Step 3: Add the file-based configuration file to your project"
+ },
+ {
+ "line": 75,
+ "level": 3,
+ "text": "Step 4: Create the routes directory"
+ },
+ {
+ "line": 83,
+ "level": 3,
+ "text": "Step 5: Create the root route file"
+ },
+ {
+ "line": 109,
+ "level": 3,
+ "text": "Step 6: Create the index route file"
+ },
+ {
+ "line": 122,
+ "level": 3,
+ "text": "Step 7: Create the posts route file"
+ },
+ {
+ "line": 161,
+ "level": 3,
+ "text": "Step 8: Create the posts index route file"
+ },
+ {
+ "line": 174,
+ "level": 3,
+ "text": "Step 9: Create the posts id route file"
+ },
+ {
+ "line": 198,
+ "level": 3,
+ "text": "Step 10: Generate the route tree"
+ },
+ {
+ "line": 208,
+ "level": 3,
+ "text": "Step 11: Update the main entry file to render the Router"
+ },
+ {
+ "line": 246,
+ "level": 3,
+ "text": "Finished!"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/migrate-from-react-router.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/overview.md",
+ "headings": [
+ {
+ "line": 24,
+ "level": 2,
+ "text": "\"A Fork in the Route\""
+ },
+ {
+ "line": 49,
+ "level": 2,
+ "text": "Why TanStack Router?"
+ },
+ {
+ "line": 78,
+ "level": 2,
+ "text": "100% Inferred TypeScript Support"
+ },
+ {
+ "line": 91,
+ "level": 2,
+ "text": "1st Class Search Parameters"
+ },
+ {
+ "line": 113,
+ "level": 2,
+ "text": "Built-In Caching and Friendly Data Loading"
+ },
+ {
+ "line": 123,
+ "level": 3,
+ "text": "Built-in Cache"
+ },
+ {
+ "line": 127,
+ "level": 3,
+ "text": "Flexible & Powerful Data Lifecycle APIs"
+ },
+ {
+ "line": 131,
+ "level": 2,
+ "text": "Inherited Route Context"
+ },
+ {
+ "line": 143,
+ "level": 2,
+ "text": "File-based and/or Code-Based Routing"
+ },
+ {
+ "line": 149,
+ "level": 2,
+ "text": "Acknowledgements"
+ },
+ {
+ "line": 160,
+ "level": 2,
+ "text": "Let's go!"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/quick-start.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Using File-Based Route Generation"
+ },
+ {
+ "line": 11,
+ "level": 3,
+ "text": "Scaffolding Your First TanStack Router Project"
+ },
+ {
+ "line": 19,
+ "level": 3,
+ "text": "Manual Setup"
+ },
+ {
+ "line": 23,
+ "level": 4,
+ "text": "Install TanStack Router, Vite Plugin, and the Router Devtools"
+ },
+ {
+ "line": 28,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 31,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 34,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 37,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 41,
+ "level": 4,
+ "text": "Configure the Vite Plugin"
+ },
+ {
+ "line": 73,
+ "level": 4,
+ "text": "`src/routes/__root.tsx`"
+ },
+ {
+ "line": 98,
+ "level": 4,
+ "text": "`src/routes/index.tsx`"
+ },
+ {
+ "line": 116,
+ "level": 4,
+ "text": "`src/routes/about.tsx`"
+ },
+ {
+ "line": 130,
+ "level": 4,
+ "text": "`src/main.tsx`"
+ },
+ {
+ "line": 168,
+ "level": 2,
+ "text": "Using Code-Based Route Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/code-based-routing.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "⚠️ Before You Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Route Trees"
+ },
+ {
+ "line": 114,
+ "level": 2,
+ "text": "Anatomy of a Route"
+ },
+ {
+ "line": 147,
+ "level": 2,
+ "text": "Manually building the route tree"
+ },
+ {
+ "line": 178,
+ "level": 2,
+ "text": "Routing Concepts for Code-Based Routing"
+ },
+ {
+ "line": 195,
+ "level": 2,
+ "text": "The Root Route"
+ },
+ {
+ "line": 219,
+ "level": 2,
+ "text": "Basic Routes"
+ },
+ {
+ "line": 232,
+ "level": 2,
+ "text": "Index Routes"
+ },
+ {
+ "line": 251,
+ "level": 2,
+ "text": "Dynamic Route Segments"
+ },
+ {
+ "line": 274,
+ "level": 2,
+ "text": "Splat / Catch-All Routes"
+ },
+ {
+ "line": 298,
+ "level": 2,
+ "text": "Layout Routes"
+ },
+ {
+ "line": 349,
+ "level": 2,
+ "text": "Pathless Layout Routes"
+ },
+ {
+ "line": 400,
+ "level": 2,
+ "text": "Non-Nested Routes"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/file-based-routing.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "What is File-Based Routing?"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "`/`s or `.`s?"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "Directory Routes"
+ },
+ {
+ "line": 54,
+ "level": 2,
+ "text": "Flat Routes"
+ },
+ {
+ "line": 81,
+ "level": 2,
+ "text": "Mixed Flat and Directory Routes"
+ },
+ {
+ "line": 108,
+ "level": 2,
+ "text": "Getting started with File-Based Routing"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/file-naming-conventions.md",
+ "headings": [
+ {
+ "line": 22,
+ "level": 2,
+ "text": "Dynamic Path Params"
+ },
+ {
+ "line": 33,
+ "level": 2,
+ "text": "Pathless Routes"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/installation-with-esbuild.md",
+ "headings": [
+ {
+ "line": 36,
+ "level": 2,
+ "text": "Ignoring the generated route tree file"
+ },
+ {
+ "line": 67,
+ "level": 2,
+ "text": "Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/installation-with-router-cli.md",
+ "headings": [
+ {
+ "line": 34,
+ "level": 2,
+ "text": "Using the `generate` command"
+ },
+ {
+ "line": 42,
+ "level": 2,
+ "text": "Using the `watch` command"
+ },
+ {
+ "line": 54,
+ "level": 2,
+ "text": "Ignoring the generated route tree file"
+ },
+ {
+ "line": 85,
+ "level": 2,
+ "text": "Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/installation-with-rspack.md",
+ "headings": [
+ {
+ "line": 42,
+ "level": 2,
+ "text": "Ignoring the generated route tree file"
+ },
+ {
+ "line": 73,
+ "level": 2,
+ "text": "Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/installation-with-vite.md",
+ "headings": [
+ {
+ "line": 44,
+ "level": 2,
+ "text": "Ignoring the generated route tree file"
+ },
+ {
+ "line": 75,
+ "level": 2,
+ "text": "Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/installation-with-webpack.md",
+ "headings": [
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Ignoring the generated route tree file"
+ },
+ {
+ "line": 66,
+ "level": 2,
+ "text": "Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/route-matching.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/routing/route-trees.md",
+ "headings": [
+ {
+ "line": 14,
+ "level": 2,
+ "text": "Route Trees"
+ },
+ {
+ "line": 57,
+ "level": 2,
+ "text": "Route Tree Configuration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/routing-concepts.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Anatomy of a Route"
+ },
+ {
+ "line": 29,
+ "level": 2,
+ "text": "The Root Route"
+ },
+ {
+ "line": 64,
+ "level": 2,
+ "text": "Basic Routes"
+ },
+ {
+ "line": 85,
+ "level": 2,
+ "text": "Index Routes"
+ },
+ {
+ "line": 107,
+ "level": 2,
+ "text": "Dynamic Route Segments"
+ },
+ {
+ "line": 132,
+ "level": 2,
+ "text": "Splat / Catch-All Routes"
+ },
+ {
+ "line": 148,
+ "level": 2,
+ "text": "Optional Path Parameters"
+ },
+ {
+ "line": 182,
+ "level": 2,
+ "text": "Layout Routes"
+ },
+ {
+ "line": 254,
+ "level": 2,
+ "text": "Pathless Layout Routes"
+ },
+ {
+ "line": 331,
+ "level": 2,
+ "text": "Non-Nested Routes"
+ },
+ {
+ "line": 355,
+ "level": 2,
+ "text": "Excluding Files and Folders from Routes"
+ },
+ {
+ "line": 399,
+ "level": 2,
+ "text": "Pathless Route Group Directories"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/routing/virtual-file-routes.md",
+ "headings": [
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Configuration"
+ },
+ {
+ "line": 48,
+ "level": 2,
+ "text": "Configuration via the TanStackRouter Plugin"
+ },
+ {
+ "line": 87,
+ "level": 2,
+ "text": "Creating Virtual File Routes"
+ },
+ {
+ "line": 97,
+ "level": 2,
+ "text": "Virtual Root Route"
+ },
+ {
+ "line": 110,
+ "level": 2,
+ "text": "Virtual Route"
+ },
+ {
+ "line": 139,
+ "level": 2,
+ "text": "Virtual Index Route"
+ },
+ {
+ "line": 149,
+ "level": 2,
+ "text": "Virtual Pathless Route"
+ },
+ {
+ "line": 177,
+ "level": 2,
+ "text": "Physical Virtual Routes"
+ },
+ {
+ "line": 227,
+ "level": 2,
+ "text": "Virtual Routes inside of TanStack Router File Based routing"
+ },
+ {
+ "line": 272,
+ "level": 2,
+ "text": "Inception"
+ },
+ {
+ "line": 293,
+ "level": 2,
+ "text": "Configuration via the TanStack Router CLI"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/ActiveLinkOptionsType.md",
+ "headings": [
+ {
+ "line": 19,
+ "level": 2,
+ "text": "ActiveLinkOptions properties"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "`activeProps`"
+ },
+ {
+ "line": 29,
+ "level": 3,
+ "text": "`inactiveProps`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/AsyncRouteComponentType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/FileRouteClass.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "`FileRoute` constructor"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "Constructor options"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "Constructor returns"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "`FileRoute` methods"
+ },
+ {
+ "line": 30,
+ "level": 3,
+ "text": "`.createRoute` method"
+ },
+ {
+ "line": 34,
+ "level": 4,
+ "text": ".createRoute options"
+ },
+ {
+ "line": 41,
+ "level": 4,
+ "text": ".createRoute returns"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/LinkOptionsType.md",
+ "headings": [
+ {
+ "line": 18,
+ "level": 2,
+ "text": "LinkOptions properties"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "`target`"
+ },
+ {
+ "line": 28,
+ "level": 3,
+ "text": "`activeOptions`"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "`preload`"
+ },
+ {
+ "line": 41,
+ "level": 3,
+ "text": "`preloadDelay`"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "`disabled`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/LinkPropsType.md",
+ "headings": [
+ {
+ "line": 17,
+ "level": 2,
+ "text": "LinkProps properties"
+ },
+ {
+ "line": 22,
+ "level": 4,
+ "text": "`children`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/MatchRouteOptionsType.md",
+ "headings": [
+ {
+ "line": 17,
+ "level": 2,
+ "text": "MatchRouteOptions properties"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`pending` property"
+ },
+ {
+ "line": 27,
+ "level": 3,
+ "text": "`caseSensitive` property"
+ },
+ {
+ "line": 33,
+ "level": 3,
+ "text": "`includeSearch` property"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "`fuzzy` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/NavigateOptionsType.md",
+ "headings": [
+ {
+ "line": 20,
+ "level": 2,
+ "text": "NavigateOptions properties"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`replace`"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "`resetScroll`"
+ },
+ {
+ "line": 38,
+ "level": 3,
+ "text": "`hashScrollIntoView`"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "`viewTransition`"
+ },
+ {
+ "line": 58,
+ "level": 3,
+ "text": "`ignoreBlocker`"
+ },
+ {
+ "line": 65,
+ "level": 3,
+ "text": "`reloadDocument`"
+ },
+ {
+ "line": 72,
+ "level": 3,
+ "text": "`href`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/NotFoundErrorType.md",
+ "headings": [
+ {
+ "line": 18,
+ "level": 2,
+ "text": "NotFoundError properties"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "`global` property (⚠️ deprecated, use `routeId: rootRouteId` instead)"
+ },
+ {
+ "line": 28,
+ "level": 3,
+ "text": "`data` property"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "`throw` property"
+ },
+ {
+ "line": 40,
+ "level": 3,
+ "text": "`route` property"
+ },
+ {
+ "line": 46,
+ "level": 3,
+ "text": "`headers` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/NotFoundRouteClass.md",
+ "headings": [
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Constructor options"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/ParsedHistoryStateType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/ParsedLocationType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/RedirectType.md",
+ "headings": [
+ {
+ "line": 18,
+ "level": 2,
+ "text": "Redirect properties"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "`statusCode` property"
+ },
+ {
+ "line": 28,
+ "level": 3,
+ "text": "`throw` property"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "`headers` property"
+ },
+ {
+ "line": 40,
+ "level": 3,
+ "text": "Navigation Properties"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RegisterType.md",
+ "headings": [
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RootRouteClass.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "`RootRoute` constructor"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "Constructor options"
+ },
+ {
+ "line": 37,
+ "level": 2,
+ "text": "Constructor returns"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteApiClass.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "Constructor options"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "`opts.routeId` option"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "Constructor returns"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteApiType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "`RouteApi` properties and methods"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`useMatch` method"
+ },
+ {
+ "line": 35,
+ "level": 3,
+ "text": "`useRouteContext` method"
+ },
+ {
+ "line": 53,
+ "level": 3,
+ "text": "`useSearch` method"
+ },
+ {
+ "line": 76,
+ "level": 3,
+ "text": "`useParams` method"
+ },
+ {
+ "line": 99,
+ "level": 3,
+ "text": "`useLoaderData` method"
+ },
+ {
+ "line": 122,
+ "level": 3,
+ "text": "`useLoaderDeps` method"
+ },
+ {
+ "line": 145,
+ "level": 3,
+ "text": "`useNavigate` method"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteClass.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "`Route` constructor"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "Constructor options"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "Constructor returns"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteMaskType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "RouteMask properties"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`...ToOptions`"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`options.routeTree`"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`options.unmaskOnReload`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteMatchType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/RouteOptionsType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "RouteOptions properties"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`getParentRoute` method"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`path` property"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`id` property"
+ },
+ {
+ "line": 30,
+ "level": 3,
+ "text": "`component` property"
+ },
+ {
+ "line": 36,
+ "level": 3,
+ "text": "`errorComponent` property"
+ },
+ {
+ "line": 42,
+ "level": 3,
+ "text": "`pendingComponent` property"
+ },
+ {
+ "line": 48,
+ "level": 3,
+ "text": "`notFoundComponent` property"
+ },
+ {
+ "line": 54,
+ "level": 3,
+ "text": "`validateSearch` method"
+ },
+ {
+ "line": 61,
+ "level": 3,
+ "text": "`search.middlewares` property"
+ },
+ {
+ "line": 68,
+ "level": 3,
+ "text": "`parseParams` method (⚠️ deprecated, use `params.parse` instead)"
+ },
+ {
+ "line": 74,
+ "level": 3,
+ "text": "`stringifyParams` method (⚠️ deprecated, use `params.stringify` instead)"
+ },
+ {
+ "line": 80,
+ "level": 3,
+ "text": "`params.parse` method"
+ },
+ {
+ "line": 86,
+ "level": 3,
+ "text": "`params.stringify` method"
+ },
+ {
+ "line": 91,
+ "level": 3,
+ "text": "`beforeLoad` method"
+ },
+ {
+ "line": 120,
+ "level": 3,
+ "text": "`loader` method"
+ },
+ {
+ "line": 150,
+ "level": 3,
+ "text": "`loaderDeps` method"
+ },
+ {
+ "line": 163,
+ "level": 3,
+ "text": "`staleTime` property"
+ },
+ {
+ "line": 170,
+ "level": 3,
+ "text": "`preloadStaleTime` property"
+ },
+ {
+ "line": 177,
+ "level": 3,
+ "text": "`gcTime` property"
+ },
+ {
+ "line": 184,
+ "level": 3,
+ "text": "`shouldReload` property"
+ },
+ {
+ "line": 192,
+ "level": 3,
+ "text": "`caseSensitive` property"
+ },
+ {
+ "line": 198,
+ "level": 3,
+ "text": "`wrapInSuspense` property"
+ },
+ {
+ "line": 204,
+ "level": 3,
+ "text": "`pendingMs` property"
+ },
+ {
+ "line": 211,
+ "level": 3,
+ "text": "`pendingMinMs` property"
+ },
+ {
+ "line": 218,
+ "level": 3,
+ "text": "`preloadMaxAge` property"
+ },
+ {
+ "line": 225,
+ "level": 3,
+ "text": "`preSearchFilters` property (⚠️ deprecated, use `search.middlewares` instead)"
+ },
+ {
+ "line": 233,
+ "level": 3,
+ "text": "`postSearchFilters` property (⚠️ deprecated, use `search.middlewares` instead)"
+ },
+ {
+ "line": 241,
+ "level": 3,
+ "text": "`onError` property"
+ },
+ {
+ "line": 248,
+ "level": 3,
+ "text": "`onEnter` property"
+ },
+ {
+ "line": 254,
+ "level": 3,
+ "text": "`onStay` property"
+ },
+ {
+ "line": 260,
+ "level": 3,
+ "text": "`onLeave` property"
+ },
+ {
+ "line": 266,
+ "level": 3,
+ "text": "`onCatch` property"
+ },
+ {
+ "line": 272,
+ "level": 3,
+ "text": "`remountDeps` method"
+ },
+ {
+ "line": 304,
+ "level": 3,
+ "text": "`headers` method"
+ },
+ {
+ "line": 320,
+ "level": 3,
+ "text": "`head` method"
+ },
+ {
+ "line": 348,
+ "level": 3,
+ "text": "`scripts` method"
+ },
+ {
+ "line": 364,
+ "level": 3,
+ "text": "`codeSplitGroupings` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouteType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "`Route` properties and methods"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`.addChildren` method"
+ },
+ {
+ "line": 17,
+ "level": 3,
+ "text": "`.update` method"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`.lazy` method"
+ },
+ {
+ "line": 29,
+ "level": 3,
+ "text": "...`RouteApi` methods"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouterClass.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "`Router` constructor"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "Constructor options"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "Constructor returns"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouterEventsType.md",
+ "headings": [
+ {
+ "line": 57,
+ "level": 2,
+ "text": "RouterEvents properties"
+ },
+ {
+ "line": 61,
+ "level": 3,
+ "text": "`type` property"
+ },
+ {
+ "line": 67,
+ "level": 3,
+ "text": "`fromLocation` property"
+ },
+ {
+ "line": 72,
+ "level": 3,
+ "text": "`toLocation` property"
+ },
+ {
+ "line": 77,
+ "level": 3,
+ "text": "`pathChanged` property"
+ },
+ {
+ "line": 82,
+ "level": 3,
+ "text": "`hrefChanged` property"
+ },
+ {
+ "line": 87,
+ "level": 2,
+ "text": "Example"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouterOptionsType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "RouterOptions properties"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`routeTree` property"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`history` property"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`stringifySearch` method"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "`parseSearch` method"
+ },
+ {
+ "line": 38,
+ "level": 3,
+ "text": "`search.strict` property"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "`defaultPreload` property"
+ },
+ {
+ "line": 57,
+ "level": 3,
+ "text": "`defaultPreloadDelay` property"
+ },
+ {
+ "line": 64,
+ "level": 3,
+ "text": "`defaultComponent` property"
+ },
+ {
+ "line": 71,
+ "level": 3,
+ "text": "`defaultErrorComponent` property"
+ },
+ {
+ "line": 78,
+ "level": 3,
+ "text": "`defaultNotFoundComponent` property"
+ },
+ {
+ "line": 85,
+ "level": 3,
+ "text": "`defaultPendingComponent` property"
+ },
+ {
+ "line": 91,
+ "level": 3,
+ "text": "`defaultPendingMs` property"
+ },
+ {
+ "line": 98,
+ "level": 3,
+ "text": "`defaultPendingMinMs` property"
+ },
+ {
+ "line": 105,
+ "level": 3,
+ "text": "`defaultStaleTime` property"
+ },
+ {
+ "line": 112,
+ "level": 3,
+ "text": "`defaultPreloadStaleTime` property"
+ },
+ {
+ "line": 119,
+ "level": 3,
+ "text": "`defaultPreloadGcTime` property"
+ },
+ {
+ "line": 126,
+ "level": 3,
+ "text": "`defaultGcTime` property"
+ },
+ {
+ "line": 133,
+ "level": 3,
+ "text": "`defaultOnCatch` property"
+ },
+ {
+ "line": 139,
+ "level": 3,
+ "text": "`disableGlobalCatchBoundary` property"
+ },
+ {
+ "line": 147,
+ "level": 3,
+ "text": "`defaultViewTransition` property"
+ },
+ {
+ "line": 159,
+ "level": 3,
+ "text": "`defaultHashScrollIntoView` property"
+ },
+ {
+ "line": 168,
+ "level": 3,
+ "text": "`caseSensitive` property"
+ },
+ {
+ "line": 175,
+ "level": 3,
+ "text": "`basepath` property"
+ },
+ {
+ "line": 182,
+ "level": 3,
+ "text": "`context` property"
+ },
+ {
+ "line": 188,
+ "level": 3,
+ "text": "`dehydrate` method"
+ },
+ {
+ "line": 194,
+ "level": 3,
+ "text": "`hydrate` method"
+ },
+ {
+ "line": 200,
+ "level": 3,
+ "text": "`routeMasks` property"
+ },
+ {
+ "line": 206,
+ "level": 3,
+ "text": "`unmaskOnReload` property"
+ },
+ {
+ "line": 213,
+ "level": 3,
+ "text": "`Wrap` property"
+ },
+ {
+ "line": 232,
+ "level": 3,
+ "text": "`InnerWrap` property"
+ },
+ {
+ "line": 257,
+ "level": 3,
+ "text": "`notFoundMode` property"
+ },
+ {
+ "line": 264,
+ "level": 3,
+ "text": "`notFoundRoute` property"
+ },
+ {
+ "line": 271,
+ "level": 3,
+ "text": "`trailingSlash` property"
+ },
+ {
+ "line": 278,
+ "level": 3,
+ "text": "`pathParamsAllowedCharacters` property"
+ },
+ {
+ "line": 284,
+ "level": 3,
+ "text": "`defaultStructuralSharing` property"
+ },
+ {
+ "line": 292,
+ "level": 3,
+ "text": "`defaultRemountDeps` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouterStateType.md",
+ "headings": [
+ {
+ "line": 20,
+ "level": 2,
+ "text": "RouterState properties"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`status` property"
+ },
+ {
+ "line": 29,
+ "level": 3,
+ "text": "`isLoading` property"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "`isTransitioning` property"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "`matches` property"
+ },
+ {
+ "line": 44,
+ "level": 3,
+ "text": "`pendingMatches` property"
+ },
+ {
+ "line": 49,
+ "level": 3,
+ "text": "`location` property"
+ },
+ {
+ "line": 54,
+ "level": 3,
+ "text": "`resolvedLocation` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/RouterType.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "`Router` properties and methods"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`.update` method"
+ },
+ {
+ "line": 17,
+ "level": 3,
+ "text": "`state` property"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`.subscribe` method"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "`.matchRoutes` method"
+ },
+ {
+ "line": 37,
+ "level": 3,
+ "text": "`.cancelMatch` method"
+ },
+ {
+ "line": 42,
+ "level": 3,
+ "text": "`.cancelMatches` method"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "`.buildLocation` method"
+ },
+ {
+ "line": 86,
+ "level": 3,
+ "text": "`.commitLocation` method"
+ },
+ {
+ "line": 129,
+ "level": 3,
+ "text": "`.navigate` method"
+ },
+ {
+ "line": 138,
+ "level": 3,
+ "text": "`.invalidate` method"
+ },
+ {
+ "line": 150,
+ "level": 3,
+ "text": "`.clearCache` method"
+ },
+ {
+ "line": 158,
+ "level": 3,
+ "text": "`.load` method"
+ },
+ {
+ "line": 168,
+ "level": 3,
+ "text": "`.preloadRoute` method"
+ },
+ {
+ "line": 183,
+ "level": 3,
+ "text": "`.loadRouteChunk` method"
+ },
+ {
+ "line": 189,
+ "level": 3,
+ "text": "`.matchRoute` method"
+ },
+ {
+ "line": 207,
+ "level": 3,
+ "text": "`.dehydrate` method"
+ },
+ {
+ "line": 215,
+ "level": 3,
+ "text": "`.hydrate` method"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/ToMaskOptionsType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/ToOptionsType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/UseMatchRouteOptionsType.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/ViewTransitionOptionsType.md",
+ "headings": [
+ {
+ "line": 15,
+ "level": 2,
+ "text": "ViewTransitionOptions properties"
+ },
+ {
+ "line": 19,
+ "level": 3,
+ "text": "`types` property"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/awaitComponent.md",
+ "headings": [
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Await props"
+ },
+ {
+ "line": 14,
+ "level": 3,
+ "text": "`props.promise` prop"
+ },
+ {
+ "line": 20,
+ "level": 3,
+ "text": "`props.children` prop"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "Await returns"
+ },
+ {
+ "line": 32,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/catchBoundaryComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "CatchBoundary props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`props.getResetKey` prop"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`props.children` prop"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`props.errorComponent` prop"
+ },
+ {
+ "line": 30,
+ "level": 3,
+ "text": "`props.onCatch` prop"
+ },
+ {
+ "line": 36,
+ "level": 2,
+ "text": "CatchBoundary returns"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/catchNotFoundComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "CatchNotFound props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`props.children` prop"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`props.fallback` prop"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`props.onCatch` prop"
+ },
+ {
+ "line": 30,
+ "level": 2,
+ "text": "CatchNotFound returns"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/clientOnlyComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`props.fallback` prop"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "`props.children` prop"
+ },
+ {
+ "line": 20,
+ "level": 2,
+ "text": "Returns"
+ },
+ {
+ "line": 25,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createFileRouteFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createFileRoute options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`path` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "createFileRoute returns"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createLazyFileRouteFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createLazyFileRoute options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`path`"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "createLazyFileRoute returns"
+ },
+ {
+ "line": 35,
+ "level": 3,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createLazyRouteFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createLazyRoute options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`id`"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "createLazyRoute returns"
+ },
+ {
+ "line": 35,
+ "level": 3,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createRootRouteFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createRootRoute options"
+ },
+ {
+ "line": 29,
+ "level": 2,
+ "text": "createRootRoute returns"
+ },
+ {
+ "line": 33,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createRootRouteWithContextFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createRootRouteWithContext generics"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`TRouterContext` generic"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "createRootRouteWithContext returns"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createRouteFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createRoute options"
+ },
+ {
+ "line": 14,
+ "level": 2,
+ "text": "createRoute returns"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createRouteMaskFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createRouteMask options"
+ },
+ {
+ "line": 14,
+ "level": 2,
+ "text": "createRouteMask returns"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/createRouterFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "createRouter options"
+ },
+ {
+ "line": 14,
+ "level": 2,
+ "text": "createRouter returns"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/defaultGlobalNotFoundComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "DefaultGlobalNotFound returns"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/deferFunction.md",
+ "headings": [
+ {
+ "line": 13,
+ "level": 2,
+ "text": "defer options"
+ },
+ {
+ "line": 19,
+ "level": 2,
+ "text": "defer returns"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/errorComponentComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "ErrorComponent props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`props.error` prop"
+ },
+ {
+ "line": 17,
+ "level": 3,
+ "text": "`props.info` prop"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "`props.reset` prop"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "ErrorComponent returns"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/getRouteApiFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "getRouteApi options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`routeId` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "getRouteApi returns"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/historyStateInterface.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/api/router/isNotFoundFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "isNotFound options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`input` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "isNotFound returns"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/isRedirectFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "isRedirect options"
+ },
+ {
+ "line": 12,
+ "level": 4,
+ "text": "`input`"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "isRedirect returns"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/lazyRouteComponentFunction.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "lazyRouteComponent options"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "`importer` option"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`exportName` option"
+ },
+ {
+ "line": 27,
+ "level": 2,
+ "text": "lazyRouteComponent returns"
+ },
+ {
+ "line": 31,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/linkComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Link props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`...props`"
+ },
+ {
+ "line": 17,
+ "level": 2,
+ "text": "Link returns"
+ },
+ {
+ "line": 21,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/linkOptions.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "linkOptions props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`...props`"
+ },
+ {
+ "line": 17,
+ "level": 2,
+ "text": "`linkOptions` returns"
+ },
+ {
+ "line": 21,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/matchRouteComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "MatchRoute props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`...props` prop"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "`children` prop"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "MatchRoute returns"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/navigateComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Navigate props"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`...options`"
+ },
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Navigate returns"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/notFoundFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "notFound options"
+ },
+ {
+ "line": 15,
+ "level": 2,
+ "text": "notFound returns"
+ },
+ {
+ "line": 20,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/outletComponent.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Outlet props"
+ },
+ {
+ "line": 12,
+ "level": 2,
+ "text": "Outlet returns"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/redirectFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "redirect options"
+ },
+ {
+ "line": 15,
+ "level": 2,
+ "text": "redirect returns"
+ },
+ {
+ "line": 20,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/retainSearchParamsFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "retainSearchParams props"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/rootRouteWithContextFunction.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "rootRouteWithContext generics"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "`TRouterContext` generic"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "rootRouteWithContext returns"
+ },
+ {
+ "line": 27,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/stripSearchParamsFunction.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "stripSearchParams props"
+ },
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useAwaitedHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useAwaited options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`options.promise` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "useAwaited returns"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useBlockerHook.md",
+ "headings": [
+ {
+ "line": 10,
+ "level": 2,
+ "text": "useBlocker options"
+ },
+ {
+ "line": 14,
+ "level": 3,
+ "text": "`options.shouldBlockFn` option"
+ },
+ {
+ "line": 38,
+ "level": 3,
+ "text": "`options.disabled` option"
+ },
+ {
+ "line": 44,
+ "level": 3,
+ "text": "`options.enableBeforeUnload` option"
+ },
+ {
+ "line": 50,
+ "level": 3,
+ "text": "`options.withResolver` option"
+ },
+ {
+ "line": 56,
+ "level": 3,
+ "text": "`options.blockerFn` option (⚠️ deprecated)"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "`options.condition` option (⚠️ deprecated)"
+ },
+ {
+ "line": 68,
+ "level": 2,
+ "text": "useBlocker returns"
+ },
+ {
+ "line": 83,
+ "level": 2,
+ "text": "Examples"
+ },
+ {
+ "line": 87,
+ "level": 3,
+ "text": "Basic usage"
+ },
+ {
+ "line": 103,
+ "level": 3,
+ "text": "Custom UI"
+ },
+ {
+ "line": 133,
+ "level": 3,
+ "text": "Conditional blocking"
+ },
+ {
+ "line": 163,
+ "level": 3,
+ "text": "Without resolver"
+ },
+ {
+ "line": 186,
+ "level": 3,
+ "text": "Type narrowing"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useCanGoBack.md",
+ "headings": [
+ {
+ "line": 10,
+ "level": 2,
+ "text": "useCanGoBack returns"
+ },
+ {
+ "line": 15,
+ "level": 2,
+ "text": "Limitations"
+ },
+ {
+ "line": 19,
+ "level": 2,
+ "text": "Examples"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "Showing a back button"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useChildMatchesHook.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "useChildMatches options"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "useChildMatches returns"
+ },
+ {
+ "line": 33,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useLinkPropsHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useLinkProps options"
+ },
+ {
+ "line": 19,
+ "level": 2,
+ "text": "useLinkProps returns"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useLoaderDataHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useLoaderData options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 20,
+ "level": 3,
+ "text": "`opts.strict` option"
+ },
+ {
+ "line": 26,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 32,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 39,
+ "level": 2,
+ "text": "useLoaderData returns"
+ },
+ {
+ "line": 44,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useLoaderDepsHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useLoaderDepsHook options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 31,
+ "level": 2,
+ "text": "useLoaderDeps returns"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useLocationHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useLocation options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "useLocation returns"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useMatchHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useMatch options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 20,
+ "level": 3,
+ "text": "`opts.strict` option"
+ },
+ {
+ "line": 27,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 33,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 40,
+ "level": 3,
+ "text": "`opts.shouldThrow` option"
+ },
+ {
+ "line": 47,
+ "level": 2,
+ "text": "useMatch returns"
+ },
+ {
+ "line": 52,
+ "level": 2,
+ "text": "Examples"
+ },
+ {
+ "line": 54,
+ "level": 3,
+ "text": "Accessing a route match"
+ },
+ {
+ "line": 66,
+ "level": 3,
+ "text": "Accessing the root route's match"
+ },
+ {
+ "line": 81,
+ "level": 3,
+ "text": "Checking if a specific route is currently rendered"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useMatchRouteHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useMatchRoute returns"
+ },
+ {
+ "line": 12,
+ "level": 2,
+ "text": "matchRoute function"
+ },
+ {
+ "line": 16,
+ "level": 3,
+ "text": "matchRoute function options"
+ },
+ {
+ "line": 22,
+ "level": 3,
+ "text": "matchRoute function returns"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useMatchesHook.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "useMatches options"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "useMatches returns"
+ },
+ {
+ "line": 33,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useNavigateHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useNavigate options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 18,
+ "level": 2,
+ "text": "useNavigate returns"
+ },
+ {
+ "line": 22,
+ "level": 2,
+ "text": "navigate function"
+ },
+ {
+ "line": 26,
+ "level": 3,
+ "text": "navigate function options"
+ },
+ {
+ "line": 32,
+ "level": 3,
+ "text": "navigate function returns"
+ },
+ {
+ "line": 36,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useParamsHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useParams options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.strict` option"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`opts.shouldThrow` option"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 38,
+ "level": 2,
+ "text": "useParams returns"
+ },
+ {
+ "line": 42,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useParentMatchesHook.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "useParentMatches options"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "useParentMatches returns"
+ },
+ {
+ "line": 33,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useRouteContextHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useRouteContext options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "useRouteContext returns"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useRouterHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useRouter returns"
+ },
+ {
+ "line": 14,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useRouterStateHook.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "useRouterState options"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "useRouterState returns"
+ },
+ {
+ "line": 32,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/api/router/useSearchHook.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "useSearch options"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "`opts.from` option"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "`opts.shouldThrow` option"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "`opts.select` option"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "`opts.structuralSharing` option"
+ },
+ {
+ "line": 38,
+ "level": 3,
+ "text": "`opts.strict` option"
+ },
+ {
+ "line": 44,
+ "level": 2,
+ "text": "useSearch returns"
+ },
+ {
+ "line": 49,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/authenticated-routes.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "The `route.beforeLoad` Option"
+ },
+ {
+ "line": 28,
+ "level": 2,
+ "text": "Redirecting"
+ },
+ {
+ "line": 60,
+ "level": 2,
+ "text": "Non-Redirected Authentication"
+ },
+ {
+ "line": 79,
+ "level": 2,
+ "text": "Authentication using React context/hooks"
+ },
+ {
+ "line": 170,
+ "level": 2,
+ "text": "Related How-To Guides"
+ },
+ {
+ "line": 178,
+ "level": 2,
+ "text": "Examples"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/automatic-code-splitting.md",
+ "headings": [
+ {
+ "line": 25,
+ "level": 2,
+ "text": "How does it work?"
+ },
+ {
+ "line": 36,
+ "level": 3,
+ "text": "The transformation process"
+ },
+ {
+ "line": 47,
+ "level": 3,
+ "text": "What gets code split?"
+ },
+ {
+ "line": 77,
+ "level": 2,
+ "text": "Granular control"
+ },
+ {
+ "line": 81,
+ "level": 3,
+ "text": "Global code splitting behavior (`defaultBehavior`)"
+ },
+ {
+ "line": 111,
+ "level": 3,
+ "text": "Advanced programmatic control (`splitBehavior`)"
+ },
+ {
+ "line": 138,
+ "level": 3,
+ "text": "Per-route overrides (`codeSplitGroupings`)"
+ },
+ {
+ "line": 161,
+ "level": 3,
+ "text": "Configuration order matters"
+ },
+ {
+ "line": 171,
+ "level": 3,
+ "text": "Splitting the Data Loader"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/code-splitting.md",
+ "headings": [
+ {
+ "line": 11,
+ "level": 2,
+ "text": "How does TanStack Router split code?"
+ },
+ {
+ "line": 40,
+ "level": 2,
+ "text": "Encapsulating a route's files into a directory"
+ },
+ {
+ "line": 57,
+ "level": 2,
+ "text": "Approaches to code splitting"
+ },
+ {
+ "line": 67,
+ "level": 2,
+ "text": "Using automatic code-splitting✨"
+ },
+ {
+ "line": 100,
+ "level": 2,
+ "text": "Using the `.lazy.tsx` suffix"
+ },
+ {
+ "line": 116,
+ "level": 3,
+ "text": "Example code splitting with `.lazy.tsx`"
+ },
+ {
+ "line": 167,
+ "level": 2,
+ "text": "Using Virtual Routes"
+ },
+ {
+ "line": 212,
+ "level": 2,
+ "text": "Code-Based Splitting"
+ },
+ {
+ "line": 239,
+ "level": 2,
+ "text": "Data Loader Splitting"
+ },
+ {
+ "line": 264,
+ "level": 2,
+ "text": "Manually accessing Route APIs in other files with the `getRouteApi` helper"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/creating-a-router.md",
+ "headings": [
+ {
+ "line": 5,
+ "level": 2,
+ "text": "The `Router` Class"
+ },
+ {
+ "line": 17,
+ "level": 2,
+ "text": "Route Tree"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "Filesystem Route Tree"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "Code-Based Route Tree"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Router Type Safety"
+ },
+ {
+ "line": 59,
+ "level": 2,
+ "text": "404 Not Found Route"
+ },
+ {
+ "line": 74,
+ "level": 2,
+ "text": "Other Options"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/custom-link.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "`createLink` for cross-cutting concerns"
+ },
+ {
+ "line": 11,
+ "level": 3,
+ "text": "Basic example"
+ },
+ {
+ "line": 50,
+ "level": 2,
+ "text": "`createLink` with third party libraries"
+ },
+ {
+ "line": 54,
+ "level": 3,
+ "text": "React Aria Components example"
+ },
+ {
+ "line": 90,
+ "level": 3,
+ "text": "Chakra UI example"
+ },
+ {
+ "line": 126,
+ "level": 3,
+ "text": "MUI example"
+ },
+ {
+ "line": 130,
+ "level": 4,
+ "text": "`Link`"
+ },
+ {
+ "line": 167,
+ "level": 4,
+ "text": "`Button`"
+ },
+ {
+ "line": 196,
+ "level": 4,
+ "text": "Usage with `styled`"
+ },
+ {
+ "line": 211,
+ "level": 3,
+ "text": "Mantine example"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/custom-search-param-serialization.md",
+ "headings": [
+ {
+ "line": 50,
+ "level": 2,
+ "text": "Using Base64"
+ },
+ {
+ "line": 98,
+ "level": 2,
+ "text": "Using the query-string library"
+ },
+ {
+ "line": 127,
+ "level": 2,
+ "text": "Using the JSURL2 library"
+ },
+ {
+ "line": 152,
+ "level": 2,
+ "text": "Using the Zipson library"
+ },
+ {
+ "line": 200,
+ "level": 3,
+ "text": "Safe Binary Encoding/Decoding"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/data-loading.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "The route loading lifecycle"
+ },
+ {
+ "line": 31,
+ "level": 2,
+ "text": "To Router Cache or not to Router Cache?"
+ },
+ {
+ "line": 54,
+ "level": 2,
+ "text": "Using the Router Cache"
+ },
+ {
+ "line": 58,
+ "level": 2,
+ "text": "Route `loader`s"
+ },
+ {
+ "line": 69,
+ "level": 2,
+ "text": "`loader` Parameters"
+ },
+ {
+ "line": 90,
+ "level": 2,
+ "text": "Consuming data from `loader`s"
+ },
+ {
+ "line": 109,
+ "level": 2,
+ "text": "Dependency-based Stale-While-Revalidate Caching"
+ },
+ {
+ "line": 120,
+ "level": 3,
+ "text": "Key options"
+ },
+ {
+ "line": 138,
+ "level": 3,
+ "text": "⚠️ Some Important Defaults"
+ },
+ {
+ "line": 145,
+ "level": 3,
+ "text": "Using `loaderDeps` to access search params"
+ },
+ {
+ "line": 163,
+ "level": 3,
+ "text": "Using `staleTime` to control how long data is considered fresh"
+ },
+ {
+ "line": 180,
+ "level": 2,
+ "text": "Turning off stale-while-revalidate caching"
+ },
+ {
+ "line": 201,
+ "level": 2,
+ "text": "Using `shouldReload` and `gcTime` to opt-out of caching"
+ },
+ {
+ "line": 217,
+ "level": 3,
+ "text": "Opting out of caching while still preloading"
+ },
+ {
+ "line": 223,
+ "level": 2,
+ "text": "Passing all loader events to an external cache"
+ },
+ {
+ "line": 236,
+ "level": 2,
+ "text": "Using Router Context"
+ },
+ {
+ "line": 299,
+ "level": 2,
+ "text": "Using Path Params"
+ },
+ {
+ "line": 310,
+ "level": 2,
+ "text": "Using Route Context"
+ },
+ {
+ "line": 331,
+ "level": 2,
+ "text": "Using Search Params in Loaders"
+ },
+ {
+ "line": 355,
+ "level": 3,
+ "text": "Accessing Search Params via `routeOptions.loaderDeps`"
+ },
+ {
+ "line": 374,
+ "level": 2,
+ "text": "Using the Abort Signal"
+ },
+ {
+ "line": 389,
+ "level": 2,
+ "text": "Using the `preload` flag"
+ },
+ {
+ "line": 403,
+ "level": 2,
+ "text": "Handling Slow Loaders"
+ },
+ {
+ "line": 410,
+ "level": 2,
+ "text": "Showing a pending component"
+ },
+ {
+ "line": 419,
+ "level": 2,
+ "text": "Avoiding Pending Component Flash"
+ },
+ {
+ "line": 426,
+ "level": 2,
+ "text": "Handling Errors"
+ },
+ {
+ "line": 430,
+ "level": 3,
+ "text": "Handling Errors with `routeOptions.onError`"
+ },
+ {
+ "line": 445,
+ "level": 3,
+ "text": "Handling Errors with `routeOptions.onCatch`"
+ },
+ {
+ "line": 459,
+ "level": 3,
+ "text": "Handling Errors with `routeOptions.errorComponent`"
+ },
+ {
+ "line": 527,
+ "level": 3,
+ "text": "Using the default `ErrorComponent`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/data-mutations.md",
+ "headings": [
+ {
+ "line": 36,
+ "level": 2,
+ "text": "Invalidating TanStack Router after a mutation"
+ },
+ {
+ "line": 72,
+ "level": 2,
+ "text": "Long-term mutation State"
+ },
+ {
+ "line": 85,
+ "level": 2,
+ "text": "Using mutation keys"
+ },
+ {
+ "line": 124,
+ "level": 2,
+ "text": "Using the `router.subscribe` method"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/deferred-data-loading.md",
+ "headings": [
+ {
+ "line": 12,
+ "level": 2,
+ "text": "Deferred Data Loading with `Await`"
+ },
+ {
+ "line": 78,
+ "level": 2,
+ "text": "Deferred Data Loading with External libraries"
+ },
+ {
+ "line": 132,
+ "level": 2,
+ "text": "Caching and Invalidation"
+ },
+ {
+ "line": 138,
+ "level": 2,
+ "text": "SSR & Streaming Deferred Data"
+ },
+ {
+ "line": 144,
+ "level": 2,
+ "text": "SSR Streaming Lifecycle"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/document-head-management.md",
+ "headings": [
+ {
+ "line": 20,
+ "level": 2,
+ "text": "Managing the Document Head"
+ },
+ {
+ "line": 58,
+ "level": 3,
+ "text": "Deduping"
+ },
+ {
+ "line": 65,
+ "level": 3,
+ "text": "``"
+ },
+ {
+ "line": 71,
+ "level": 3,
+ "text": "Start/Full-Stack Applications"
+ },
+ {
+ "line": 90,
+ "level": 3,
+ "text": "Single-Page Applications"
+ },
+ {
+ "line": 107,
+ "level": 2,
+ "text": "Managing Body Scripts"
+ },
+ {
+ "line": 126,
+ "level": 3,
+ "text": "``"
+ },
+ {
+ "line": 130,
+ "level": 3,
+ "text": "Example"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/external-data-loading.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "To **Store** or to **Coordinate**?"
+ },
+ {
+ "line": 15,
+ "level": 2,
+ "text": "What data fetching libraries are supported?"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Using Loaders to ensure data is loaded"
+ },
+ {
+ "line": 72,
+ "level": 2,
+ "text": "A more realistic example using TanStack Query"
+ },
+ {
+ "line": 103,
+ "level": 3,
+ "text": "Error handling with TanStack Query"
+ },
+ {
+ "line": 136,
+ "level": 2,
+ "text": "SSR Dehydration/Hydration"
+ },
+ {
+ "line": 140,
+ "level": 2,
+ "text": "Critical Dehydration/Hydration"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/history-types.md",
+ "headings": [
+ {
+ "line": 25,
+ "level": 2,
+ "text": "Browser Routing"
+ },
+ {
+ "line": 29,
+ "level": 2,
+ "text": "Hash Routing"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Memory Routing"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/link-options.md",
+ "headings": [
+ {
+ "line": 20,
+ "level": 3,
+ "text": "Using `linkOptions` function to create re-usable options"
+ },
+ {
+ "line": 67,
+ "level": 3,
+ "text": "An array of `linkOptions`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/navigation-blocking.md",
+ "headings": [
+ {
+ "line": 16,
+ "level": 2,
+ "text": "How does navigation blocking work?"
+ },
+ {
+ "line": 25,
+ "level": 2,
+ "text": "How do I use navigation blocking?"
+ },
+ {
+ "line": 32,
+ "level": 2,
+ "text": "Hook/logical-based blocking"
+ },
+ {
+ "line": 103,
+ "level": 2,
+ "text": "Component-based blocking"
+ },
+ {
+ "line": 143,
+ "level": 2,
+ "text": "How can I show a custom UI?"
+ },
+ {
+ "line": 151,
+ "level": 3,
+ "text": "Hook/logical-based custom UI with resolver"
+ },
+ {
+ "line": 184,
+ "level": 3,
+ "text": "Hook/logical-based custom UI without resolver"
+ },
+ {
+ "line": 229,
+ "level": 3,
+ "text": "Component-based custom UI"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/navigation.md",
+ "headings": [
+ {
+ "line": 5,
+ "level": 2,
+ "text": "Everything is Relative"
+ },
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Shared Navigation API"
+ },
+ {
+ "line": 20,
+ "level": 3,
+ "text": "`ToOptions` Interface"
+ },
+ {
+ "line": 61,
+ "level": 3,
+ "text": "`NavigateOptions` Interface"
+ },
+ {
+ "line": 88,
+ "level": 3,
+ "text": "`LinkOptions` Interface"
+ },
+ {
+ "line": 116,
+ "level": 2,
+ "text": "Navigation API"
+ },
+ {
+ "line": 131,
+ "level": 2,
+ "text": "`` Component"
+ },
+ {
+ "line": 153,
+ "level": 3,
+ "text": "Absolute Links"
+ },
+ {
+ "line": 163,
+ "level": 3,
+ "text": "Dynamic Links"
+ },
+ {
+ "line": 182,
+ "level": 3,
+ "text": "Relative Links"
+ },
+ {
+ "line": 202,
+ "level": 3,
+ "text": "Special relative paths: `\".\"` and `\"..\"`"
+ },
+ {
+ "line": 233,
+ "level": 3,
+ "text": "Search Param Links"
+ },
+ {
+ "line": 266,
+ "level": 3,
+ "text": "Search Param Type Safety"
+ },
+ {
+ "line": 270,
+ "level": 3,
+ "text": "Hash Links"
+ },
+ {
+ "line": 288,
+ "level": 3,
+ "text": "Navigating with Optional Parameters"
+ },
+ {
+ "line": 292,
+ "level": 4,
+ "text": "Parameter Inheritance vs Removal"
+ },
+ {
+ "line": 316,
+ "level": 4,
+ "text": "Basic Optional Parameter Navigation"
+ },
+ {
+ "line": 344,
+ "level": 4,
+ "text": "Function-Style Parameter Updates"
+ },
+ {
+ "line": 377,
+ "level": 4,
+ "text": "Multiple Optional Parameters"
+ },
+ {
+ "line": 407,
+ "level": 4,
+ "text": "Mixed Required and Optional Parameters"
+ },
+ {
+ "line": 437,
+ "level": 4,
+ "text": "Advanced Optional Parameter Patterns"
+ },
+ {
+ "line": 489,
+ "level": 4,
+ "text": "Navigation with Search Params and Optional Parameters"
+ },
+ {
+ "line": 513,
+ "level": 4,
+ "text": "Imperative Navigation with Optional Parameters"
+ },
+ {
+ "line": 544,
+ "level": 3,
+ "text": "Active & Inactive Props"
+ },
+ {
+ "line": 568,
+ "level": 3,
+ "text": "The `data-status` attribute"
+ },
+ {
+ "line": 572,
+ "level": 3,
+ "text": "Active Options"
+ },
+ {
+ "line": 635,
+ "level": 3,
+ "text": "Passing `isActive` to children"
+ },
+ {
+ "line": 654,
+ "level": 3,
+ "text": "Link Preloading"
+ },
+ {
+ "line": 670,
+ "level": 3,
+ "text": "Link Preloading Delay"
+ },
+ {
+ "line": 682,
+ "level": 2,
+ "text": "`useNavigate`"
+ },
+ {
+ "line": 711,
+ "level": 3,
+ "text": "`navigate` Options"
+ },
+ {
+ "line": 715,
+ "level": 2,
+ "text": "`Navigate` Component"
+ },
+ {
+ "line": 727,
+ "level": 2,
+ "text": "`router.navigate`"
+ },
+ {
+ "line": 731,
+ "level": 2,
+ "text": "`useMatchRoute` and ``"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/not-found-errors.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Overview"
+ },
+ {
+ "line": 26,
+ "level": 2,
+ "text": "The `notFoundMode` option"
+ },
+ {
+ "line": 35,
+ "level": 3,
+ "text": "`notFoundMode: 'fuzzy'`"
+ },
+ {
+ "line": 60,
+ "level": 3,
+ "text": "`notFoundMode: 'root'`"
+ },
+ {
+ "line": 77,
+ "level": 2,
+ "text": "Configuring a route's `notFoundComponent`"
+ },
+ {
+ "line": 122,
+ "level": 2,
+ "text": "Default Router-Wide Not Found Handling"
+ },
+ {
+ "line": 143,
+ "level": 2,
+ "text": "Throwing your own `notFound` errors"
+ },
+ {
+ "line": 169,
+ "level": 2,
+ "text": "Specifying Which Routes Handle Not Found Errors"
+ },
+ {
+ "line": 204,
+ "level": 3,
+ "text": "Manually targeting the root route"
+ },
+ {
+ "line": 220,
+ "level": 3,
+ "text": "Throwing Not Found Errors in Components"
+ },
+ {
+ "line": 226,
+ "level": 3,
+ "text": "Data Loading Inside `notFoundComponent`"
+ },
+ {
+ "line": 257,
+ "level": 2,
+ "text": "Usage With SSR"
+ },
+ {
+ "line": 261,
+ "level": 2,
+ "text": "Migrating from `NotFoundRoute`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/outlets.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "The `Outlet` Component"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/parallel-routes.md",
+ "headings": []
+ },
+ {
+ "path": "framework/react/guide/path-params.md",
+ "headings": [
+ {
+ "line": 30,
+ "level": 2,
+ "text": "Path Params can be used by child routes"
+ },
+ {
+ "line": 34,
+ "level": 2,
+ "text": "Path Params in Loaders"
+ },
+ {
+ "line": 56,
+ "level": 2,
+ "text": "Path Params in Components"
+ },
+ {
+ "line": 73,
+ "level": 2,
+ "text": "Path Params outside of Routes"
+ },
+ {
+ "line": 84,
+ "level": 2,
+ "text": "Navigating with Path Params"
+ },
+ {
+ "line": 114,
+ "level": 2,
+ "text": "Prefixes and Suffixes for Path Params"
+ },
+ {
+ "line": 120,
+ "level": 3,
+ "text": "Defining Prefixes"
+ },
+ {
+ "line": 153,
+ "level": 3,
+ "text": "Defining Suffixes"
+ },
+ {
+ "line": 185,
+ "level": 3,
+ "text": "Combining Prefixes and Suffixes"
+ },
+ {
+ "line": 204,
+ "level": 2,
+ "text": "Optional Path Parameters"
+ },
+ {
+ "line": 208,
+ "level": 3,
+ "text": "Defining Optional Parameters"
+ },
+ {
+ "line": 232,
+ "level": 3,
+ "text": "How Optional Parameters Work"
+ },
+ {
+ "line": 242,
+ "level": 3,
+ "text": "Accessing Optional Parameters"
+ },
+ {
+ "line": 254,
+ "level": 3,
+ "text": "Optional Parameters in Loaders"
+ },
+ {
+ "line": 267,
+ "level": 3,
+ "text": "Optional Parameters in beforeLoad"
+ },
+ {
+ "line": 282,
+ "level": 3,
+ "text": "Advanced Optional Parameter Patterns"
+ },
+ {
+ "line": 284,
+ "level": 4,
+ "text": "With Prefix and Suffix"
+ },
+ {
+ "line": 301,
+ "level": 4,
+ "text": "All Optional Parameters"
+ },
+ {
+ "line": 332,
+ "level": 4,
+ "text": "Optional Parameters with Wildcards"
+ },
+ {
+ "line": 356,
+ "level": 3,
+ "text": "Navigating with Optional Parameters"
+ },
+ {
+ "line": 386,
+ "level": 3,
+ "text": "Type Safety with Optional Parameters"
+ },
+ {
+ "line": 417,
+ "level": 2,
+ "text": "Internationalization (i18n) with Optional Path Parameters"
+ },
+ {
+ "line": 421,
+ "level": 3,
+ "text": "Prefix-based i18n"
+ },
+ {
+ "line": 463,
+ "level": 3,
+ "text": "Complex i18n Patterns"
+ },
+ {
+ "line": 514,
+ "level": 3,
+ "text": "Language Navigation"
+ },
+ {
+ "line": 597,
+ "level": 3,
+ "text": "Advanced i18n with Optional Parameters"
+ },
+ {
+ "line": 634,
+ "level": 3,
+ "text": "SEO and Canonical URLs"
+ },
+ {
+ "line": 685,
+ "level": 3,
+ "text": "Type Safety for i18n"
+ },
+ {
+ "line": 741,
+ "level": 2,
+ "text": "Allowed Characters"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/preloading.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Supported Preloading Strategies"
+ },
+ {
+ "line": 19,
+ "level": 2,
+ "text": "How long does preloaded data stay in memory?"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Preload Delay"
+ },
+ {
+ "line": 56,
+ "level": 2,
+ "text": "Built-in Preloading & `preloadStaleTime`"
+ },
+ {
+ "line": 82,
+ "level": 2,
+ "text": "Preloading with External Libraries"
+ },
+ {
+ "line": 101,
+ "level": 2,
+ "text": "Preloading Manually"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/render-optimizations.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "structural sharing"
+ },
+ {
+ "line": 19,
+ "level": 2,
+ "text": "fine-grained selectors"
+ },
+ {
+ "line": 28,
+ "level": 3,
+ "text": "structural sharing with fine-grained selectors"
+ },
+ {
+ "line": 49,
+ "level": 4,
+ "text": "Enable it by default in the router options:"
+ },
+ {
+ "line": 58,
+ "level": 4,
+ "text": "Enable it per hook usage as shown here:"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/route-masking.md",
+ "headings": [
+ {
+ "line": 14,
+ "level": 2,
+ "text": "How does route masking work?"
+ },
+ {
+ "line": 43,
+ "level": 2,
+ "text": "How do I use route masking?"
+ },
+ {
+ "line": 54,
+ "level": 3,
+ "text": "Imperative route masking"
+ },
+ {
+ "line": 92,
+ "level": 3,
+ "text": "Declarative route masking"
+ },
+ {
+ "line": 124,
+ "level": 2,
+ "text": "Unmasking when sharing the URL"
+ },
+ {
+ "line": 128,
+ "level": 2,
+ "text": "Local Unmasking Defaults"
+ },
+ {
+ "line": 132,
+ "level": 2,
+ "text": "Unmasking on page reload"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/router-context.md",
+ "headings": [
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Typed Router Context"
+ },
+ {
+ "line": 45,
+ "level": 2,
+ "text": "Passing the initial Router Context"
+ },
+ {
+ "line": 67,
+ "level": 3,
+ "text": "Invalidating the Router Context"
+ },
+ {
+ "line": 89,
+ "level": 2,
+ "text": "Using the Router Context"
+ },
+ {
+ "line": 131,
+ "level": 3,
+ "text": "How about an external data fetching library?"
+ },
+ {
+ "line": 172,
+ "level": 2,
+ "text": "How about using React Context/Hooks?"
+ },
+ {
+ "line": 247,
+ "level": 2,
+ "text": "Modifying the Router Context"
+ },
+ {
+ "line": 299,
+ "level": 2,
+ "text": "Processing Accumulated Route Context"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/scroll-restoration.md",
+ "headings": [
+ {
+ "line": 6,
+ "level": 2,
+ "text": "Hash/Top-of-Page Scrolling"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Scroll-to-top & Nested Scrollable Areas"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Scroll Restoration"
+ },
+ {
+ "line": 68,
+ "level": 2,
+ "text": "Custom Cache Keys"
+ },
+ {
+ "line": 78,
+ "level": 2,
+ "text": "Examples"
+ },
+ {
+ "line": 105,
+ "level": 2,
+ "text": "Preventing Scroll Restoration"
+ },
+ {
+ "line": 115,
+ "level": 2,
+ "text": "Manual Scroll Restoration"
+ },
+ {
+ "line": 193,
+ "level": 2,
+ "text": "Scroll Behavior"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/search-params.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Why not just use `URLSearchParams`?"
+ },
+ {
+ "line": 27,
+ "level": 2,
+ "text": "Search Params, the \"OG\" State Manager"
+ },
+ {
+ "line": 40,
+ "level": 2,
+ "text": "JSON-first Search Params"
+ },
+ {
+ "line": 85,
+ "level": 2,
+ "text": "Validating and Typing Search Params"
+ },
+ {
+ "line": 89,
+ "level": 3,
+ "text": "Enter Validation + TypeScript!"
+ },
+ {
+ "line": 118,
+ "level": 3,
+ "text": "Validating Search Params"
+ },
+ {
+ "line": 177,
+ "level": 4,
+ "text": "Adapters"
+ },
+ {
+ "line": 204,
+ "level": 3,
+ "text": "Zod"
+ },
+ {
+ "line": 274,
+ "level": 3,
+ "text": "Valibot"
+ },
+ {
+ "line": 299,
+ "level": 3,
+ "text": "Arktype"
+ },
+ {
+ "line": 321,
+ "level": 3,
+ "text": "Effect/Schema"
+ },
+ {
+ "line": 360,
+ "level": 2,
+ "text": "Reading Search Params"
+ },
+ {
+ "line": 364,
+ "level": 3,
+ "text": "Using Search Params in Loaders"
+ },
+ {
+ "line": 368,
+ "level": 3,
+ "text": "Search Params are inherited from Parent Routes"
+ },
+ {
+ "line": 399,
+ "level": 3,
+ "text": "Search Params in Components"
+ },
+ {
+ "line": 420,
+ "level": 3,
+ "text": "Search Params outside of Route Components"
+ },
+ {
+ "line": 466,
+ "level": 2,
+ "text": "Writing Search Params"
+ },
+ {
+ "line": 470,
+ "level": 3,
+ "text": "``"
+ },
+ {
+ "line": 530,
+ "level": 3,
+ "text": "`useNavigate(), navigate({ search })`"
+ },
+ {
+ "line": 559,
+ "level": 3,
+ "text": "`router.navigate({ search })`"
+ },
+ {
+ "line": 563,
+ "level": 3,
+ "text": "``"
+ },
+ {
+ "line": 567,
+ "level": 2,
+ "text": "Transforming search with search middlewares"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/ssr.md",
+ "headings": [
+ {
+ "line": 21,
+ "level": 2,
+ "text": "Non-Streaming SSR"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "Automatic Server History"
+ },
+ {
+ "line": 43,
+ "level": 3,
+ "text": "Automatic Loader Dehydration/Hydration"
+ },
+ {
+ "line": 51,
+ "level": 3,
+ "text": "Router Creation"
+ },
+ {
+ "line": 71,
+ "level": 3,
+ "text": "Rendering the Application on the Server"
+ },
+ {
+ "line": 121,
+ "level": 2,
+ "text": "Rendering the Application on the Client"
+ },
+ {
+ "line": 145,
+ "level": 2,
+ "text": "Streaming SSR"
+ },
+ {
+ "line": 196,
+ "level": 2,
+ "text": "Streaming Dehydration/Hydration"
+ },
+ {
+ "line": 200,
+ "level": 2,
+ "text": "Data Serialization"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/static-route-data.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Example"
+ },
+ {
+ "line": 45,
+ "level": 2,
+ "text": "Enforcing Static Data"
+ },
+ {
+ "line": 69,
+ "level": 2,
+ "text": "Optional Static Data"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/type-safety.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Route Definitions"
+ },
+ {
+ "line": 11,
+ "level": 3,
+ "text": "File-based Routing"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "Code-based Routing"
+ },
+ {
+ "line": 27,
+ "level": 2,
+ "text": "Exported Hooks, Components, and Utilities"
+ },
+ {
+ "line": 45,
+ "level": 2,
+ "text": "Fixing the Component Context Problem"
+ },
+ {
+ "line": 70,
+ "level": 3,
+ "text": "What if I don't know the route? What if it's a shared component?"
+ },
+ {
+ "line": 74,
+ "level": 3,
+ "text": "What if I pass the wrong `from` path?"
+ },
+ {
+ "line": 78,
+ "level": 3,
+ "text": "What if I don't know the route, or it's a shared component, and I can't pass `from`?"
+ },
+ {
+ "line": 90,
+ "level": 2,
+ "text": "Router Context"
+ },
+ {
+ "line": 114,
+ "level": 2,
+ "text": "Performance Recommendations"
+ },
+ {
+ "line": 118,
+ "level": 3,
+ "text": "Only infer types you need"
+ },
+ {
+ "line": 157,
+ "level": 3,
+ "text": "Narrow to relevant routes as much as you possibly can"
+ },
+ {
+ "line": 191,
+ "level": 3,
+ "text": "Consider using the object syntax of `addChildren`"
+ },
+ {
+ "line": 206,
+ "level": 3,
+ "text": "Avoid internal types without narrowing"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/guide/type-utilities.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Type checking Link options with `ValidateLinkOptions`"
+ },
+ {
+ "line": 45,
+ "level": 2,
+ "text": "Type checking an array of Link options with `ValidateLinkOptionsArray`"
+ },
+ {
+ "line": 124,
+ "level": 2,
+ "text": "Type checking redirect options with `ValidateRedirectOptions`"
+ },
+ {
+ "line": 156,
+ "level": 2,
+ "text": "Type checking navigate options with `ValidateNavigateOptions`"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/README.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "How-To Guides"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Available Guides"
+ },
+ {
+ "line": 18,
+ "level": 3,
+ "text": "Authentication"
+ },
+ {
+ "line": 24,
+ "level": 3,
+ "text": "Testing & Debugging"
+ },
+ {
+ "line": 30,
+ "level": 3,
+ "text": "UI Library Integration"
+ },
+ {
+ "line": 37,
+ "level": 3,
+ "text": "Search Parameters & URL State (Progressive Series)"
+ },
+ {
+ "line": 63,
+ "level": 2,
+ "text": "Using These Guides"
+ },
+ {
+ "line": 73,
+ "level": 2,
+ "text": "Contributing"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/arrays-objects-dates-search-params.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 35,
+ "level": 2,
+ "text": "Working with Arrays"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "Basic Array Validation"
+ },
+ {
+ "line": 74,
+ "level": 3,
+ "text": "Navigating with Arrays"
+ },
+ {
+ "line": 119,
+ "level": 3,
+ "text": "Advanced Array Patterns"
+ },
+ {
+ "line": 153,
+ "level": 2,
+ "text": "Working with Objects"
+ },
+ {
+ "line": 157,
+ "level": 3,
+ "text": "Basic Object Validation"
+ },
+ {
+ "line": 207,
+ "level": 3,
+ "text": "Navigating with Objects"
+ },
+ {
+ "line": 293,
+ "level": 2,
+ "text": "Working with Dates"
+ },
+ {
+ "line": 297,
+ "level": 3,
+ "text": "Date Validation and Serialization"
+ },
+ {
+ "line": 348,
+ "level": 3,
+ "text": "Date Navigation Patterns"
+ },
+ {
+ "line": 413,
+ "level": 2,
+ "text": "Nested Data Structures"
+ },
+ {
+ "line": 417,
+ "level": 3,
+ "text": "Complex Nested Schema"
+ },
+ {
+ "line": 485,
+ "level": 3,
+ "text": "Managing Complex State Updates"
+ },
+ {
+ "line": 565,
+ "level": 2,
+ "text": "Performance Optimization"
+ },
+ {
+ "line": 567,
+ "level": 3,
+ "text": "Selective Updates with Selectors"
+ },
+ {
+ "line": 596,
+ "level": 3,
+ "text": "Memoization for Complex Transforms"
+ },
+ {
+ "line": 624,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 635,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 637,
+ "level": 3,
+ "text": "Problem: Array Parameters Not Updating"
+ },
+ {
+ "line": 659,
+ "level": 3,
+ "text": "Problem: Dates Not Serializing Correctly"
+ },
+ {
+ "line": 679,
+ "level": 3,
+ "text": "Problem: Deep Object Updates Not Working"
+ },
+ {
+ "line": 704,
+ "level": 3,
+ "text": "Problem: URL Too Long Error"
+ },
+ {
+ "line": 728,
+ "level": 3,
+ "text": "Problem: Performance Issues with Large Objects"
+ },
+ {
+ "line": 750,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 757,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/debug-router-issues.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Essential Debugging Tools"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "1. TanStack Router DevTools"
+ },
+ {
+ "line": 46,
+ "level": 3,
+ "text": "2. Debug Mode Configuration"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "3. Browser DevTools Setup"
+ },
+ {
+ "line": 80,
+ "level": 2,
+ "text": "Route Matching Issues"
+ },
+ {
+ "line": 82,
+ "level": 3,
+ "text": "Problem: Route Not Found (404)"
+ },
+ {
+ "line": 126,
+ "level": 3,
+ "text": "Problem: Route Parameters Not Working"
+ },
+ {
+ "line": 183,
+ "level": 2,
+ "text": "Navigation Issues"
+ },
+ {
+ "line": 185,
+ "level": 3,
+ "text": "Problem: Navigation Not Working"
+ },
+ {
+ "line": 238,
+ "level": 3,
+ "text": "Problem: Navigation Redirects Unexpectedly"
+ },
+ {
+ "line": 283,
+ "level": 2,
+ "text": "Data Loading Problems"
+ },
+ {
+ "line": 285,
+ "level": 3,
+ "text": "Problem: Route Data Not Loading"
+ },
+ {
+ "line": 355,
+ "level": 2,
+ "text": "Search Parameters Issues"
+ },
+ {
+ "line": 357,
+ "level": 3,
+ "text": "Problem: Search Params Not Updating"
+ },
+ {
+ "line": 421,
+ "level": 2,
+ "text": "Performance Issues"
+ },
+ {
+ "line": 423,
+ "level": 3,
+ "text": "Problem: Excessive Re-renders"
+ },
+ {
+ "line": 490,
+ "level": 3,
+ "text": "Problem: Memory Leaks"
+ },
+ {
+ "line": 537,
+ "level": 2,
+ "text": "TypeScript Issues"
+ },
+ {
+ "line": 539,
+ "level": 3,
+ "text": "Problem: Type Errors with Router"
+ },
+ {
+ "line": 563,
+ "level": 1,
+ "text": "Check if route types are being generated"
+ },
+ {
+ "line": 566,
+ "level": 1,
+ "text": "Regenerate route types if needed"
+ },
+ {
+ "line": 587,
+ "level": 2,
+ "text": "Systematic Debugging Process"
+ },
+ {
+ "line": 589,
+ "level": 3,
+ "text": "1. Information Gathering"
+ },
+ {
+ "line": 615,
+ "level": 3,
+ "text": "2. Isolation Testing"
+ },
+ {
+ "line": 637,
+ "level": 3,
+ "text": "3. Step-by-Step Debugging"
+ },
+ {
+ "line": 647,
+ "level": 2,
+ "text": "Browser Debugging Tips"
+ },
+ {
+ "line": 649,
+ "level": 3,
+ "text": "Console Commands"
+ },
+ {
+ "line": 670,
+ "level": 3,
+ "text": "Network Tab"
+ },
+ {
+ "line": 678,
+ "level": 3,
+ "text": "React DevTools"
+ },
+ {
+ "line": 686,
+ "level": 2,
+ "text": "Common Error Messages"
+ },
+ {
+ "line": 688,
+ "level": 3,
+ "text": "\"Route not found\""
+ },
+ {
+ "line": 694,
+ "level": 3,
+ "text": "\"Cannot read property 'useParams' of undefined\""
+ },
+ {
+ "line": 700,
+ "level": 3,
+ "text": "\"Invalid search params\""
+ },
+ {
+ "line": 706,
+ "level": 3,
+ "text": "\"Navigation was interrupted\""
+ },
+ {
+ "line": 714,
+ "level": 2,
+ "text": "Performance Monitoring"
+ },
+ {
+ "line": 716,
+ "level": 3,
+ "text": "Enable Performance Tracking"
+ },
+ {
+ "line": 734,
+ "level": 3,
+ "text": "Monitor Route Loading Times"
+ },
+ {
+ "line": 752,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 764,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/deploy-to-production.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Netlify Deployment"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "1. Create `_redirects` File"
+ },
+ {
+ "line": 23,
+ "level": 3,
+ "text": "2. Alternative: `netlify.toml`"
+ },
+ {
+ "line": 38,
+ "level": 3,
+ "text": "3. For TanStack Start (SSR)"
+ },
+ {
+ "line": 61,
+ "level": 2,
+ "text": "Cloudflare Pages"
+ },
+ {
+ "line": 63,
+ "level": 3,
+ "text": "1. Create `_redirects` File"
+ },
+ {
+ "line": 71,
+ "level": 3,
+ "text": "2. Alternative: `_routes.json`"
+ },
+ {
+ "line": 83,
+ "level": 3,
+ "text": "3. For TanStack Start (SSR)"
+ },
+ {
+ "line": 94,
+ "level": 3,
+ "text": "4. Deploy via Git"
+ },
+ {
+ "line": 102,
+ "level": 3,
+ "text": "5. Deploy via Wrangler CLI"
+ },
+ {
+ "line": 105,
+ "level": 1,
+ "text": "Install Wrangler"
+ },
+ {
+ "line": 108,
+ "level": 1,
+ "text": "Deploy"
+ },
+ {
+ "line": 114,
+ "level": 2,
+ "text": "Vercel Deployment"
+ },
+ {
+ "line": 116,
+ "level": 3,
+ "text": "1. Create `vercel.json`"
+ },
+ {
+ "line": 131,
+ "level": 3,
+ "text": "2. For TanStack Start (SSR) Applications"
+ },
+ {
+ "line": 151,
+ "level": 3,
+ "text": "3. Build Configuration"
+ },
+ {
+ "line": 164,
+ "level": 3,
+ "text": "4. Deploy"
+ },
+ {
+ "line": 167,
+ "level": 1,
+ "text": "Install Vercel CLI"
+ },
+ {
+ "line": 170,
+ "level": 1,
+ "text": "Deploy"
+ },
+ {
+ "line": 176,
+ "level": 2,
+ "text": "GitHub Pages"
+ },
+ {
+ "line": 178,
+ "level": 3,
+ "text": "1. Create `404.html`"
+ },
+ {
+ "line": 183,
+ "level": 1,
+ "text": "After building"
+ },
+ {
+ "line": 187,
+ "level": 3,
+ "text": "2. Update `vite.config.js`"
+ },
+ {
+ "line": 209,
+ "level": 3,
+ "text": "3. GitHub Actions Workflow"
+ },
+ {
+ "line": 250,
+ "level": 2,
+ "text": "Firebase Hosting"
+ },
+ {
+ "line": 252,
+ "level": 3,
+ "text": "1. Create `firebase.json`"
+ },
+ {
+ "line": 269,
+ "level": 3,
+ "text": "2. Deploy"
+ },
+ {
+ "line": 272,
+ "level": 1,
+ "text": "Install Firebase CLI"
+ },
+ {
+ "line": 275,
+ "level": 1,
+ "text": "Login and initialize"
+ },
+ {
+ "line": 279,
+ "level": 1,
+ "text": "Build and deploy"
+ },
+ {
+ "line": 286,
+ "level": 2,
+ "text": "Apache Server"
+ },
+ {
+ "line": 303,
+ "level": 2,
+ "text": "Nginx"
+ },
+ {
+ "line": 328,
+ "level": 2,
+ "text": "Docker Deployment"
+ },
+ {
+ "line": 330,
+ "level": 3,
+ "text": "1. Create `Dockerfile`"
+ },
+ {
+ "line": 333,
+ "level": 1,
+ "text": "Build stage"
+ },
+ {
+ "line": 341,
+ "level": 1,
+ "text": "Production stage"
+ },
+ {
+ "line": 349,
+ "level": 3,
+ "text": "2. Create `nginx.conf`"
+ },
+ {
+ "line": 364,
+ "level": 3,
+ "text": "3. Build and Run"
+ },
+ {
+ "line": 373,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 385,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 387,
+ "level": 3,
+ "text": "404 Errors on Page Refresh"
+ },
+ {
+ "line": 395,
+ "level": 3,
+ "text": "App Works Locally But Breaks When Deployed"
+ },
+ {
+ "line": 421,
+ "level": 3,
+ "text": "Assets Not Loading (CSS/JS 404s)"
+ },
+ {
+ "line": 433,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 446,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/install.md",
+ "headings": [
+ {
+ "line": 5,
+ "level": 2,
+ "text": "Prerequisites"
+ },
+ {
+ "line": 11,
+ "level": 2,
+ "text": "Installation Steps"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/integrate-chakra-ui.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 3,
+ "text": "What You'll Accomplish"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Installation and Setup"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "Step 1: Install Chakra UI Dependencies"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "Step 2: Set Up Chakra Provider"
+ },
+ {
+ "line": 89,
+ "level": 3,
+ "text": "Step 3: Update Root Route"
+ },
+ {
+ "line": 109,
+ "level": 2,
+ "text": "Creating Router-Compatible Components"
+ },
+ {
+ "line": 111,
+ "level": 3,
+ "text": "Step 1: Create Router-Compatible Chakra Components"
+ },
+ {
+ "line": 141,
+ "level": 3,
+ "text": "Step 2: Create Navigation Components"
+ },
+ {
+ "line": 296,
+ "level": 3,
+ "text": "Step 3: Create Breadcrumb Navigation"
+ },
+ {
+ "line": 367,
+ "level": 2,
+ "text": "Responsive Design Patterns"
+ },
+ {
+ "line": 369,
+ "level": 3,
+ "text": "Step 1: Create Responsive Layout Component"
+ },
+ {
+ "line": 423,
+ "level": 3,
+ "text": "Step 2: Create Responsive Card Grid"
+ },
+ {
+ "line": 462,
+ "level": 2,
+ "text": "Complete Usage Examples"
+ },
+ {
+ "line": 464,
+ "level": 3,
+ "text": "Step 1: Posts List Page"
+ },
+ {
+ "line": 590,
+ "level": 3,
+ "text": "Step 2: Post Detail Page"
+ },
+ {
+ "line": 694,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 696,
+ "level": 3,
+ "text": "Theme Provider Issues"
+ },
+ {
+ "line": 722,
+ "level": 3,
+ "text": "TypeScript Errors with Router Integration"
+ },
+ {
+ "line": 741,
+ "level": 3,
+ "text": "Color Mode Persistence"
+ },
+ {
+ "line": 760,
+ "level": 3,
+ "text": "Responsive Design Issues"
+ },
+ {
+ "line": 784,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 788,
+ "level": 3,
+ "text": "Functionality"
+ },
+ {
+ "line": 795,
+ "level": 3,
+ "text": "Accessibility"
+ },
+ {
+ "line": 802,
+ "level": 3,
+ "text": "Performance"
+ },
+ {
+ "line": 809,
+ "level": 3,
+ "text": "Responsiveness"
+ },
+ {
+ "line": 818,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/integrate-framer-motion.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 3,
+ "text": "What You'll Accomplish"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Installation and Setup"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "Step 1: Install Framer Motion"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "Step 2: Verify Version Compatibility"
+ },
+ {
+ "line": 47,
+ "level": 2,
+ "text": "Route Transition Animations"
+ },
+ {
+ "line": 49,
+ "level": 3,
+ "text": "Step 1: Create Animated Route Wrapper"
+ },
+ {
+ "line": 110,
+ "level": 3,
+ "text": "Step 2: Set Up Route Animation Container"
+ },
+ {
+ "line": 135,
+ "level": 3,
+ "text": "Step 3: Update Root Route for Animations"
+ },
+ {
+ "line": 155,
+ "level": 3,
+ "text": "Step 4: Use Animations in Routes"
+ },
+ {
+ "line": 208,
+ "level": 2,
+ "text": "Animated Navigation Components"
+ },
+ {
+ "line": 210,
+ "level": 3,
+ "text": "Step 1: Create Animated Tab Navigation"
+ },
+ {
+ "line": 265,
+ "level": 3,
+ "text": "Step 2: Create Sliding Mobile Menu"
+ },
+ {
+ "line": 368,
+ "level": 3,
+ "text": "Step 3: Create Floating Action Button with Animations"
+ },
+ {
+ "line": 415,
+ "level": 2,
+ "text": "Advanced Animation Patterns"
+ },
+ {
+ "line": 417,
+ "level": 3,
+ "text": "Step 1: Shared Element Transitions"
+ },
+ {
+ "line": 477,
+ "level": 3,
+ "text": "Step 2: Route-Based Animation Variants"
+ },
+ {
+ "line": 540,
+ "level": 3,
+ "text": "Step 3: Loading Animations"
+ },
+ {
+ "line": 584,
+ "level": 2,
+ "text": "Complete Example"
+ },
+ {
+ "line": 586,
+ "level": 3,
+ "text": "App with Full Animation Integration"
+ },
+ {
+ "line": 663,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 665,
+ "level": 3,
+ "text": "Animations Not Triggering"
+ },
+ {
+ "line": 691,
+ "level": 3,
+ "text": "Performance Issues"
+ },
+ {
+ "line": 718,
+ "level": 3,
+ "text": "Layout Shift Issues"
+ },
+ {
+ "line": 739,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 743,
+ "level": 3,
+ "text": "Performance"
+ },
+ {
+ "line": 750,
+ "level": 3,
+ "text": "User Experience"
+ },
+ {
+ "line": 757,
+ "level": 3,
+ "text": "Accessibility"
+ },
+ {
+ "line": 764,
+ "level": 3,
+ "text": "Technical"
+ },
+ {
+ "line": 773,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/integrate-material-ui.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 3,
+ "text": "What You'll Accomplish"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Installation and Setup"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "Step 1: Install Material-UI Dependencies"
+ },
+ {
+ "line": 37,
+ "level": 3,
+ "text": "Step 2: Set Up Theme Provider"
+ },
+ {
+ "line": 96,
+ "level": 3,
+ "text": "Step 3: Update Root Route"
+ },
+ {
+ "line": 118,
+ "level": 2,
+ "text": "Creating Router-Compatible MUI Components"
+ },
+ {
+ "line": 120,
+ "level": 3,
+ "text": "Step 1: Create Typed MUI Link Component"
+ },
+ {
+ "line": 138,
+ "level": 3,
+ "text": "Step 2: Create Typed MUI Button Component"
+ },
+ {
+ "line": 154,
+ "level": 3,
+ "text": "Step 3: Create Advanced Navigation Components"
+ },
+ {
+ "line": 172,
+ "level": 2,
+ "text": "Implementing Navigation with Active States"
+ },
+ {
+ "line": 174,
+ "level": 3,
+ "text": "Step 1: Create Navigation Tabs with Active States"
+ },
+ {
+ "line": 222,
+ "level": 3,
+ "text": "Step 2: Create Navigation Drawer"
+ },
+ {
+ "line": 303,
+ "level": 3,
+ "text": "Step 3: Create App Bar with Navigation"
+ },
+ {
+ "line": 424,
+ "level": 2,
+ "text": "Usage Examples"
+ },
+ {
+ "line": 426,
+ "level": 3,
+ "text": "Complete Page Example"
+ },
+ {
+ "line": 511,
+ "level": 3,
+ "text": "Layout with Navigation"
+ },
+ {
+ "line": 556,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 558,
+ "level": 3,
+ "text": "TypeScript Errors with Component Props"
+ },
+ {
+ "line": 576,
+ "level": 3,
+ "text": "Styling Conflicts"
+ },
+ {
+ "line": 612,
+ "level": 3,
+ "text": "Theme Not Applied Correctly"
+ },
+ {
+ "line": 638,
+ "level": 3,
+ "text": "Performance Issues with Large Apps"
+ },
+ {
+ "line": 678,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 682,
+ "level": 3,
+ "text": "Functionality"
+ },
+ {
+ "line": 689,
+ "level": 3,
+ "text": "Performance"
+ },
+ {
+ "line": 696,
+ "level": 3,
+ "text": "Styling"
+ },
+ {
+ "line": 703,
+ "level": 3,
+ "text": "Accessibility"
+ },
+ {
+ "line": 712,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/integrate-shadcn-ui.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 3,
+ "text": "What You'll Accomplish"
+ },
+ {
+ "line": 23,
+ "level": 2,
+ "text": "Installation and Setup"
+ },
+ {
+ "line": 25,
+ "level": 3,
+ "text": "Step 1: Install Shadcn/ui"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "Step 2: Configure components.json"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "Step 3: Add Essential Components"
+ },
+ {
+ "line": 75,
+ "level": 2,
+ "text": "Fixing Animation Issues"
+ },
+ {
+ "line": 77,
+ "level": 3,
+ "text": "Step 1: Set Up Proper DOM Structure"
+ },
+ {
+ "line": 103,
+ "level": 3,
+ "text": "Step 2: Create Router-Compatible Sheet Component"
+ },
+ {
+ "line": 156,
+ "level": 3,
+ "text": "Step 3: Create Router-Compatible Dialog Component"
+ },
+ {
+ "line": 209,
+ "level": 2,
+ "text": "Creating Navigation Components"
+ },
+ {
+ "line": 211,
+ "level": 3,
+ "text": "Step 1: Router-Compatible Navigation Menu"
+ },
+ {
+ "line": 265,
+ "level": 3,
+ "text": "Step 2: Create Router-Compatible Button Links"
+ },
+ {
+ "line": 281,
+ "level": 3,
+ "text": "Step 3: Usage Example"
+ },
+ {
+ "line": 336,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 338,
+ "level": 3,
+ "text": "Animation Components Not Working"
+ },
+ {
+ "line": 369,
+ "level": 3,
+ "text": "TypeScript Errors with Router Integration"
+ },
+ {
+ "line": 383,
+ "level": 3,
+ "text": "Styling Conflicts"
+ },
+ {
+ "line": 410,
+ "level": 3,
+ "text": "Dark Mode Integration"
+ },
+ {
+ "line": 486,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 490,
+ "level": 3,
+ "text": "Styling"
+ },
+ {
+ "line": 498,
+ "level": 3,
+ "text": "Functionality"
+ },
+ {
+ "line": 505,
+ "level": 3,
+ "text": "Performance"
+ },
+ {
+ "line": 513,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/migrate-from-react-router.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 3,
+ "text": "What You'll Accomplish"
+ },
+ {
+ "line": 25,
+ "level": 2,
+ "text": "Complete Migration Process"
+ },
+ {
+ "line": 27,
+ "level": 3,
+ "text": "Step 1: Prepare for Migration"
+ },
+ {
+ "line": 41,
+ "level": 1,
+ "text": "Install TanStack Router"
+ },
+ {
+ "line": 44,
+ "level": 1,
+ "text": "Install development dependencies"
+ },
+ {
+ "line": 67,
+ "level": 3,
+ "text": "Step 2: Create TanStack Router Configuration"
+ },
+ {
+ "line": 87,
+ "level": 3,
+ "text": "Step 3: Convert Your React Router v7 Structure"
+ },
+ {
+ "line": 258,
+ "level": 3,
+ "text": "Step 4: Handle React Router v7 Framework Features"
+ },
+ {
+ "line": 344,
+ "level": 3,
+ "text": "Step 5: Update Navigation Components"
+ },
+ {
+ "line": 396,
+ "level": 3,
+ "text": "Step 6: Handle React Router v7 Specific Features"
+ },
+ {
+ "line": 450,
+ "level": 3,
+ "text": "Step 7: Update Your Main Router Setup"
+ },
+ {
+ "line": 483,
+ "level": 3,
+ "text": "Step 8: Handle Search Parameters"
+ },
+ {
+ "line": 528,
+ "level": 3,
+ "text": "Step 9: Remove React Router Dependencies"
+ },
+ {
+ "line": 543,
+ "level": 1,
+ "text": "Find remaining React Router imports"
+ },
+ {
+ "line": 549,
+ "level": 3,
+ "text": "Step 10: Add Advanced Type Safety"
+ },
+ {
+ "line": 586,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 590,
+ "level": 3,
+ "text": "Router Configuration"
+ },
+ {
+ "line": 597,
+ "level": 3,
+ "text": "Route Migration"
+ },
+ {
+ "line": 605,
+ "level": 3,
+ "text": "Feature Migration"
+ },
+ {
+ "line": 613,
+ "level": 3,
+ "text": "Navigation Updates"
+ },
+ {
+ "line": 620,
+ "level": 3,
+ "text": "Code Cleanup"
+ },
+ {
+ "line": 628,
+ "level": 3,
+ "text": "Testing"
+ },
+ {
+ "line": 640,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 642,
+ "level": 3,
+ "text": "Error: \"Cannot use useNavigate outside of context\""
+ },
+ {
+ "line": 655,
+ "level": 3,
+ "text": "TypeScript Errors: Route Parameters"
+ },
+ {
+ "line": 672,
+ "level": 3,
+ "text": "React Router v7 Framework Features Not Working"
+ },
+ {
+ "line": 683,
+ "level": 3,
+ "text": "Routes Not Matching"
+ },
+ {
+ "line": 696,
+ "level": 3,
+ "text": "React Router v7 Simplified APIs Not Translating"
+ },
+ {
+ "line": 708,
+ "level": 2,
+ "text": "React Router v7 vs TanStack Router Feature Comparison"
+ },
+ {
+ "line": 723,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 727,
+ "level": 3,
+ "text": "Advanced Features to Explore"
+ },
+ {
+ "line": 737,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/navigate-with-search-params.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 29,
+ "level": 2,
+ "text": "Navigation Methods"
+ },
+ {
+ "line": 31,
+ "level": 3,
+ "text": "Using Link Components"
+ },
+ {
+ "line": 33,
+ "level": 4,
+ "text": "Basic Search Parameter Updates"
+ },
+ {
+ "line": 55,
+ "level": 4,
+ "text": "Functional Search Parameter Updates"
+ },
+ {
+ "line": 94,
+ "level": 4,
+ "text": "Preserving All Search Parameters"
+ },
+ {
+ "line": 118,
+ "level": 4,
+ "text": "Navigation with Route Changes"
+ },
+ {
+ "line": 159,
+ "level": 3,
+ "text": "Programmatic Navigation"
+ },
+ {
+ "line": 161,
+ "level": 4,
+ "text": "Using useNavigate Hook"
+ },
+ {
+ "line": 211,
+ "level": 4,
+ "text": "Navigation with Router Instance"
+ },
+ {
+ "line": 273,
+ "level": 2,
+ "text": "Advanced Navigation Patterns"
+ },
+ {
+ "line": 275,
+ "level": 3,
+ "text": "Conditional Navigation"
+ },
+ {
+ "line": 300,
+ "level": 2,
+ "text": "Common Patterns"
+ },
+ {
+ "line": 302,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 304,
+ "level": 3,
+ "text": "Search Parameters Not Updating"
+ },
+ {
+ "line": 318,
+ "level": 3,
+ "text": "Losing Existing Search Parameters"
+ },
+ {
+ "line": 332,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 343,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-auth-providers.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Auth0 Integration"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "1. Install Auth0"
+ },
+ {
+ "line": 21,
+ "level": 3,
+ "text": "2. Set Up Environment Variables"
+ },
+ {
+ "line": 30,
+ "level": 3,
+ "text": "3. Create Auth0 Wrapper"
+ },
+ {
+ "line": 91,
+ "level": 3,
+ "text": "4. Update App Configuration"
+ },
+ {
+ "line": 125,
+ "level": 3,
+ "text": "5. Create Protected Routes"
+ },
+ {
+ "line": 146,
+ "level": 2,
+ "text": "Clerk Integration"
+ },
+ {
+ "line": 148,
+ "level": 3,
+ "text": "1. Install Clerk"
+ },
+ {
+ "line": 154,
+ "level": 3,
+ "text": "2. Set Up Environment Variables"
+ },
+ {
+ "line": 162,
+ "level": 3,
+ "text": "3. Create Clerk Wrapper"
+ },
+ {
+ "line": 204,
+ "level": 3,
+ "text": "4. Create Clerk Auth Routes"
+ },
+ {
+ "line": 236,
+ "level": 3,
+ "text": "5. Update App Configuration"
+ },
+ {
+ "line": 270,
+ "level": 3,
+ "text": "6. Create Protected Routes"
+ },
+ {
+ "line": 294,
+ "level": 2,
+ "text": "Supabase Integration"
+ },
+ {
+ "line": 296,
+ "level": 3,
+ "text": "1. Install Supabase"
+ },
+ {
+ "line": 302,
+ "level": 3,
+ "text": "2. Set Up Environment Variables"
+ },
+ {
+ "line": 311,
+ "level": 3,
+ "text": "3. Create Supabase Client"
+ },
+ {
+ "line": 402,
+ "level": 3,
+ "text": "4. Create Login Component"
+ },
+ {
+ "line": 501,
+ "level": 3,
+ "text": "5. Update App Configuration"
+ },
+ {
+ "line": 537,
+ "level": 2,
+ "text": "Provider Comparison"
+ },
+ {
+ "line": 549,
+ "level": 3,
+ "text": "When to Choose Each:"
+ },
+ {
+ "line": 557,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 559,
+ "level": 3,
+ "text": "Provider Context Not Available"
+ },
+ {
+ "line": 579,
+ "level": 3,
+ "text": "Infinite Loading States"
+ },
+ {
+ "line": 597,
+ "level": 3,
+ "text": "Redirect Loops with Auth0"
+ },
+ {
+ "line": 618,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 630,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-authentication.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Create Authentication Context"
+ },
+ {
+ "line": 120,
+ "level": 2,
+ "text": "Configure Router Context"
+ },
+ {
+ "line": 122,
+ "level": 3,
+ "text": "1. Set Up Router Context"
+ },
+ {
+ "line": 151,
+ "level": 3,
+ "text": "2. Configure Router"
+ },
+ {
+ "line": 174,
+ "level": 3,
+ "text": "3. Connect App with Authentication"
+ },
+ {
+ "line": 201,
+ "level": 2,
+ "text": "Create Protected Routes"
+ },
+ {
+ "line": 203,
+ "level": 3,
+ "text": "1. Create Authentication Layout Route"
+ },
+ {
+ "line": 226,
+ "level": 3,
+ "text": "2. Create Login Route"
+ },
+ {
+ "line": 327,
+ "level": 3,
+ "text": "3. Create Protected Dashboard"
+ },
+ {
+ "line": 368,
+ "level": 2,
+ "text": "Add Authentication Persistence"
+ },
+ {
+ "line": 421,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 436,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 438,
+ "level": 3,
+ "text": "Authentication Context Not Available"
+ },
+ {
+ "line": 444,
+ "level": 3,
+ "text": "User Logged Out on Page Refresh"
+ },
+ {
+ "line": 450,
+ "level": 3,
+ "text": "Protected Route Flashing Before Redirect"
+ },
+ {
+ "line": 469,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 481,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-basic-search-params.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 41,
+ "level": 2,
+ "text": "Why Use Schema Validation for Search Parameters?"
+ },
+ {
+ "line": 51,
+ "level": 2,
+ "text": "Validation Library Setup"
+ },
+ {
+ "line": 76,
+ "level": 2,
+ "text": "Step-by-Step Setup with Zod"
+ },
+ {
+ "line": 80,
+ "level": 3,
+ "text": "Step 1: Install Dependencies"
+ },
+ {
+ "line": 86,
+ "level": 3,
+ "text": "Step 2: Define Your Search Schema"
+ },
+ {
+ "line": 116,
+ "level": 3,
+ "text": "Step 3: Add Schema Validation to Route"
+ },
+ {
+ "line": 129,
+ "level": 3,
+ "text": "Step 4: Read Search Parameters in Components"
+ },
+ {
+ "line": 163,
+ "level": 2,
+ "text": "Common Search Parameter Patterns"
+ },
+ {
+ "line": 165,
+ "level": 3,
+ "text": "Pagination with Constraints"
+ },
+ {
+ "line": 195,
+ "level": 3,
+ "text": "Enum Validation with Defaults"
+ },
+ {
+ "line": 213,
+ "level": 3,
+ "text": "Complex Data Types"
+ },
+ {
+ "line": 242,
+ "level": 3,
+ "text": "Date and Advanced Types"
+ },
+ {
+ "line": 253,
+ "level": 2,
+ "text": "Reading Search Parameters Outside Components"
+ },
+ {
+ "line": 255,
+ "level": 3,
+ "text": "Using getRouteApi"
+ },
+ {
+ "line": 281,
+ "level": 3,
+ "text": "Using useSearch with from"
+ },
+ {
+ "line": 293,
+ "level": 2,
+ "text": "Manual Validation (Understanding the Primitives)"
+ },
+ {
+ "line": 319,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 329,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 331,
+ "level": 3,
+ "text": "Problem: Search Parameters Cause TypeScript Errors"
+ },
+ {
+ "line": 355,
+ "level": 3,
+ "text": "Problem: Invalid URL Parameters Break the App"
+ },
+ {
+ "line": 373,
+ "level": 3,
+ "text": "Problem: Optional Parameters Are Required by TypeScript"
+ },
+ {
+ "line": 389,
+ "level": 3,
+ "text": "Problem: Complex Objects Not Validating"
+ },
+ {
+ "line": 413,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 421,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-rbac.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Extend Authentication Context"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "1. Add Roles to User Type"
+ },
+ {
+ "line": 116,
+ "level": 3,
+ "text": "2. Update Router Context Types"
+ },
+ {
+ "line": 155,
+ "level": 2,
+ "text": "Create Role-Protected Routes"
+ },
+ {
+ "line": 157,
+ "level": 3,
+ "text": "1. Admin-Only Routes"
+ },
+ {
+ "line": 190,
+ "level": 3,
+ "text": "2. Multiple Role Access"
+ },
+ {
+ "line": 227,
+ "level": 3,
+ "text": "3. Permission-Based Routes"
+ },
+ {
+ "line": 253,
+ "level": 2,
+ "text": "Create Specific Protected Pages"
+ },
+ {
+ "line": 255,
+ "level": 3,
+ "text": "1. Admin Dashboard"
+ },
+ {
+ "line": 310,
+ "level": 3,
+ "text": "2. User Management Page"
+ },
+ {
+ "line": 396,
+ "level": 2,
+ "text": "Create Unauthorized Page"
+ },
+ {
+ "line": 483,
+ "level": 2,
+ "text": "Component-Level Permission Checks"
+ },
+ {
+ "line": 485,
+ "level": 3,
+ "text": "1. Conditional Rendering Hook"
+ },
+ {
+ "line": 506,
+ "level": 3,
+ "text": "2. Permission Guard Component"
+ },
+ {
+ "line": 547,
+ "level": 3,
+ "text": "3. Using Permission Guards"
+ },
+ {
+ "line": 588,
+ "level": 2,
+ "text": "Advanced Permission Patterns"
+ },
+ {
+ "line": 590,
+ "level": 3,
+ "text": "1. Resource-Based Permissions"
+ },
+ {
+ "line": 621,
+ "level": 3,
+ "text": "2. Time-Based Permissions"
+ },
+ {
+ "line": 647,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 649,
+ "level": 3,
+ "text": "Role/Permission Data Not Loading"
+ },
+ {
+ "line": 673,
+ "level": 3,
+ "text": "Permission Checks Too Restrictive"
+ },
+ {
+ "line": 694,
+ "level": 3,
+ "text": "Performance Issues with Many Permission Checks"
+ },
+ {
+ "line": 722,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 734,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-ssr.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Quick Start with TanStack Start"
+ },
+ {
+ "line": 17,
+ "level": 2,
+ "text": "Manual SSR Setup"
+ },
+ {
+ "line": 19,
+ "level": 3,
+ "text": "1. Install Dependencies"
+ },
+ {
+ "line": 26,
+ "level": 3,
+ "text": "2. Create Shared Router Configuration"
+ },
+ {
+ "line": 50,
+ "level": 3,
+ "text": "3. Set Up Server Entry Point"
+ },
+ {
+ "line": 125,
+ "level": 3,
+ "text": "4. Set Up Client Entry Point"
+ },
+ {
+ "line": 138,
+ "level": 3,
+ "text": "5. Configure Vite for SSR"
+ },
+ {
+ "line": 191,
+ "level": 3,
+ "text": "6. Update Root Route for HTML Structure"
+ },
+ {
+ "line": 270,
+ "level": 3,
+ "text": "7. Create Express Server"
+ },
+ {
+ "line": 368,
+ "level": 3,
+ "text": "8. Update Package Scripts"
+ },
+ {
+ "line": 382,
+ "level": 2,
+ "text": "Streaming SSR"
+ },
+ {
+ "line": 401,
+ "level": 3,
+ "text": "Streaming Vite Configuration"
+ },
+ {
+ "line": 424,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 428,
+ "level": 3,
+ "text": "React Import Errors"
+ },
+ {
+ "line": 444,
+ "level": 3,
+ "text": "Hydration Mismatches"
+ },
+ {
+ "line": 464,
+ "level": 3,
+ "text": "Bun Runtime Issues"
+ },
+ {
+ "line": 478,
+ "level": 3,
+ "text": "Module Resolution Errors"
+ },
+ {
+ "line": 500,
+ "level": 3,
+ "text": "Streaming Configuration Issues"
+ },
+ {
+ "line": 518,
+ "level": 3,
+ "text": "Build Output Issues"
+ },
+ {
+ "line": 538,
+ "level": 2,
+ "text": "Related Resources"
+ },
+ {
+ "line": 544,
+ "level": 2,
+ "text": "Common Next Steps"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/setup-testing.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "How to Set Up Testing with Code-Based Routing"
+ },
+ {
+ "line": 5,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Configure Test Framework"
+ },
+ {
+ "line": 15,
+ "level": 3,
+ "text": "1. Install Dependencies"
+ },
+ {
+ "line": 29,
+ "level": 3,
+ "text": "2. Configure Vitest"
+ },
+ {
+ "line": 48,
+ "level": 3,
+ "text": "3. Create Test Setup"
+ },
+ {
+ "line": 61,
+ "level": 2,
+ "text": "Code-Based Router Testing Patterns"
+ },
+ {
+ "line": 65,
+ "level": 3,
+ "text": "1. TanStack Router Internal Pattern (Recommended)"
+ },
+ {
+ "line": 115,
+ "level": 3,
+ "text": "2. Alternative: Router Test Utilities (For Simpler Cases)"
+ },
+ {
+ "line": 197,
+ "level": 3,
+ "text": "2. Mock Route Factory"
+ },
+ {
+ "line": 234,
+ "level": 2,
+ "text": "Test Code-Based Route Components"
+ },
+ {
+ "line": 236,
+ "level": 3,
+ "text": "1. Basic Component Testing"
+ },
+ {
+ "line": 287,
+ "level": 3,
+ "text": "2. Testing Route Parameters"
+ },
+ {
+ "line": 348,
+ "level": 2,
+ "text": "Test Navigation"
+ },
+ {
+ "line": 350,
+ "level": 3,
+ "text": "1. Testing Link Components"
+ },
+ {
+ "line": 457,
+ "level": 3,
+ "text": "2. Testing Route Guards"
+ },
+ {
+ "line": 533,
+ "level": 2,
+ "text": "Test Data Loading"
+ },
+ {
+ "line": 535,
+ "level": 3,
+ "text": "1. Testing Loaders"
+ },
+ {
+ "line": 614,
+ "level": 3,
+ "text": "2. Testing with React Query"
+ },
+ {
+ "line": 684,
+ "level": 2,
+ "text": "Test with Context"
+ },
+ {
+ "line": 686,
+ "level": 3,
+ "text": "1. Testing Router Context"
+ },
+ {
+ "line": 749,
+ "level": 2,
+ "text": "E2E Testing with Playwright"
+ },
+ {
+ "line": 751,
+ "level": 3,
+ "text": "1. Playwright Configuration"
+ },
+ {
+ "line": 783,
+ "level": 3,
+ "text": "2. E2E Test Example"
+ },
+ {
+ "line": 844,
+ "level": 2,
+ "text": "Code-Based Routing Testing Best Practices"
+ },
+ {
+ "line": 846,
+ "level": 3,
+ "text": "1. Test Organization"
+ },
+ {
+ "line": 866,
+ "level": 3,
+ "text": "2. Common Patterns"
+ },
+ {
+ "line": 911,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 913,
+ "level": 3,
+ "text": "Test Environment Issues"
+ },
+ {
+ "line": 928,
+ "level": 3,
+ "text": "Router Context Missing"
+ },
+ {
+ "line": 942,
+ "level": 3,
+ "text": "Async Data Loading"
+ },
+ {
+ "line": 956,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 969,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/share-search-params-across-routes.md",
+ "headings": [
+ {
+ "line": 5,
+ "level": 1,
+ "text": "How to Share Search Parameters Across Routes"
+ },
+ {
+ "line": 9,
+ "level": 2,
+ "text": "How Parameter Inheritance Works"
+ },
+ {
+ "line": 17,
+ "level": 2,
+ "text": "Global Parameters via Root Route"
+ },
+ {
+ "line": 80,
+ "level": 2,
+ "text": "Section-Specific Parameters via Layout Routes"
+ },
+ {
+ "line": 141,
+ "level": 2,
+ "text": "Common Use Cases"
+ },
+ {
+ "line": 161,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 163,
+ "level": 3,
+ "text": "Problem: Parameters Not Inheriting"
+ },
+ {
+ "line": 189,
+ "level": 3,
+ "text": "Problem: Navigation Loses Shared Parameters"
+ },
+ {
+ "line": 211,
+ "level": 3,
+ "text": "Problem: Type Errors with Inherited Parameters"
+ },
+ {
+ "line": 223,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 232,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 241,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/test-file-based-routing.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 13,
+ "level": 2,
+ "text": "Understanding File-Based Routing Testing"
+ },
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Setting Up File-Based Route Testing"
+ },
+ {
+ "line": 26,
+ "level": 3,
+ "text": "1. Install Test Dependencies"
+ },
+ {
+ "line": 34,
+ "level": 3,
+ "text": "2. Configure Test Environment"
+ },
+ {
+ "line": 64,
+ "level": 3,
+ "text": "3. Create Route Testing Utilities"
+ },
+ {
+ "line": 143,
+ "level": 2,
+ "text": "Testing File-Based Route Structure"
+ },
+ {
+ "line": 145,
+ "level": 3,
+ "text": "1. Test Route Tree Generation"
+ },
+ {
+ "line": 195,
+ "level": 3,
+ "text": "2. Test File Route Conventions"
+ },
+ {
+ "line": 246,
+ "level": 2,
+ "text": "Testing File-Based Route Components"
+ },
+ {
+ "line": 248,
+ "level": 3,
+ "text": "1. Test Individual Route Files"
+ },
+ {
+ "line": 286,
+ "level": 3,
+ "text": "2. Test Route-Specific Hooks"
+ },
+ {
+ "line": 332,
+ "level": 2,
+ "text": "Testing Route Navigation with File-Based Routes"
+ },
+ {
+ "line": 334,
+ "level": 3,
+ "text": "1. Test Link Navigation"
+ },
+ {
+ "line": 391,
+ "level": 3,
+ "text": "2. Test Programmatic Navigation"
+ },
+ {
+ "line": 433,
+ "level": 2,
+ "text": "Testing File-Based Route Guards and Loaders"
+ },
+ {
+ "line": 435,
+ "level": 3,
+ "text": "1. Test Route Guards"
+ },
+ {
+ "line": 472,
+ "level": 3,
+ "text": "2. Test Route Loaders"
+ },
+ {
+ "line": 524,
+ "level": 2,
+ "text": "Testing File Route Validation"
+ },
+ {
+ "line": 526,
+ "level": 3,
+ "text": "1. Test Search Parameter Validation"
+ },
+ {
+ "line": 567,
+ "level": 2,
+ "text": "Testing File Route Error Boundaries"
+ },
+ {
+ "line": 569,
+ "level": 3,
+ "text": "1. Test Route-Level Error Handling"
+ },
+ {
+ "line": 619,
+ "level": 2,
+ "text": "Testing with Generated Route Types"
+ },
+ {
+ "line": 621,
+ "level": 3,
+ "text": "1. Test Type Safety"
+ },
+ {
+ "line": 665,
+ "level": 2,
+ "text": "Testing Route Tree Changes"
+ },
+ {
+ "line": 667,
+ "level": 3,
+ "text": "1. Test Route Generation During Development"
+ },
+ {
+ "line": 705,
+ "level": 2,
+ "text": "E2E Testing for File-Based Routes"
+ },
+ {
+ "line": 707,
+ "level": 3,
+ "text": "1. Playwright Configuration for File-Based Routes"
+ },
+ {
+ "line": 755,
+ "level": 2,
+ "text": "Common File-Based Routing Testing Patterns"
+ },
+ {
+ "line": 757,
+ "level": 3,
+ "text": "1. Mock Route Files for Testing"
+ },
+ {
+ "line": 790,
+ "level": 3,
+ "text": "2. Test Route Discovery"
+ },
+ {
+ "line": 825,
+ "level": 2,
+ "text": "Best Practices for File-Based Route Testing"
+ },
+ {
+ "line": 827,
+ "level": 3,
+ "text": "1. Test Organization"
+ },
+ {
+ "line": 849,
+ "level": 3,
+ "text": "2. Common Test Patterns"
+ },
+ {
+ "line": 885,
+ "level": 2,
+ "text": "Troubleshooting File-Based Route Testing"
+ },
+ {
+ "line": 887,
+ "level": 3,
+ "text": "Common Issues"
+ },
+ {
+ "line": 939,
+ "level": 2,
+ "text": "Next Steps"
+ },
+ {
+ "line": 947,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/use-environment-variables.md",
+ "headings": [
+ {
+ "line": 7,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 12,
+ "level": 1,
+ "text": ".env"
+ },
+ {
+ "line": 31,
+ "level": 2,
+ "text": "Environment Variable Access Patterns"
+ },
+ {
+ "line": 33,
+ "level": 3,
+ "text": "Vite-Based Projects (Most Common)"
+ },
+ {
+ "line": 66,
+ "level": 3,
+ "text": "Webpack-Based Projects"
+ },
+ {
+ "line": 97,
+ "level": 3,
+ "text": "Rspack-Based Projects"
+ },
+ {
+ "line": 102,
+ "level": 1,
+ "text": ".env"
+ },
+ {
+ "line": 121,
+ "level": 3,
+ "text": "ESBuild Projects"
+ },
+ {
+ "line": 138,
+ "level": 2,
+ "text": "Common Patterns"
+ },
+ {
+ "line": 140,
+ "level": 3,
+ "text": "API Configuration in Route Loaders"
+ },
+ {
+ "line": 172,
+ "level": 3,
+ "text": "Environment-Based Route Configuration"
+ },
+ {
+ "line": 190,
+ "level": 3,
+ "text": "Feature Flags in Routes"
+ },
+ {
+ "line": 215,
+ "level": 3,
+ "text": "Authentication Configuration"
+ },
+ {
+ "line": 243,
+ "level": 3,
+ "text": "Search Params with Environment Config"
+ },
+ {
+ "line": 271,
+ "level": 2,
+ "text": "Environment File Setup"
+ },
+ {
+ "line": 273,
+ "level": 3,
+ "text": "File Hierarchy (Vite)"
+ },
+ {
+ "line": 284,
+ "level": 3,
+ "text": "Example Configuration"
+ },
+ {
+ "line": 289,
+ "level": 1,
+ "text": "API Configuration"
+ },
+ {
+ "line": 293,
+ "level": 1,
+ "text": "Feature Flags"
+ },
+ {
+ "line": 297,
+ "level": 1,
+ "text": "Auth Configuration (public keys only)"
+ },
+ {
+ "line": 301,
+ "level": 1,
+ "text": "Build Configuration"
+ },
+ {
+ "line": 309,
+ "level": 1,
+ "text": "Development overrides"
+ },
+ {
+ "line": 318,
+ "level": 1,
+ "text": "Production-specific"
+ },
+ {
+ "line": 324,
+ "level": 2,
+ "text": "Type Safety"
+ },
+ {
+ "line": 326,
+ "level": 3,
+ "text": "Vite TypeScript Declarations"
+ },
+ {
+ "line": 358,
+ "level": 3,
+ "text": "Runtime Validation"
+ },
+ {
+ "line": 407,
+ "level": 3,
+ "text": "Usage with Type Safety"
+ },
+ {
+ "line": 431,
+ "level": 2,
+ "text": "Bundler-Specific Configuration"
+ },
+ {
+ "line": 433,
+ "level": 3,
+ "text": "Vite Configuration"
+ },
+ {
+ "line": 456,
+ "level": 3,
+ "text": "Webpack Configuration"
+ },
+ {
+ "line": 477,
+ "level": 3,
+ "text": "Rspack Configuration"
+ },
+ {
+ "line": 500,
+ "level": 2,
+ "text": "Production Checklist"
+ },
+ {
+ "line": 511,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 513,
+ "level": 3,
+ "text": "Environment Variable is Undefined"
+ },
+ {
+ "line": 539,
+ "level": 1,
+ "text": "❌ Won't work (no prefix)"
+ },
+ {
+ "line": 542,
+ "level": 1,
+ "text": "✅ Works with Vite"
+ },
+ {
+ "line": 545,
+ "level": 1,
+ "text": "✅ Works with Rspack"
+ },
+ {
+ "line": 548,
+ "level": 1,
+ "text": "❌ Won't bundle the variable (assuming it is not set in the environment of the build)"
+ },
+ {
+ "line": 551,
+ "level": 1,
+ "text": "✅ Works with Vite and will bundle the variable for production"
+ },
+ {
+ "line": 554,
+ "level": 1,
+ "text": "✅ Works with Rspack and will bundle the variable for production"
+ },
+ {
+ "line": 558,
+ "level": 3,
+ "text": "Runtime Client Environment Variables at Runtime in Production"
+ },
+ {
+ "line": 592,
+ "level": 3,
+ "text": "Variable Not Updating"
+ },
+ {
+ "line": 603,
+ "level": 3,
+ "text": "TypeScript Errors"
+ },
+ {
+ "line": 615,
+ "level": 3,
+ "text": "Build Errors"
+ },
+ {
+ "line": 626,
+ "level": 3,
+ "text": "Security Issues"
+ },
+ {
+ "line": 637,
+ "level": 3,
+ "text": "Runtime vs Build-time Confusion"
+ },
+ {
+ "line": 647,
+ "level": 3,
+ "text": "Environment Variables are Always Strings"
+ },
+ {
+ "line": 679,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 685,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/validate-search-params.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "Quick Start"
+ },
+ {
+ "line": 77,
+ "level": 2,
+ "text": "Validation Library Options"
+ },
+ {
+ "line": 81,
+ "level": 3,
+ "text": "Zod (Recommended)"
+ },
+ {
+ "line": 102,
+ "level": 3,
+ "text": "Valibot"
+ },
+ {
+ "line": 123,
+ "level": 3,
+ "text": "ArkType"
+ },
+ {
+ "line": 143,
+ "level": 3,
+ "text": "Custom Validation Function"
+ },
+ {
+ "line": 187,
+ "level": 2,
+ "text": "Common Validation Patterns"
+ },
+ {
+ "line": 189,
+ "level": 3,
+ "text": "Required vs Optional Parameters"
+ },
+ {
+ "line": 208,
+ "level": 3,
+ "text": "Complex Data Types"
+ },
+ {
+ "line": 240,
+ "level": 3,
+ "text": "Input Transformation"
+ },
+ {
+ "line": 264,
+ "level": 2,
+ "text": "Error Handling Strategies"
+ },
+ {
+ "line": 266,
+ "level": 3,
+ "text": "Basic Error Handling"
+ },
+ {
+ "line": 312,
+ "level": 3,
+ "text": "Custom Error Messages"
+ },
+ {
+ "line": 339,
+ "level": 3,
+ "text": "Validation Error Recovery"
+ },
+ {
+ "line": 368,
+ "level": 2,
+ "text": "Advanced Validation Techniques"
+ },
+ {
+ "line": 370,
+ "level": 3,
+ "text": "Conditional Validation"
+ },
+ {
+ "line": 397,
+ "level": 3,
+ "text": "Schema Composition"
+ },
+ {
+ "line": 426,
+ "level": 3,
+ "text": "Performance Optimization"
+ },
+ {
+ "line": 458,
+ "level": 2,
+ "text": "Testing Search Parameter Validation"
+ },
+ {
+ "line": 505,
+ "level": 2,
+ "text": "Common Problems"
+ },
+ {
+ "line": 507,
+ "level": 3,
+ "text": "Problem: Validation errors break the entire route"
+ },
+ {
+ "line": 538,
+ "level": 3,
+ "text": "Problem: TypeScript errors with optional search parameters"
+ },
+ {
+ "line": 563,
+ "level": 3,
+ "text": "Problem: Search parameter arrays not parsing correctly"
+ },
+ {
+ "line": 592,
+ "level": 3,
+ "text": "Problem: Schema validation is too slow"
+ },
+ {
+ "line": 626,
+ "level": 2,
+ "text": "Common Next Steps"
+ },
+ {
+ "line": 637,
+ "level": 2,
+ "text": "Related Resources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/drafts/README.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "How-To Guide Drafts"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "File Naming Convention"
+ },
+ {
+ "line": 15,
+ "level": 2,
+ "text": "Current Drafts"
+ },
+ {
+ "line": 17,
+ "level": 3,
+ "text": "⏳ Ready for Implementation (Substantial Content Available)"
+ },
+ {
+ "line": 39,
+ "level": 2,
+ "text": "Implementation Workflow"
+ },
+ {
+ "line": 50,
+ "level": 2,
+ "text": "Benefits of This System"
+ },
+ {
+ "line": 58,
+ "level": 2,
+ "text": "Content Sources"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/drafts/build-search-filtering-systems.draft.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "DRAFT: Build Search-Based Filtering Systems"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Content Staged from navigate-with-search-params.md"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "Search Result Navigation"
+ },
+ {
+ "line": 62,
+ "level": 3,
+ "text": "Filter Navigation"
+ },
+ {
+ "line": 128,
+ "level": 3,
+ "text": "Programmatic Search Controls"
+ },
+ {
+ "line": 169,
+ "level": 2,
+ "text": "Implementation Notes"
+ },
+ {
+ "line": 171,
+ "level": 3,
+ "text": "Additional Content Needed:"
+ },
+ {
+ "line": 182,
+ "level": 3,
+ "text": "Cross-References to Add:"
+ },
+ {
+ "line": 189,
+ "level": 3,
+ "text": "README Update Required:"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/drafts/optimize-search-param-performance.draft.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "DRAFT: Optimize Search Parameter Performance"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Content Staged from navigate-with-search-params.md"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "Performance Issues with Functional Updates"
+ },
+ {
+ "line": 35,
+ "level": 3,
+ "text": "Navigation During Render"
+ },
+ {
+ "line": 67,
+ "level": 2,
+ "text": "Implementation Notes"
+ },
+ {
+ "line": 69,
+ "level": 3,
+ "text": "Additional Content Needed:"
+ },
+ {
+ "line": 80,
+ "level": 3,
+ "text": "Cross-References to Add:"
+ },
+ {
+ "line": 87,
+ "level": 3,
+ "text": "README Update Required:"
+ }
+ ]
+ },
+ {
+ "path": "framework/react/how-to/drafts/search-params-in-forms.draft.md",
+ "headings": [
+ {
+ "line": 1,
+ "level": 1,
+ "text": "DRAFT: Handle Search Parameters in Forms"
+ },
+ {
+ "line": 10,
+ "level": 2,
+ "text": "Content Staged from navigate-with-search-params.md"
+ },
+ {
+ "line": 12,
+ "level": 3,
+ "text": "Navigation with State Synchronization"
+ },
+ {
+ "line": 113,
+ "level": 3,
+ "text": "Form with Search Parameter Validation"
+ },
+ {
+ "line": 134,
+ "level": 2,
+ "text": "Implementation Notes"
+ },
+ {
+ "line": 136,
+ "level": 3,
+ "text": "Additional Content Needed:"
+ },
+ {
+ "line": 147,
+ "level": 3,
+ "text": "Cross-References to Add:"
+ },
+ {
+ "line": 154,
+ "level": 3,
+ "text": "README Update Required:"
+ }
+ ]
+ },
+ {
+ "path": "integrations/query.md",
+ "headings": [
+ {
+ "line": 9,
+ "level": 2,
+ "text": "What you get"
+ },
+ {
+ "line": 16,
+ "level": 2,
+ "text": "Installation"
+ },
+ {
+ "line": 22,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 24,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 26,
+ "level": 1,
+ "text": "or"
+ },
+ {
+ "line": 30,
+ "level": 2,
+ "text": "Setup"
+ },
+ {
+ "line": 65,
+ "level": 2,
+ "text": "SSR behavior and streaming"
+ },
+ {
+ "line": 71,
+ "level": 2,
+ "text": "Use in routes"
+ },
+ {
+ "line": 73,
+ "level": 3,
+ "text": "Using useSuspenseQuery vs useQuery"
+ },
+ {
+ "line": 86,
+ "level": 3,
+ "text": "Preload with a loader and read with a hook"
+ },
+ {
+ "line": 113,
+ "level": 3,
+ "text": "Prefetching and streaming"
+ },
+ {
+ "line": 135,
+ "level": 2,
+ "text": "Redirect handling"
+ },
+ {
+ "line": 142,
+ "level": 2,
+ "text": "Works with TanStack Start"
+ }
+ ]
+ },
+ {
+ "path": "eslint/create-route-property-order.md",
+ "headings": [
+ {
+ "line": 24,
+ "level": 2,
+ "text": "Rule Details"
+ },
+ {
+ "line": 54,
+ "level": 2,
+ "text": "Attributes"
+ }
+ ]
+ },
+ {
+ "path": "eslint/eslint-plugin-router.md",
+ "headings": [
+ {
+ "line": 8,
+ "level": 2,
+ "text": "Installation"
+ },
+ {
+ "line": 34,
+ "level": 2,
+ "text": "Flat Config (`eslint.config.js`)"
+ },
+ {
+ "line": 39,
+ "level": 3,
+ "text": "Recommended Flat Config setup"
+ },
+ {
+ "line": 53,
+ "level": 3,
+ "text": "Custom Flat Config setup"
+ },
+ {
+ "line": 74,
+ "level": 2,
+ "text": "Legacy Config (`.eslintrc`)"
+ },
+ {
+ "line": 78,
+ "level": 3,
+ "text": "Recommended Legacy Config setup"
+ },
+ {
+ "line": 88,
+ "level": 3,
+ "text": "Custom Legacy Config setup"
+ },
+ {
+ "line": 101,
+ "level": 2,
+ "text": "Rules"
+ },
+ {
+ "line": 107,
+ "level": 2,
+ "text": "Conflicts with other ESLint plugins"
+ },
+ {
+ "line": 111,
+ "level": 3,
+ "text": "`typescript-eslint`"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/router_docs_headings.tsv b/router_docs_headings.tsv
new file mode 100644
index 00000000000..5bb57db6f2f
--- /dev/null
+++ b/router_docs_headings.tsv
@@ -0,0 +1,1452 @@
+api/file-based-routing.md|7|2|Configuration options
+api/file-based-routing.md|34|3|`routesDirectory` (required)
+api/file-based-routing.md|44|3|`generatedRouteTree` (required)
+api/file-based-routing.md|56|3|`virtualRouteConfig`
+api/file-based-routing.md|62|3|`routeFilePrefix`
+api/file-based-routing.md|68|3|`routeFileIgnorePrefix`
+api/file-based-routing.md|85|3|`routeFileIgnorePattern`
+api/file-based-routing.md|91|3|`routeToken`
+api/file-based-routing.md|105|3|`indexToken`
+api/file-based-routing.md|118|3|`quoteStyle`
+api/file-based-routing.md|127|3|`semicolons`
+api/file-based-routing.md|136|3|`autoCodeSplitting`
+api/file-based-routing.md|147|3|`disableTypes`
+api/file-based-routing.md|155|3|`addExtensions`
+api/file-based-routing.md|161|3|`disableLogging`
+api/file-based-routing.md|167|3|`routeTreeFileHeader`
+api/file-based-routing.md|181|3|`routeTreeFileFooter`
+api/file-based-routing.md|191|3|`enableRouteTreeFormatting`
+api/file-based-routing.md|197|3|`tmpDir`
+framework/solid/quick-start.md|7|2|Using File-Based Route Generation
+framework/solid/quick-start.md|11|3|Scaffolding Your First TanStack Router Project
+framework/solid/quick-start.md|19|3|Manual Setup
+framework/solid/quick-start.md|23|4|Install TanStack Router, Vite Plugin, and the Router Devtools
+framework/solid/quick-start.md|28|1|or
+framework/solid/quick-start.md|31|1|or
+framework/solid/quick-start.md|34|1|or
+framework/solid/quick-start.md|37|1|or
+framework/solid/quick-start.md|41|4|Configure the Vite Plugin
+framework/solid/quick-start.md|72|4|`src/routes/__root.tsx`
+framework/solid/quick-start.md|97|4|`src/routes/index.tsx`
+framework/solid/quick-start.md|115|4|`src/routes/about.tsx`
+framework/solid/quick-start.md|129|4|`src/main.tsx`
+framework/solid/quick-start.md|161|2|Using Code-Based Route Configuration
+framework/solid/routing/file-based-routing.md|13|3|Configuration with Vite
+framework/solid/guide/custom-link.md|36|2|`createLink` with third party libraries
+framework/solid/guide/custom-link.md|40|3|Some Library example
+framework/react/decisions-on-dx.md|17|2|TanStack Router's origin story
+framework/react/decisions-on-dx.md|23|2|How does TanStack Router achieve this?
+framework/react/decisions-on-dx.md|37|2|1. Why is the Router's configuration done this way?
+framework/react/decisions-on-dx.md|98|2|2. Declaring the Router instance for type inference
+framework/react/decisions-on-dx.md|154|2|3. Why is file-based routing the preferred way to define routes?
+framework/react/devtools.md|11|2|Installation
+framework/react/devtools.md|37|2|Import the Devtools
+framework/react/devtools.md|43|2|Using Devtools in production
+framework/react/devtools.md|51|2|Using inside of the `RouterProvider`
+framework/react/devtools.md|78|2|Manually passing the Router Instance
+framework/react/devtools.md|93|2|Floating Mode
+framework/react/devtools.md|112|3|Devtools Options
+framework/react/devtools.md|135|2|Fixed Mode
+framework/react/devtools.md|154|2|Embedded Mode
+framework/react/devtools.md|175|3|DevtoolsPanel Options
+framework/react/faq.md|7|2|Should I commit my `routeTree.gen.ts` file into git?
+framework/react/faq.md|13|2|Can I conditionally render the Root Route component?
+framework/react/installation.md|11|1|or
+framework/react/installation.md|13|1|or
+framework/react/installation.md|15|1|or
+framework/react/installation.md|17|1|or
+framework/react/installation.md|23|3|Requirements
+framework/react/installation.md|39|3|LLM Assistance Support
+framework/react/installation.md|55|3|Usage with yarn workspaces
+framework/react/migrate-from-react-location.md|7|2|Differences between React Location and TanStack Router
+framework/react/migrate-from-react-location.md|16|2|Migration guide
+framework/react/migrate-from-react-location.md|23|3|Step 1: Swap over to TanStack Router's dependencies
+framework/react/migrate-from-react-location.md|37|3|Step 2: Use the file-based routing watcher
+framework/react/migrate-from-react-location.md|62|3|Step 3: Add the file-based configuration file to your project
+framework/react/migrate-from-react-location.md|75|3|Step 4: Create the routes directory
+framework/react/migrate-from-react-location.md|83|3|Step 5: Create the root route file
+framework/react/migrate-from-react-location.md|109|3|Step 6: Create the index route file
+framework/react/migrate-from-react-location.md|122|3|Step 7: Create the posts route file
+framework/react/migrate-from-react-location.md|161|3|Step 8: Create the posts index route file
+framework/react/migrate-from-react-location.md|174|3|Step 9: Create the posts id route file
+framework/react/migrate-from-react-location.md|198|3|Step 10: Generate the route tree
+framework/react/migrate-from-react-location.md|208|3|Step 11: Update the main entry file to render the Router
+framework/react/migrate-from-react-location.md|246|3|Finished!
+framework/react/overview.md|24|2|"A Fork in the Route"
+framework/react/overview.md|49|2|Why TanStack Router?
+framework/react/overview.md|78|2|100% Inferred TypeScript Support
+framework/react/overview.md|91|2|1st Class Search Parameters
+framework/react/overview.md|113|2|Built-In Caching and Friendly Data Loading
+framework/react/overview.md|123|3|Built-in Cache
+framework/react/overview.md|127|3|Flexible & Powerful Data Lifecycle APIs
+framework/react/overview.md|131|2|Inherited Route Context
+framework/react/overview.md|143|2|File-based and/or Code-Based Routing
+framework/react/overview.md|149|2|Acknowledgements
+framework/react/overview.md|160|2|Let's go!
+framework/react/quick-start.md|7|2|Using File-Based Route Generation
+framework/react/quick-start.md|11|3|Scaffolding Your First TanStack Router Project
+framework/react/quick-start.md|19|3|Manual Setup
+framework/react/quick-start.md|23|4|Install TanStack Router, Vite Plugin, and the Router Devtools
+framework/react/quick-start.md|28|1|or
+framework/react/quick-start.md|31|1|or
+framework/react/quick-start.md|34|1|or
+framework/react/quick-start.md|37|1|or
+framework/react/quick-start.md|41|4|Configure the Vite Plugin
+framework/react/quick-start.md|73|4|`src/routes/__root.tsx`
+framework/react/quick-start.md|98|4|`src/routes/index.tsx`
+framework/react/quick-start.md|116|4|`src/routes/about.tsx`
+framework/react/quick-start.md|130|4|`src/main.tsx`
+framework/react/quick-start.md|168|2|Using Code-Based Route Configuration
+framework/react/routing/code-based-routing.md|8|2|⚠️ Before You Start
+framework/react/routing/code-based-routing.md|13|2|Route Trees
+framework/react/routing/code-based-routing.md|114|2|Anatomy of a Route
+framework/react/routing/code-based-routing.md|147|2|Manually building the route tree
+framework/react/routing/code-based-routing.md|178|2|Routing Concepts for Code-Based Routing
+framework/react/routing/code-based-routing.md|195|2|The Root Route
+framework/react/routing/code-based-routing.md|219|2|Basic Routes
+framework/react/routing/code-based-routing.md|232|2|Index Routes
+framework/react/routing/code-based-routing.md|251|2|Dynamic Route Segments
+framework/react/routing/code-based-routing.md|274|2|Splat / Catch-All Routes
+framework/react/routing/code-based-routing.md|298|2|Layout Routes
+framework/react/routing/code-based-routing.md|349|2|Pathless Layout Routes
+framework/react/routing/code-based-routing.md|400|2|Non-Nested Routes
+framework/react/routing/file-based-routing.md|7|2|What is File-Based Routing?
+framework/react/routing/file-based-routing.md|18|2|`/`s or `.`s?
+framework/react/routing/file-based-routing.md|22|2|Directory Routes
+framework/react/routing/file-based-routing.md|54|2|Flat Routes
+framework/react/routing/file-based-routing.md|81|2|Mixed Flat and Directory Routes
+framework/react/routing/file-based-routing.md|108|2|Getting started with File-Based Routing
+framework/react/routing/file-naming-conventions.md|22|2|Dynamic Path Params
+framework/react/routing/file-naming-conventions.md|33|2|Pathless Routes
+framework/react/routing/installation-with-esbuild.md|36|2|Ignoring the generated route tree file
+framework/react/routing/installation-with-esbuild.md|67|2|Configuration
+framework/react/routing/installation-with-router-cli.md|34|2|Using the `generate` command
+framework/react/routing/installation-with-router-cli.md|42|2|Using the `watch` command
+framework/react/routing/installation-with-router-cli.md|54|2|Ignoring the generated route tree file
+framework/react/routing/installation-with-router-cli.md|85|2|Configuration
+framework/react/routing/installation-with-rspack.md|42|2|Ignoring the generated route tree file
+framework/react/routing/installation-with-rspack.md|73|2|Configuration
+framework/react/routing/installation-with-vite.md|44|2|Ignoring the generated route tree file
+framework/react/routing/installation-with-vite.md|75|2|Configuration
+framework/react/routing/installation-with-webpack.md|35|2|Ignoring the generated route tree file
+framework/react/routing/installation-with-webpack.md|66|2|Configuration
+framework/react/routing/route-trees.md|14|2|Route Trees
+framework/react/routing/route-trees.md|57|2|Route Tree Configuration
+framework/react/routing/routing-concepts.md|9|2|Anatomy of a Route
+framework/react/routing/routing-concepts.md|29|2|The Root Route
+framework/react/routing/routing-concepts.md|64|2|Basic Routes
+framework/react/routing/routing-concepts.md|85|2|Index Routes
+framework/react/routing/routing-concepts.md|107|2|Dynamic Route Segments
+framework/react/routing/routing-concepts.md|132|2|Splat / Catch-All Routes
+framework/react/routing/routing-concepts.md|148|2|Optional Path Parameters
+framework/react/routing/routing-concepts.md|182|2|Layout Routes
+framework/react/routing/routing-concepts.md|254|2|Pathless Layout Routes
+framework/react/routing/routing-concepts.md|331|2|Non-Nested Routes
+framework/react/routing/routing-concepts.md|355|2|Excluding Files and Folders from Routes
+framework/react/routing/routing-concepts.md|399|2|Pathless Route Group Directories
+framework/react/routing/virtual-file-routes.md|41|2|Configuration
+framework/react/routing/virtual-file-routes.md|48|2|Configuration via the TanStackRouter Plugin
+framework/react/routing/virtual-file-routes.md|87|2|Creating Virtual File Routes
+framework/react/routing/virtual-file-routes.md|97|2|Virtual Root Route
+framework/react/routing/virtual-file-routes.md|110|2|Virtual Route
+framework/react/routing/virtual-file-routes.md|139|2|Virtual Index Route
+framework/react/routing/virtual-file-routes.md|149|2|Virtual Pathless Route
+framework/react/routing/virtual-file-routes.md|177|2|Physical Virtual Routes
+framework/react/routing/virtual-file-routes.md|227|2|Virtual Routes inside of TanStack Router File Based routing
+framework/react/routing/virtual-file-routes.md|272|2|Inception
+framework/react/routing/virtual-file-routes.md|293|2|Configuration via the TanStack Router CLI
+framework/react/api/router/ActiveLinkOptionsType.md|19|2|ActiveLinkOptions properties
+framework/react/api/router/ActiveLinkOptionsType.md|23|3|`activeProps`
+framework/react/api/router/ActiveLinkOptionsType.md|29|3|`inactiveProps`
+framework/react/api/router/FileRouteClass.md|12|2|`FileRoute` constructor
+framework/react/api/router/FileRouteClass.md|16|3|Constructor options
+framework/react/api/router/FileRouteClass.md|22|3|Constructor returns
+framework/react/api/router/FileRouteClass.md|26|2|`FileRoute` methods
+framework/react/api/router/FileRouteClass.md|30|3|`.createRoute` method
+framework/react/api/router/FileRouteClass.md|34|4|.createRoute options
+framework/react/api/router/FileRouteClass.md|41|4|.createRoute returns
+framework/react/api/router/FileRouteClass.md|47|3|Examples
+framework/react/api/router/LinkOptionsType.md|18|2|LinkOptions properties
+framework/react/api/router/LinkOptionsType.md|22|3|`target`
+framework/react/api/router/LinkOptionsType.md|28|3|`activeOptions`
+framework/react/api/router/LinkOptionsType.md|34|3|`preload`
+framework/react/api/router/LinkOptionsType.md|41|3|`preloadDelay`
+framework/react/api/router/LinkOptionsType.md|47|3|`disabled`
+framework/react/api/router/LinkPropsType.md|17|2|LinkProps properties
+framework/react/api/router/LinkPropsType.md|22|4|`children`
+framework/react/api/router/MatchRouteOptionsType.md|17|2|MatchRouteOptions properties
+framework/react/api/router/MatchRouteOptionsType.md|21|3|`pending` property
+framework/react/api/router/MatchRouteOptionsType.md|27|3|`caseSensitive` property
+framework/react/api/router/MatchRouteOptionsType.md|33|3|`includeSearch` property
+framework/react/api/router/MatchRouteOptionsType.md|39|3|`fuzzy` property
+framework/react/api/router/NavigateOptionsType.md|20|2|NavigateOptions properties
+framework/react/api/router/NavigateOptionsType.md|24|3|`replace`
+framework/react/api/router/NavigateOptionsType.md|31|3|`resetScroll`
+framework/react/api/router/NavigateOptionsType.md|38|3|`hashScrollIntoView`
+framework/react/api/router/NavigateOptionsType.md|47|3|`viewTransition`
+framework/react/api/router/NavigateOptionsType.md|58|3|`ignoreBlocker`
+framework/react/api/router/NavigateOptionsType.md|65|3|`reloadDocument`
+framework/react/api/router/NavigateOptionsType.md|72|3|`href`
+framework/react/api/router/NotFoundErrorType.md|18|2|NotFoundError properties
+framework/react/api/router/NotFoundErrorType.md|22|3|`global` property (⚠️ deprecated, use `routeId: rootRouteId` instead)
+framework/react/api/router/NotFoundErrorType.md|28|3|`data` property
+framework/react/api/router/NotFoundErrorType.md|34|3|`throw` property
+framework/react/api/router/NotFoundErrorType.md|40|3|`route` property
+framework/react/api/router/NotFoundErrorType.md|46|3|`headers` property
+framework/react/api/router/NotFoundRouteClass.md|13|2|Constructor options
+framework/react/api/router/NotFoundRouteClass.md|35|2|Examples
+framework/react/api/router/RedirectType.md|18|2|Redirect properties
+framework/react/api/router/RedirectType.md|22|3|`statusCode` property
+framework/react/api/router/RedirectType.md|28|3|`throw` property
+framework/react/api/router/RedirectType.md|34|3|`headers` property
+framework/react/api/router/RedirectType.md|40|3|Navigation Properties
+framework/react/api/router/RegisterType.md|16|2|Examples
+framework/react/api/router/RootRouteClass.md|12|2|`RootRoute` constructor
+framework/react/api/router/RootRouteClass.md|16|3|Constructor options
+framework/react/api/router/RootRouteClass.md|37|2|Constructor returns
+framework/react/api/router/RootRouteClass.md|41|2|Examples
+framework/react/api/router/RouteApiClass.md|12|2|Constructor options
+framework/react/api/router/RouteApiClass.md|16|3|`opts.routeId` option
+framework/react/api/router/RouteApiClass.md|22|2|Constructor returns
+framework/react/api/router/RouteApiClass.md|26|2|Examples
+framework/react/api/router/RouteApiType.md|8|2|`RouteApi` properties and methods
+framework/react/api/router/RouteApiType.md|12|3|`useMatch` method
+framework/react/api/router/RouteApiType.md|35|3|`useRouteContext` method
+framework/react/api/router/RouteApiType.md|53|3|`useSearch` method
+framework/react/api/router/RouteApiType.md|76|3|`useParams` method
+framework/react/api/router/RouteApiType.md|99|3|`useLoaderData` method
+framework/react/api/router/RouteApiType.md|122|3|`useLoaderDeps` method
+framework/react/api/router/RouteApiType.md|145|3|`useNavigate` method
+framework/react/api/router/RouteClass.md|12|2|`Route` constructor
+framework/react/api/router/RouteClass.md|16|3|Constructor options
+framework/react/api/router/RouteClass.md|22|3|Constructor returns
+framework/react/api/router/RouteClass.md|26|2|Examples
+framework/react/api/router/RouteMaskType.md|8|2|RouteMask properties
+framework/react/api/router/RouteMaskType.md|12|3|`...ToOptions`
+framework/react/api/router/RouteMaskType.md|18|3|`options.routeTree`
+framework/react/api/router/RouteMaskType.md|24|3|`options.unmaskOnReload`
+framework/react/api/router/RouteOptionsType.md|8|2|RouteOptions properties
+framework/react/api/router/RouteOptionsType.md|12|3|`getParentRoute` method
+framework/react/api/router/RouteOptionsType.md|18|3|`path` property
+framework/react/api/router/RouteOptionsType.md|24|3|`id` property
+framework/react/api/router/RouteOptionsType.md|30|3|`component` property
+framework/react/api/router/RouteOptionsType.md|36|3|`errorComponent` property
+framework/react/api/router/RouteOptionsType.md|42|3|`pendingComponent` property
+framework/react/api/router/RouteOptionsType.md|48|3|`notFoundComponent` property
+framework/react/api/router/RouteOptionsType.md|54|3|`validateSearch` method
+framework/react/api/router/RouteOptionsType.md|61|3|`search.middlewares` property
+framework/react/api/router/RouteOptionsType.md|68|3|`parseParams` method (⚠️ deprecated, use `params.parse` instead)
+framework/react/api/router/RouteOptionsType.md|74|3|`stringifyParams` method (⚠️ deprecated, use `params.stringify` instead)
+framework/react/api/router/RouteOptionsType.md|80|3|`params.parse` method
+framework/react/api/router/RouteOptionsType.md|86|3|`params.stringify` method
+framework/react/api/router/RouteOptionsType.md|91|3|`beforeLoad` method
+framework/react/api/router/RouteOptionsType.md|120|3|`loader` method
+framework/react/api/router/RouteOptionsType.md|150|3|`loaderDeps` method
+framework/react/api/router/RouteOptionsType.md|163|3|`staleTime` property
+framework/react/api/router/RouteOptionsType.md|170|3|`preloadStaleTime` property
+framework/react/api/router/RouteOptionsType.md|177|3|`gcTime` property
+framework/react/api/router/RouteOptionsType.md|184|3|`shouldReload` property
+framework/react/api/router/RouteOptionsType.md|192|3|`caseSensitive` property
+framework/react/api/router/RouteOptionsType.md|198|3|`wrapInSuspense` property
+framework/react/api/router/RouteOptionsType.md|204|3|`pendingMs` property
+framework/react/api/router/RouteOptionsType.md|211|3|`pendingMinMs` property
+framework/react/api/router/RouteOptionsType.md|218|3|`preloadMaxAge` property
+framework/react/api/router/RouteOptionsType.md|225|3|`preSearchFilters` property (⚠️ deprecated, use `search.middlewares` instead)
+framework/react/api/router/RouteOptionsType.md|233|3|`postSearchFilters` property (⚠️ deprecated, use `search.middlewares` instead)
+framework/react/api/router/RouteOptionsType.md|241|3|`onError` property
+framework/react/api/router/RouteOptionsType.md|248|3|`onEnter` property
+framework/react/api/router/RouteOptionsType.md|254|3|`onStay` property
+framework/react/api/router/RouteOptionsType.md|260|3|`onLeave` property
+framework/react/api/router/RouteOptionsType.md|266|3|`onCatch` property
+framework/react/api/router/RouteOptionsType.md|272|3|`remountDeps` method
+framework/react/api/router/RouteOptionsType.md|304|3|`headers` method
+framework/react/api/router/RouteOptionsType.md|320|3|`head` method
+framework/react/api/router/RouteOptionsType.md|348|3|`scripts` method
+framework/react/api/router/RouteOptionsType.md|364|3|`codeSplitGroupings` property
+framework/react/api/router/RouteType.md|8|2|`Route` properties and methods
+framework/react/api/router/RouteType.md|12|3|`.addChildren` method
+framework/react/api/router/RouteType.md|17|3|`.update` method
+framework/react/api/router/RouteType.md|24|3|`.lazy` method
+framework/react/api/router/RouteType.md|29|3|...`RouteApi` methods
+framework/react/api/router/RouterClass.md|12|2|`Router` constructor
+framework/react/api/router/RouterClass.md|16|3|Constructor options
+framework/react/api/router/RouterClass.md|22|3|Constructor returns
+framework/react/api/router/RouterClass.md|26|2|Examples
+framework/react/api/router/RouterEventsType.md|57|2|RouterEvents properties
+framework/react/api/router/RouterEventsType.md|61|3|`type` property
+framework/react/api/router/RouterEventsType.md|67|3|`fromLocation` property
+framework/react/api/router/RouterEventsType.md|72|3|`toLocation` property
+framework/react/api/router/RouterEventsType.md|77|3|`pathChanged` property
+framework/react/api/router/RouterEventsType.md|82|3|`hrefChanged` property
+framework/react/api/router/RouterEventsType.md|87|2|Example
+framework/react/api/router/RouterOptionsType.md|8|2|RouterOptions properties
+framework/react/api/router/RouterOptionsType.md|12|3|`routeTree` property
+framework/react/api/router/RouterOptionsType.md|18|3|`history` property
+framework/react/api/router/RouterOptionsType.md|24|3|`stringifySearch` method
+framework/react/api/router/RouterOptionsType.md|31|3|`parseSearch` method
+framework/react/api/router/RouterOptionsType.md|38|3|`search.strict` property
+framework/react/api/router/RouterOptionsType.md|47|3|`defaultPreload` property
+framework/react/api/router/RouterOptionsType.md|57|3|`defaultPreloadDelay` property
+framework/react/api/router/RouterOptionsType.md|64|3|`defaultComponent` property
+framework/react/api/router/RouterOptionsType.md|71|3|`defaultErrorComponent` property
+framework/react/api/router/RouterOptionsType.md|78|3|`defaultNotFoundComponent` property
+framework/react/api/router/RouterOptionsType.md|85|3|`defaultPendingComponent` property
+framework/react/api/router/RouterOptionsType.md|91|3|`defaultPendingMs` property
+framework/react/api/router/RouterOptionsType.md|98|3|`defaultPendingMinMs` property
+framework/react/api/router/RouterOptionsType.md|105|3|`defaultStaleTime` property
+framework/react/api/router/RouterOptionsType.md|112|3|`defaultPreloadStaleTime` property
+framework/react/api/router/RouterOptionsType.md|119|3|`defaultPreloadGcTime` property
+framework/react/api/router/RouterOptionsType.md|126|3|`defaultGcTime` property
+framework/react/api/router/RouterOptionsType.md|133|3|`defaultOnCatch` property
+framework/react/api/router/RouterOptionsType.md|139|3|`disableGlobalCatchBoundary` property
+framework/react/api/router/RouterOptionsType.md|147|3|`defaultViewTransition` property
+framework/react/api/router/RouterOptionsType.md|159|3|`defaultHashScrollIntoView` property
+framework/react/api/router/RouterOptionsType.md|168|3|`caseSensitive` property
+framework/react/api/router/RouterOptionsType.md|175|3|`basepath` property
+framework/react/api/router/RouterOptionsType.md|182|3|`context` property
+framework/react/api/router/RouterOptionsType.md|188|3|`dehydrate` method
+framework/react/api/router/RouterOptionsType.md|194|3|`hydrate` method
+framework/react/api/router/RouterOptionsType.md|200|3|`routeMasks` property
+framework/react/api/router/RouterOptionsType.md|206|3|`unmaskOnReload` property
+framework/react/api/router/RouterOptionsType.md|213|3|`Wrap` property
+framework/react/api/router/RouterOptionsType.md|232|3|`InnerWrap` property
+framework/react/api/router/RouterOptionsType.md|257|3|`notFoundMode` property
+framework/react/api/router/RouterOptionsType.md|264|3|`notFoundRoute` property
+framework/react/api/router/RouterOptionsType.md|271|3|`trailingSlash` property
+framework/react/api/router/RouterOptionsType.md|278|3|`pathParamsAllowedCharacters` property
+framework/react/api/router/RouterOptionsType.md|284|3|`defaultStructuralSharing` property
+framework/react/api/router/RouterOptionsType.md|292|3|`defaultRemountDeps` property
+framework/react/api/router/RouterStateType.md|20|2|RouterState properties
+framework/react/api/router/RouterStateType.md|24|3|`status` property
+framework/react/api/router/RouterStateType.md|29|3|`isLoading` property
+framework/react/api/router/RouterStateType.md|34|3|`isTransitioning` property
+framework/react/api/router/RouterStateType.md|39|3|`matches` property
+framework/react/api/router/RouterStateType.md|44|3|`pendingMatches` property
+framework/react/api/router/RouterStateType.md|49|3|`location` property
+framework/react/api/router/RouterStateType.md|54|3|`resolvedLocation` property
+framework/react/api/router/RouterType.md|8|2|`Router` properties and methods
+framework/react/api/router/RouterType.md|12|3|`.update` method
+framework/react/api/router/RouterType.md|17|3|`state` property
+framework/react/api/router/RouterType.md|24|3|`.subscribe` method
+framework/react/api/router/RouterType.md|31|3|`.matchRoutes` method
+framework/react/api/router/RouterType.md|37|3|`.cancelMatch` method
+framework/react/api/router/RouterType.md|42|3|`.cancelMatches` method
+framework/react/api/router/RouterType.md|47|3|`.buildLocation` method
+framework/react/api/router/RouterType.md|86|3|`.commitLocation` method
+framework/react/api/router/RouterType.md|129|3|`.navigate` method
+framework/react/api/router/RouterType.md|138|3|`.invalidate` method
+framework/react/api/router/RouterType.md|150|3|`.clearCache` method
+framework/react/api/router/RouterType.md|158|3|`.load` method
+framework/react/api/router/RouterType.md|168|3|`.preloadRoute` method
+framework/react/api/router/RouterType.md|183|3|`.loadRouteChunk` method
+framework/react/api/router/RouterType.md|189|3|`.matchRoute` method
+framework/react/api/router/RouterType.md|207|3|`.dehydrate` method
+framework/react/api/router/RouterType.md|215|3|`.hydrate` method
+framework/react/api/router/ViewTransitionOptionsType.md|15|2|ViewTransitionOptions properties
+framework/react/api/router/ViewTransitionOptionsType.md|19|3|`types` property
+framework/react/api/router/awaitComponent.md|10|2|Await props
+framework/react/api/router/awaitComponent.md|14|3|`props.promise` prop
+framework/react/api/router/awaitComponent.md|20|3|`props.children` prop
+framework/react/api/router/awaitComponent.md|26|2|Await returns
+framework/react/api/router/awaitComponent.md|32|2|Examples
+framework/react/api/router/catchBoundaryComponent.md|8|2|CatchBoundary props
+framework/react/api/router/catchBoundaryComponent.md|12|3|`props.getResetKey` prop
+framework/react/api/router/catchBoundaryComponent.md|18|3|`props.children` prop
+framework/react/api/router/catchBoundaryComponent.md|24|3|`props.errorComponent` prop
+framework/react/api/router/catchBoundaryComponent.md|30|3|`props.onCatch` prop
+framework/react/api/router/catchBoundaryComponent.md|36|2|CatchBoundary returns
+framework/react/api/router/catchBoundaryComponent.md|41|2|Examples
+framework/react/api/router/catchNotFoundComponent.md|8|2|CatchNotFound props
+framework/react/api/router/catchNotFoundComponent.md|12|3|`props.children` prop
+framework/react/api/router/catchNotFoundComponent.md|18|3|`props.fallback` prop
+framework/react/api/router/catchNotFoundComponent.md|24|3|`props.onCatch` prop
+framework/react/api/router/catchNotFoundComponent.md|30|2|CatchNotFound returns
+framework/react/api/router/catchNotFoundComponent.md|35|2|Examples
+framework/react/api/router/clientOnlyComponent.md|8|2|Props
+framework/react/api/router/clientOnlyComponent.md|12|3|`props.fallback` prop
+framework/react/api/router/clientOnlyComponent.md|16|3|`props.children` prop
+framework/react/api/router/clientOnlyComponent.md|20|2|Returns
+framework/react/api/router/clientOnlyComponent.md|25|2|Examples
+framework/react/api/router/createFileRouteFunction.md|8|2|createFileRoute options
+framework/react/api/router/createFileRouteFunction.md|12|3|`path` option
+framework/react/api/router/createFileRouteFunction.md|18|2|createFileRoute returns
+framework/react/api/router/createFileRouteFunction.md|24|2|Examples
+framework/react/api/router/createLazyFileRouteFunction.md|8|2|createLazyFileRoute options
+framework/react/api/router/createLazyFileRouteFunction.md|12|3|`path`
+framework/react/api/router/createLazyFileRouteFunction.md|18|3|createLazyFileRoute returns
+framework/react/api/router/createLazyFileRouteFunction.md|35|3|Examples
+framework/react/api/router/createLazyRouteFunction.md|8|2|createLazyRoute options
+framework/react/api/router/createLazyRouteFunction.md|12|3|`id`
+framework/react/api/router/createLazyRouteFunction.md|18|3|createLazyRoute returns
+framework/react/api/router/createLazyRouteFunction.md|35|3|Examples
+framework/react/api/router/createRootRouteFunction.md|8|2|createRootRoute options
+framework/react/api/router/createRootRouteFunction.md|29|2|createRootRoute returns
+framework/react/api/router/createRootRouteFunction.md|33|2|Examples
+framework/react/api/router/createRootRouteWithContextFunction.md|8|2|createRootRouteWithContext generics
+framework/react/api/router/createRootRouteWithContextFunction.md|12|3|`TRouterContext` generic
+framework/react/api/router/createRootRouteWithContextFunction.md|18|2|createRootRouteWithContext returns
+framework/react/api/router/createRootRouteWithContextFunction.md|23|2|Examples
+framework/react/api/router/createRouteFunction.md|8|2|createRoute options
+framework/react/api/router/createRouteFunction.md|14|2|createRoute returns
+framework/react/api/router/createRouteFunction.md|18|2|Examples
+framework/react/api/router/createRouteMaskFunction.md|8|2|createRouteMask options
+framework/react/api/router/createRouteMaskFunction.md|14|2|createRouteMask returns
+framework/react/api/router/createRouteMaskFunction.md|18|2|Examples
+framework/react/api/router/createRouterFunction.md|8|2|createRouter options
+framework/react/api/router/createRouterFunction.md|14|2|createRouter returns
+framework/react/api/router/createRouterFunction.md|18|2|Examples
+framework/react/api/router/defaultGlobalNotFoundComponent.md|8|2|DefaultGlobalNotFound returns
+framework/react/api/router/deferFunction.md|13|2|defer options
+framework/react/api/router/deferFunction.md|19|2|defer returns
+framework/react/api/router/deferFunction.md|23|2|Examples
+framework/react/api/router/errorComponentComponent.md|8|2|ErrorComponent props
+framework/react/api/router/errorComponentComponent.md|12|3|`props.error` prop
+framework/react/api/router/errorComponentComponent.md|17|3|`props.info` prop
+framework/react/api/router/errorComponentComponent.md|23|3|`props.reset` prop
+framework/react/api/router/errorComponentComponent.md|28|2|ErrorComponent returns
+framework/react/api/router/getRouteApiFunction.md|8|2|getRouteApi options
+framework/react/api/router/getRouteApiFunction.md|12|3|`routeId` option
+framework/react/api/router/getRouteApiFunction.md|18|2|getRouteApi returns
+framework/react/api/router/getRouteApiFunction.md|22|2|Examples
+framework/react/api/router/isNotFoundFunction.md|8|2|isNotFound options
+framework/react/api/router/isNotFoundFunction.md|12|3|`input` option
+framework/react/api/router/isNotFoundFunction.md|18|2|isNotFound returns
+framework/react/api/router/isNotFoundFunction.md|24|2|Examples
+framework/react/api/router/isRedirectFunction.md|8|2|isRedirect options
+framework/react/api/router/isRedirectFunction.md|12|4|`input`
+framework/react/api/router/isRedirectFunction.md|18|2|isRedirect returns
+framework/react/api/router/isRedirectFunction.md|24|2|Examples
+framework/react/api/router/lazyRouteComponentFunction.md|11|2|lazyRouteComponent options
+framework/react/api/router/lazyRouteComponentFunction.md|15|3|`importer` option
+framework/react/api/router/lazyRouteComponentFunction.md|21|3|`exportName` option
+framework/react/api/router/lazyRouteComponentFunction.md|27|2|lazyRouteComponent returns
+framework/react/api/router/lazyRouteComponentFunction.md|31|2|Examples
+framework/react/api/router/linkComponent.md|8|2|Link props
+framework/react/api/router/linkComponent.md|12|3|`...props`
+framework/react/api/router/linkComponent.md|17|2|Link returns
+framework/react/api/router/linkComponent.md|21|2|Examples
+framework/react/api/router/linkOptions.md|8|2|linkOptions props
+framework/react/api/router/linkOptions.md|12|3|`...props`
+framework/react/api/router/linkOptions.md|17|2|`linkOptions` returns
+framework/react/api/router/linkOptions.md|21|2|Examples
+framework/react/api/router/matchRouteComponent.md|8|2|MatchRoute props
+framework/react/api/router/matchRouteComponent.md|12|3|`...props` prop
+framework/react/api/router/matchRouteComponent.md|16|3|`children` prop
+framework/react/api/router/matchRouteComponent.md|24|2|MatchRoute returns
+framework/react/api/router/matchRouteComponent.md|28|2|Examples
+framework/react/api/router/navigateComponent.md|8|2|Navigate props
+framework/react/api/router/navigateComponent.md|12|3|`...options`
+framework/react/api/router/navigateComponent.md|16|2|Navigate returns
+framework/react/api/router/notFoundFunction.md|8|2|notFound options
+framework/react/api/router/notFoundFunction.md|15|2|notFound returns
+framework/react/api/router/notFoundFunction.md|20|2|Examples
+framework/react/api/router/outletComponent.md|8|2|Outlet props
+framework/react/api/router/outletComponent.md|12|2|Outlet returns
+framework/react/api/router/redirectFunction.md|8|2|redirect options
+framework/react/api/router/redirectFunction.md|15|2|redirect returns
+framework/react/api/router/redirectFunction.md|20|2|Examples
+framework/react/api/router/retainSearchParamsFunction.md|8|2|retainSearchParams props
+framework/react/api/router/retainSearchParamsFunction.md|13|2|Examples
+framework/react/api/router/rootRouteWithContextFunction.md|12|2|rootRouteWithContext generics
+framework/react/api/router/rootRouteWithContextFunction.md|16|3|`TRouterContext` generic
+framework/react/api/router/rootRouteWithContextFunction.md|22|2|rootRouteWithContext returns
+framework/react/api/router/rootRouteWithContextFunction.md|27|2|Examples
+framework/react/api/router/stripSearchParamsFunction.md|8|2|stripSearchParams props
+framework/react/api/router/stripSearchParamsFunction.md|16|2|Examples
+framework/react/api/router/useAwaitedHook.md|8|2|useAwaited options
+framework/react/api/router/useAwaitedHook.md|12|3|`options.promise` option
+framework/react/api/router/useAwaitedHook.md|18|2|useAwaited returns
+framework/react/api/router/useAwaitedHook.md|24|2|Examples
+framework/react/api/router/useBlockerHook.md|10|2|useBlocker options
+framework/react/api/router/useBlockerHook.md|14|3|`options.shouldBlockFn` option
+framework/react/api/router/useBlockerHook.md|38|3|`options.disabled` option
+framework/react/api/router/useBlockerHook.md|44|3|`options.enableBeforeUnload` option
+framework/react/api/router/useBlockerHook.md|50|3|`options.withResolver` option
+framework/react/api/router/useBlockerHook.md|56|3|`options.blockerFn` option (⚠️ deprecated)
+framework/react/api/router/useBlockerHook.md|62|3|`options.condition` option (⚠️ deprecated)
+framework/react/api/router/useBlockerHook.md|68|2|useBlocker returns
+framework/react/api/router/useBlockerHook.md|83|2|Examples
+framework/react/api/router/useBlockerHook.md|87|3|Basic usage
+framework/react/api/router/useBlockerHook.md|103|3|Custom UI
+framework/react/api/router/useBlockerHook.md|133|3|Conditional blocking
+framework/react/api/router/useBlockerHook.md|163|3|Without resolver
+framework/react/api/router/useBlockerHook.md|186|3|Type narrowing
+framework/react/api/router/useCanGoBack.md|10|2|useCanGoBack returns
+framework/react/api/router/useCanGoBack.md|15|2|Limitations
+framework/react/api/router/useCanGoBack.md|19|2|Examples
+framework/react/api/router/useCanGoBack.md|21|3|Showing a back button
+framework/react/api/router/useChildMatchesHook.md|11|2|useChildMatches options
+framework/react/api/router/useChildMatchesHook.md|15|3|`opts.select` option
+framework/react/api/router/useChildMatchesHook.md|21|3|`opts.structuralSharing` option
+framework/react/api/router/useChildMatchesHook.md|28|2|useChildMatches returns
+framework/react/api/router/useChildMatchesHook.md|33|2|Examples
+framework/react/api/router/useLinkPropsHook.md|8|2|useLinkProps options
+framework/react/api/router/useLinkPropsHook.md|19|2|useLinkProps returns
+framework/react/api/router/useLoaderDataHook.md|8|2|useLoaderData options
+framework/react/api/router/useLoaderDataHook.md|12|3|`opts.from` option
+framework/react/api/router/useLoaderDataHook.md|20|3|`opts.strict` option
+framework/react/api/router/useLoaderDataHook.md|26|3|`opts.select` option
+framework/react/api/router/useLoaderDataHook.md|32|3|`opts.structuralSharing` option
+framework/react/api/router/useLoaderDataHook.md|39|2|useLoaderData returns
+framework/react/api/router/useLoaderDataHook.md|44|2|Examples
+framework/react/api/router/useLoaderDepsHook.md|8|2|useLoaderDepsHook options
+framework/react/api/router/useLoaderDepsHook.md|12|3|`opts.from` option
+framework/react/api/router/useLoaderDepsHook.md|18|3|`opts.select` option
+framework/react/api/router/useLoaderDepsHook.md|24|3|`opts.structuralSharing` option
+framework/react/api/router/useLoaderDepsHook.md|31|2|useLoaderDeps returns
+framework/react/api/router/useLoaderDepsHook.md|35|2|Examples
+framework/react/api/router/useLocationHook.md|8|2|useLocation options
+framework/react/api/router/useLocationHook.md|12|3|`opts.select` option
+framework/react/api/router/useLocationHook.md|18|2|useLocation returns
+framework/react/api/router/useLocationHook.md|22|2|Examples
+framework/react/api/router/useMatchHook.md|8|2|useMatch options
+framework/react/api/router/useMatchHook.md|12|3|`opts.from` option
+framework/react/api/router/useMatchHook.md|20|3|`opts.strict` option
+framework/react/api/router/useMatchHook.md|27|3|`opts.select` option
+framework/react/api/router/useMatchHook.md|33|3|`opts.structuralSharing` option
+framework/react/api/router/useMatchHook.md|40|3|`opts.shouldThrow` option
+framework/react/api/router/useMatchHook.md|47|2|useMatch returns
+framework/react/api/router/useMatchHook.md|52|2|Examples
+framework/react/api/router/useMatchHook.md|54|3|Accessing a route match
+framework/react/api/router/useMatchHook.md|66|3|Accessing the root route's match
+framework/react/api/router/useMatchHook.md|81|3|Checking if a specific route is currently rendered
+framework/react/api/router/useMatchRouteHook.md|8|2|useMatchRoute returns
+framework/react/api/router/useMatchRouteHook.md|12|2|matchRoute function
+framework/react/api/router/useMatchRouteHook.md|16|3|matchRoute function options
+framework/react/api/router/useMatchRouteHook.md|22|3|matchRoute function returns
+framework/react/api/router/useMatchRouteHook.md|26|2|Examples
+framework/react/api/router/useMatchesHook.md|11|2|useMatches options
+framework/react/api/router/useMatchesHook.md|15|3|`opts.select` option
+framework/react/api/router/useMatchesHook.md|21|3|`opts.structuralSharing` option
+framework/react/api/router/useMatchesHook.md|28|2|useMatches returns
+framework/react/api/router/useMatchesHook.md|33|2|Examples
+framework/react/api/router/useNavigateHook.md|8|2|useNavigate options
+framework/react/api/router/useNavigateHook.md|12|3|`opts.from` option
+framework/react/api/router/useNavigateHook.md|18|2|useNavigate returns
+framework/react/api/router/useNavigateHook.md|22|2|navigate function
+framework/react/api/router/useNavigateHook.md|26|3|navigate function options
+framework/react/api/router/useNavigateHook.md|32|3|navigate function returns
+framework/react/api/router/useNavigateHook.md|36|2|Examples
+framework/react/api/router/useParamsHook.md|8|2|useParams options
+framework/react/api/router/useParamsHook.md|12|3|`opts.strict` option
+framework/react/api/router/useParamsHook.md|18|3|`opts.shouldThrow` option
+framework/react/api/router/useParamsHook.md|25|3|`opts.select` option
+framework/react/api/router/useParamsHook.md|31|3|`opts.structuralSharing` option
+framework/react/api/router/useParamsHook.md|38|2|useParams returns
+framework/react/api/router/useParamsHook.md|42|2|Examples
+framework/react/api/router/useParentMatchesHook.md|11|2|useParentMatches options
+framework/react/api/router/useParentMatchesHook.md|15|3|`opts.select` option
+framework/react/api/router/useParentMatchesHook.md|21|3|`opts.structuralSharing` option
+framework/react/api/router/useParentMatchesHook.md|28|2|useParentMatches returns
+framework/react/api/router/useParentMatchesHook.md|33|2|Examples
+framework/react/api/router/useRouteContextHook.md|8|2|useRouteContext options
+framework/react/api/router/useRouteContextHook.md|12|3|`opts.from` option
+framework/react/api/router/useRouteContextHook.md|18|3|`opts.select` option
+framework/react/api/router/useRouteContextHook.md|24|2|useRouteContext returns
+framework/react/api/router/useRouteContextHook.md|28|2|Examples
+framework/react/api/router/useRouterHook.md|8|2|useRouter returns
+framework/react/api/router/useRouterHook.md|14|2|Examples
+framework/react/api/router/useRouterStateHook.md|11|2|useRouterState options
+framework/react/api/router/useRouterStateHook.md|15|3|`opts.select` option
+framework/react/api/router/useRouterStateHook.md|21|3|`opts.structuralSharing` option
+framework/react/api/router/useRouterStateHook.md|28|2|useRouterState returns
+framework/react/api/router/useRouterStateHook.md|32|2|Examples
+framework/react/api/router/useSearchHook.md|8|2|useSearch options
+framework/react/api/router/useSearchHook.md|12|3|`opts.from` option
+framework/react/api/router/useSearchHook.md|18|3|`opts.shouldThrow` option
+framework/react/api/router/useSearchHook.md|25|3|`opts.select` option
+framework/react/api/router/useSearchHook.md|31|3|`opts.structuralSharing` option
+framework/react/api/router/useSearchHook.md|38|3|`opts.strict` option
+framework/react/api/router/useSearchHook.md|44|2|useSearch returns
+framework/react/api/router/useSearchHook.md|49|2|Examples
+framework/react/guide/authenticated-routes.md|8|2|The `route.beforeLoad` Option
+framework/react/guide/authenticated-routes.md|28|2|Redirecting
+framework/react/guide/authenticated-routes.md|60|2|Non-Redirected Authentication
+framework/react/guide/authenticated-routes.md|79|2|Authentication using React context/hooks
+framework/react/guide/authenticated-routes.md|170|2|Related How-To Guides
+framework/react/guide/authenticated-routes.md|178|2|Examples
+framework/react/guide/automatic-code-splitting.md|25|2|How does it work?
+framework/react/guide/automatic-code-splitting.md|36|3|The transformation process
+framework/react/guide/automatic-code-splitting.md|47|3|What gets code split?
+framework/react/guide/automatic-code-splitting.md|77|2|Granular control
+framework/react/guide/automatic-code-splitting.md|81|3|Global code splitting behavior (`defaultBehavior`)
+framework/react/guide/automatic-code-splitting.md|111|3|Advanced programmatic control (`splitBehavior`)
+framework/react/guide/automatic-code-splitting.md|138|3|Per-route overrides (`codeSplitGroupings`)
+framework/react/guide/automatic-code-splitting.md|161|3|Configuration order matters
+framework/react/guide/automatic-code-splitting.md|171|3|Splitting the Data Loader
+framework/react/guide/code-splitting.md|11|2|How does TanStack Router split code?
+framework/react/guide/code-splitting.md|40|2|Encapsulating a route's files into a directory
+framework/react/guide/code-splitting.md|57|2|Approaches to code splitting
+framework/react/guide/code-splitting.md|67|2|Using automatic code-splitting✨
+framework/react/guide/code-splitting.md|100|2|Using the `.lazy.tsx` suffix
+framework/react/guide/code-splitting.md|116|3|Example code splitting with `.lazy.tsx`
+framework/react/guide/code-splitting.md|167|2|Using Virtual Routes
+framework/react/guide/code-splitting.md|212|2|Code-Based Splitting
+framework/react/guide/code-splitting.md|239|2|Data Loader Splitting
+framework/react/guide/code-splitting.md|264|2|Manually accessing Route APIs in other files with the `getRouteApi` helper
+framework/react/guide/creating-a-router.md|5|2|The `Router` Class
+framework/react/guide/creating-a-router.md|17|2|Route Tree
+framework/react/guide/creating-a-router.md|23|3|Filesystem Route Tree
+framework/react/guide/creating-a-router.md|31|3|Code-Based Route Tree
+framework/react/guide/creating-a-router.md|41|2|Router Type Safety
+framework/react/guide/creating-a-router.md|59|2|404 Not Found Route
+framework/react/guide/creating-a-router.md|74|2|Other Options
+framework/react/guide/custom-link.md|7|2|`createLink` for cross-cutting concerns
+framework/react/guide/custom-link.md|11|3|Basic example
+framework/react/guide/custom-link.md|50|2|`createLink` with third party libraries
+framework/react/guide/custom-link.md|54|3|React Aria Components example
+framework/react/guide/custom-link.md|90|3|Chakra UI example
+framework/react/guide/custom-link.md|126|3|MUI example
+framework/react/guide/custom-link.md|130|4|`Link`
+framework/react/guide/custom-link.md|167|4|`Button`
+framework/react/guide/custom-link.md|196|4|Usage with `styled`
+framework/react/guide/custom-link.md|211|3|Mantine example
+framework/react/guide/custom-search-param-serialization.md|50|2|Using Base64
+framework/react/guide/custom-search-param-serialization.md|98|2|Using the query-string library
+framework/react/guide/custom-search-param-serialization.md|127|2|Using the JSURL2 library
+framework/react/guide/custom-search-param-serialization.md|152|2|Using the Zipson library
+framework/react/guide/custom-search-param-serialization.md|200|3|Safe Binary Encoding/Decoding
+framework/react/guide/data-loading.md|12|2|The route loading lifecycle
+framework/react/guide/data-loading.md|31|2|To Router Cache or not to Router Cache?
+framework/react/guide/data-loading.md|54|2|Using the Router Cache
+framework/react/guide/data-loading.md|58|2|Route `loader`s
+framework/react/guide/data-loading.md|69|2|`loader` Parameters
+framework/react/guide/data-loading.md|90|2|Consuming data from `loader`s
+framework/react/guide/data-loading.md|109|2|Dependency-based Stale-While-Revalidate Caching
+framework/react/guide/data-loading.md|120|3|Key options
+framework/react/guide/data-loading.md|138|3|⚠️ Some Important Defaults
+framework/react/guide/data-loading.md|145|3|Using `loaderDeps` to access search params
+framework/react/guide/data-loading.md|163|3|Using `staleTime` to control how long data is considered fresh
+framework/react/guide/data-loading.md|180|2|Turning off stale-while-revalidate caching
+framework/react/guide/data-loading.md|201|2|Using `shouldReload` and `gcTime` to opt-out of caching
+framework/react/guide/data-loading.md|217|3|Opting out of caching while still preloading
+framework/react/guide/data-loading.md|223|2|Passing all loader events to an external cache
+framework/react/guide/data-loading.md|236|2|Using Router Context
+framework/react/guide/data-loading.md|299|2|Using Path Params
+framework/react/guide/data-loading.md|310|2|Using Route Context
+framework/react/guide/data-loading.md|331|2|Using Search Params in Loaders
+framework/react/guide/data-loading.md|355|3|Accessing Search Params via `routeOptions.loaderDeps`
+framework/react/guide/data-loading.md|374|2|Using the Abort Signal
+framework/react/guide/data-loading.md|389|2|Using the `preload` flag
+framework/react/guide/data-loading.md|403|2|Handling Slow Loaders
+framework/react/guide/data-loading.md|410|2|Showing a pending component
+framework/react/guide/data-loading.md|419|2|Avoiding Pending Component Flash
+framework/react/guide/data-loading.md|426|2|Handling Errors
+framework/react/guide/data-loading.md|430|3|Handling Errors with `routeOptions.onError`
+framework/react/guide/data-loading.md|445|3|Handling Errors with `routeOptions.onCatch`
+framework/react/guide/data-loading.md|459|3|Handling Errors with `routeOptions.errorComponent`
+framework/react/guide/data-loading.md|527|3|Using the default `ErrorComponent`
+framework/react/guide/data-mutations.md|36|2|Invalidating TanStack Router after a mutation
+framework/react/guide/data-mutations.md|72|2|Long-term mutation State
+framework/react/guide/data-mutations.md|85|2|Using mutation keys
+framework/react/guide/data-mutations.md|124|2|Using the `router.subscribe` method
+framework/react/guide/deferred-data-loading.md|12|2|Deferred Data Loading with `Await`
+framework/react/guide/deferred-data-loading.md|78|2|Deferred Data Loading with External libraries
+framework/react/guide/deferred-data-loading.md|132|2|Caching and Invalidation
+framework/react/guide/deferred-data-loading.md|138|2|SSR & Streaming Deferred Data
+framework/react/guide/deferred-data-loading.md|144|2|SSR Streaming Lifecycle
+framework/react/guide/document-head-management.md|20|2|Managing the Document Head
+framework/react/guide/document-head-management.md|58|3|Deduping
+framework/react/guide/document-head-management.md|65|3|``
+framework/react/guide/document-head-management.md|71|3|Start/Full-Stack Applications
+framework/react/guide/document-head-management.md|90|3|Single-Page Applications
+framework/react/guide/document-head-management.md|107|2|Managing Body Scripts
+framework/react/guide/document-head-management.md|126|3|``
+framework/react/guide/document-head-management.md|130|3|Example
+framework/react/guide/external-data-loading.md|9|2|To **Store** or to **Coordinate**?
+framework/react/guide/external-data-loading.md|15|2|What data fetching libraries are supported?
+framework/react/guide/external-data-loading.md|35|2|Using Loaders to ensure data is loaded
+framework/react/guide/external-data-loading.md|72|2|A more realistic example using TanStack Query
+framework/react/guide/external-data-loading.md|103|3|Error handling with TanStack Query
+framework/react/guide/external-data-loading.md|136|2|SSR Dehydration/Hydration
+framework/react/guide/external-data-loading.md|140|2|Critical Dehydration/Hydration
+framework/react/guide/history-types.md|25|2|Browser Routing
+framework/react/guide/history-types.md|29|2|Hash Routing
+framework/react/guide/history-types.md|41|2|Memory Routing
+framework/react/guide/link-options.md|20|3|Using `linkOptions` function to create re-usable options
+framework/react/guide/link-options.md|67|3|An array of `linkOptions`
+framework/react/guide/navigation-blocking.md|16|2|How does navigation blocking work?
+framework/react/guide/navigation-blocking.md|25|2|How do I use navigation blocking?
+framework/react/guide/navigation-blocking.md|32|2|Hook/logical-based blocking
+framework/react/guide/navigation-blocking.md|103|2|Component-based blocking
+framework/react/guide/navigation-blocking.md|143|2|How can I show a custom UI?
+framework/react/guide/navigation-blocking.md|151|3|Hook/logical-based custom UI with resolver
+framework/react/guide/navigation-blocking.md|184|3|Hook/logical-based custom UI without resolver
+framework/react/guide/navigation-blocking.md|229|3|Component-based custom UI
+framework/react/guide/navigation.md|5|2|Everything is Relative
+framework/react/guide/navigation.md|16|2|Shared Navigation API
+framework/react/guide/navigation.md|20|3|`ToOptions` Interface
+framework/react/guide/navigation.md|61|3|`NavigateOptions` Interface
+framework/react/guide/navigation.md|88|3|`LinkOptions` Interface
+framework/react/guide/navigation.md|116|2|Navigation API
+framework/react/guide/navigation.md|131|2|`` Component
+framework/react/guide/navigation.md|153|3|Absolute Links
+framework/react/guide/navigation.md|163|3|Dynamic Links
+framework/react/guide/navigation.md|182|3|Relative Links
+framework/react/guide/navigation.md|202|3|Special relative paths: `"."` and `".."`
+framework/react/guide/navigation.md|233|3|Search Param Links
+framework/react/guide/navigation.md|266|3|Search Param Type Safety
+framework/react/guide/navigation.md|270|3|Hash Links
+framework/react/guide/navigation.md|288|3|Navigating with Optional Parameters
+framework/react/guide/navigation.md|292|4|Parameter Inheritance vs Removal
+framework/react/guide/navigation.md|316|4|Basic Optional Parameter Navigation
+framework/react/guide/navigation.md|344|4|Function-Style Parameter Updates
+framework/react/guide/navigation.md|377|4|Multiple Optional Parameters
+framework/react/guide/navigation.md|407|4|Mixed Required and Optional Parameters
+framework/react/guide/navigation.md|437|4|Advanced Optional Parameter Patterns
+framework/react/guide/navigation.md|489|4|Navigation with Search Params and Optional Parameters
+framework/react/guide/navigation.md|513|4|Imperative Navigation with Optional Parameters
+framework/react/guide/navigation.md|544|3|Active & Inactive Props
+framework/react/guide/navigation.md|568|3|The `data-status` attribute
+framework/react/guide/navigation.md|572|3|Active Options
+framework/react/guide/navigation.md|635|3|Passing `isActive` to children
+framework/react/guide/navigation.md|654|3|Link Preloading
+framework/react/guide/navigation.md|670|3|Link Preloading Delay
+framework/react/guide/navigation.md|682|2|`useNavigate`
+framework/react/guide/navigation.md|711|3|`navigate` Options
+framework/react/guide/navigation.md|715|2|`Navigate` Component
+framework/react/guide/navigation.md|727|2|`router.navigate`
+framework/react/guide/navigation.md|731|2|`useMatchRoute` and ``
+framework/react/guide/not-found-errors.md|7|2|Overview
+framework/react/guide/not-found-errors.md|26|2|The `notFoundMode` option
+framework/react/guide/not-found-errors.md|35|3|`notFoundMode: 'fuzzy'`
+framework/react/guide/not-found-errors.md|60|3|`notFoundMode: 'root'`
+framework/react/guide/not-found-errors.md|77|2|Configuring a route's `notFoundComponent`
+framework/react/guide/not-found-errors.md|122|2|Default Router-Wide Not Found Handling
+framework/react/guide/not-found-errors.md|143|2|Throwing your own `notFound` errors
+framework/react/guide/not-found-errors.md|169|2|Specifying Which Routes Handle Not Found Errors
+framework/react/guide/not-found-errors.md|204|3|Manually targeting the root route
+framework/react/guide/not-found-errors.md|220|3|Throwing Not Found Errors in Components
+framework/react/guide/not-found-errors.md|226|3|Data Loading Inside `notFoundComponent`
+framework/react/guide/not-found-errors.md|257|2|Usage With SSR
+framework/react/guide/not-found-errors.md|261|2|Migrating from `NotFoundRoute`
+framework/react/guide/outlets.md|7|2|The `Outlet` Component
+framework/react/guide/path-params.md|30|2|Path Params can be used by child routes
+framework/react/guide/path-params.md|34|2|Path Params in Loaders
+framework/react/guide/path-params.md|56|2|Path Params in Components
+framework/react/guide/path-params.md|73|2|Path Params outside of Routes
+framework/react/guide/path-params.md|84|2|Navigating with Path Params
+framework/react/guide/path-params.md|114|2|Prefixes and Suffixes for Path Params
+framework/react/guide/path-params.md|120|3|Defining Prefixes
+framework/react/guide/path-params.md|153|3|Defining Suffixes
+framework/react/guide/path-params.md|185|3|Combining Prefixes and Suffixes
+framework/react/guide/path-params.md|204|2|Optional Path Parameters
+framework/react/guide/path-params.md|208|3|Defining Optional Parameters
+framework/react/guide/path-params.md|232|3|How Optional Parameters Work
+framework/react/guide/path-params.md|242|3|Accessing Optional Parameters
+framework/react/guide/path-params.md|254|3|Optional Parameters in Loaders
+framework/react/guide/path-params.md|267|3|Optional Parameters in beforeLoad
+framework/react/guide/path-params.md|282|3|Advanced Optional Parameter Patterns
+framework/react/guide/path-params.md|284|4|With Prefix and Suffix
+framework/react/guide/path-params.md|301|4|All Optional Parameters
+framework/react/guide/path-params.md|332|4|Optional Parameters with Wildcards
+framework/react/guide/path-params.md|356|3|Navigating with Optional Parameters
+framework/react/guide/path-params.md|386|3|Type Safety with Optional Parameters
+framework/react/guide/path-params.md|417|2|Internationalization (i18n) with Optional Path Parameters
+framework/react/guide/path-params.md|421|3|Prefix-based i18n
+framework/react/guide/path-params.md|463|3|Complex i18n Patterns
+framework/react/guide/path-params.md|514|3|Language Navigation
+framework/react/guide/path-params.md|597|3|Advanced i18n with Optional Parameters
+framework/react/guide/path-params.md|634|3|SEO and Canonical URLs
+framework/react/guide/path-params.md|685|3|Type Safety for i18n
+framework/react/guide/path-params.md|741|2|Allowed Characters
+framework/react/guide/preloading.md|7|2|Supported Preloading Strategies
+framework/react/guide/preloading.md|19|2|How long does preloaded data stay in memory?
+framework/react/guide/preloading.md|41|2|Preload Delay
+framework/react/guide/preloading.md|56|2|Built-in Preloading & `preloadStaleTime`
+framework/react/guide/preloading.md|82|2|Preloading with External Libraries
+framework/react/guide/preloading.md|101|2|Preloading Manually
+framework/react/guide/render-optimizations.md|7|2|structural sharing
+framework/react/guide/render-optimizations.md|19|2|fine-grained selectors
+framework/react/guide/render-optimizations.md|28|3|structural sharing with fine-grained selectors
+framework/react/guide/render-optimizations.md|49|4|Enable it by default in the router options:
+framework/react/guide/render-optimizations.md|58|4|Enable it per hook usage as shown here:
+framework/react/guide/route-masking.md|14|2|How does route masking work?
+framework/react/guide/route-masking.md|43|2|How do I use route masking?
+framework/react/guide/route-masking.md|54|3|Imperative route masking
+framework/react/guide/route-masking.md|92|3|Declarative route masking
+framework/react/guide/route-masking.md|124|2|Unmasking when sharing the URL
+framework/react/guide/route-masking.md|128|2|Local Unmasking Defaults
+framework/react/guide/route-masking.md|132|2|Unmasking on page reload
+framework/react/guide/router-context.md|16|2|Typed Router Context
+framework/react/guide/router-context.md|45|2|Passing the initial Router Context
+framework/react/guide/router-context.md|67|3|Invalidating the Router Context
+framework/react/guide/router-context.md|89|2|Using the Router Context
+framework/react/guide/router-context.md|131|3|How about an external data fetching library?
+framework/react/guide/router-context.md|172|2|How about using React Context/Hooks?
+framework/react/guide/router-context.md|247|2|Modifying the Router Context
+framework/react/guide/router-context.md|299|2|Processing Accumulated Route Context
+framework/react/guide/scroll-restoration.md|6|2|Hash/Top-of-Page Scrolling
+framework/react/guide/scroll-restoration.md|10|2|Scroll-to-top & Nested Scrollable Areas
+framework/react/guide/scroll-restoration.md|35|2|Scroll Restoration
+framework/react/guide/scroll-restoration.md|68|2|Custom Cache Keys
+framework/react/guide/scroll-restoration.md|78|2|Examples
+framework/react/guide/scroll-restoration.md|105|2|Preventing Scroll Restoration
+framework/react/guide/scroll-restoration.md|115|2|Manual Scroll Restoration
+framework/react/guide/scroll-restoration.md|193|2|Scroll Behavior
+framework/react/guide/search-params.md|9|2|Why not just use `URLSearchParams`?
+framework/react/guide/search-params.md|27|2|Search Params, the "OG" State Manager
+framework/react/guide/search-params.md|40|2|JSON-first Search Params
+framework/react/guide/search-params.md|85|2|Validating and Typing Search Params
+framework/react/guide/search-params.md|89|3|Enter Validation + TypeScript!
+framework/react/guide/search-params.md|118|3|Validating Search Params
+framework/react/guide/search-params.md|177|4|Adapters
+framework/react/guide/search-params.md|204|3|Zod
+framework/react/guide/search-params.md|274|3|Valibot
+framework/react/guide/search-params.md|299|3|Arktype
+framework/react/guide/search-params.md|321|3|Effect/Schema
+framework/react/guide/search-params.md|360|2|Reading Search Params
+framework/react/guide/search-params.md|364|3|Using Search Params in Loaders
+framework/react/guide/search-params.md|368|3|Search Params are inherited from Parent Routes
+framework/react/guide/search-params.md|399|3|Search Params in Components
+framework/react/guide/search-params.md|420|3|Search Params outside of Route Components
+framework/react/guide/search-params.md|466|2|Writing Search Params
+framework/react/guide/search-params.md|470|3|``
+framework/react/guide/search-params.md|530|3|`useNavigate(), navigate({ search })`
+framework/react/guide/search-params.md|559|3|`router.navigate({ search })`
+framework/react/guide/search-params.md|563|3|``
+framework/react/guide/search-params.md|567|2|Transforming search with search middlewares
+framework/react/guide/ssr.md|21|2|Non-Streaming SSR
+framework/react/guide/ssr.md|39|3|Automatic Server History
+framework/react/guide/ssr.md|43|3|Automatic Loader Dehydration/Hydration
+framework/react/guide/ssr.md|51|3|Router Creation
+framework/react/guide/ssr.md|71|3|Rendering the Application on the Server
+framework/react/guide/ssr.md|121|2|Rendering the Application on the Client
+framework/react/guide/ssr.md|145|2|Streaming SSR
+framework/react/guide/ssr.md|196|2|Streaming Dehydration/Hydration
+framework/react/guide/ssr.md|200|2|Data Serialization
+framework/react/guide/static-route-data.md|9|2|Example
+framework/react/guide/static-route-data.md|45|2|Enforcing Static Data
+framework/react/guide/static-route-data.md|69|2|Optional Static Data
+framework/react/guide/type-safety.md|9|2|Route Definitions
+framework/react/guide/type-safety.md|11|3|File-based Routing
+framework/react/guide/type-safety.md|15|3|Code-based Routing
+framework/react/guide/type-safety.md|27|2|Exported Hooks, Components, and Utilities
+framework/react/guide/type-safety.md|45|2|Fixing the Component Context Problem
+framework/react/guide/type-safety.md|70|3|What if I don't know the route? What if it's a shared component?
+framework/react/guide/type-safety.md|74|3|What if I pass the wrong `from` path?
+framework/react/guide/type-safety.md|78|3|What if I don't know the route, or it's a shared component, and I can't pass `from`?
+framework/react/guide/type-safety.md|90|2|Router Context
+framework/react/guide/type-safety.md|114|2|Performance Recommendations
+framework/react/guide/type-safety.md|118|3|Only infer types you need
+framework/react/guide/type-safety.md|157|3|Narrow to relevant routes as much as you possibly can
+framework/react/guide/type-safety.md|191|3|Consider using the object syntax of `addChildren`
+framework/react/guide/type-safety.md|206|3|Avoid internal types without narrowing
+framework/react/guide/type-utilities.md|8|2|Type checking Link options with `ValidateLinkOptions`
+framework/react/guide/type-utilities.md|45|2|Type checking an array of Link options with `ValidateLinkOptionsArray`
+framework/react/guide/type-utilities.md|124|2|Type checking redirect options with `ValidateRedirectOptions`
+framework/react/guide/type-utilities.md|156|2|Type checking navigate options with `ValidateNavigateOptions`
+framework/react/how-to/README.md|1|1|How-To Guides
+framework/react/how-to/README.md|10|2|Available Guides
+framework/react/how-to/README.md|18|3|Authentication
+framework/react/how-to/README.md|24|3|Testing & Debugging
+framework/react/how-to/README.md|30|3|UI Library Integration
+framework/react/how-to/README.md|37|3|Search Parameters & URL State (Progressive Series)
+framework/react/how-to/README.md|63|2|Using These Guides
+framework/react/how-to/README.md|73|2|Contributing
+framework/react/how-to/arrays-objects-dates-search-params.md|7|2|Quick Start
+framework/react/how-to/arrays-objects-dates-search-params.md|35|2|Working with Arrays
+framework/react/how-to/arrays-objects-dates-search-params.md|39|3|Basic Array Validation
+framework/react/how-to/arrays-objects-dates-search-params.md|74|3|Navigating with Arrays
+framework/react/how-to/arrays-objects-dates-search-params.md|119|3|Advanced Array Patterns
+framework/react/how-to/arrays-objects-dates-search-params.md|153|2|Working with Objects
+framework/react/how-to/arrays-objects-dates-search-params.md|157|3|Basic Object Validation
+framework/react/how-to/arrays-objects-dates-search-params.md|207|3|Navigating with Objects
+framework/react/how-to/arrays-objects-dates-search-params.md|293|2|Working with Dates
+framework/react/how-to/arrays-objects-dates-search-params.md|297|3|Date Validation and Serialization
+framework/react/how-to/arrays-objects-dates-search-params.md|348|3|Date Navigation Patterns
+framework/react/how-to/arrays-objects-dates-search-params.md|413|2|Nested Data Structures
+framework/react/how-to/arrays-objects-dates-search-params.md|417|3|Complex Nested Schema
+framework/react/how-to/arrays-objects-dates-search-params.md|485|3|Managing Complex State Updates
+framework/react/how-to/arrays-objects-dates-search-params.md|565|2|Performance Optimization
+framework/react/how-to/arrays-objects-dates-search-params.md|567|3|Selective Updates with Selectors
+framework/react/how-to/arrays-objects-dates-search-params.md|596|3|Memoization for Complex Transforms
+framework/react/how-to/arrays-objects-dates-search-params.md|624|2|Production Checklist
+framework/react/how-to/arrays-objects-dates-search-params.md|635|2|Common Problems
+framework/react/how-to/arrays-objects-dates-search-params.md|637|3|Problem: Array Parameters Not Updating
+framework/react/how-to/arrays-objects-dates-search-params.md|659|3|Problem: Dates Not Serializing Correctly
+framework/react/how-to/arrays-objects-dates-search-params.md|679|3|Problem: Deep Object Updates Not Working
+framework/react/how-to/arrays-objects-dates-search-params.md|704|3|Problem: URL Too Long Error
+framework/react/how-to/arrays-objects-dates-search-params.md|728|3|Problem: Performance Issues with Large Objects
+framework/react/how-to/arrays-objects-dates-search-params.md|750|2|Common Next Steps
+framework/react/how-to/arrays-objects-dates-search-params.md|757|2|Related Resources
+framework/react/how-to/debug-router-issues.md|7|2|Quick Start
+framework/react/how-to/debug-router-issues.md|13|2|Essential Debugging Tools
+framework/react/how-to/debug-router-issues.md|15|3|1. TanStack Router DevTools
+framework/react/how-to/debug-router-issues.md|46|3|2. Debug Mode Configuration
+framework/react/how-to/debug-router-issues.md|62|3|3. Browser DevTools Setup
+framework/react/how-to/debug-router-issues.md|80|2|Route Matching Issues
+framework/react/how-to/debug-router-issues.md|82|3|Problem: Route Not Found (404)
+framework/react/how-to/debug-router-issues.md|126|3|Problem: Route Parameters Not Working
+framework/react/how-to/debug-router-issues.md|183|2|Navigation Issues
+framework/react/how-to/debug-router-issues.md|185|3|Problem: Navigation Not Working
+framework/react/how-to/debug-router-issues.md|238|3|Problem: Navigation Redirects Unexpectedly
+framework/react/how-to/debug-router-issues.md|283|2|Data Loading Problems
+framework/react/how-to/debug-router-issues.md|285|3|Problem: Route Data Not Loading
+framework/react/how-to/debug-router-issues.md|355|2|Search Parameters Issues
+framework/react/how-to/debug-router-issues.md|357|3|Problem: Search Params Not Updating
+framework/react/how-to/debug-router-issues.md|421|2|Performance Issues
+framework/react/how-to/debug-router-issues.md|423|3|Problem: Excessive Re-renders
+framework/react/how-to/debug-router-issues.md|490|3|Problem: Memory Leaks
+framework/react/how-to/debug-router-issues.md|537|2|TypeScript Issues
+framework/react/how-to/debug-router-issues.md|539|3|Problem: Type Errors with Router
+framework/react/how-to/debug-router-issues.md|563|1|Check if route types are being generated
+framework/react/how-to/debug-router-issues.md|566|1|Regenerate route types if needed
+framework/react/how-to/debug-router-issues.md|587|2|Systematic Debugging Process
+framework/react/how-to/debug-router-issues.md|589|3|1. Information Gathering
+framework/react/how-to/debug-router-issues.md|615|3|2. Isolation Testing
+framework/react/how-to/debug-router-issues.md|637|3|3. Step-by-Step Debugging
+framework/react/how-to/debug-router-issues.md|647|2|Browser Debugging Tips
+framework/react/how-to/debug-router-issues.md|649|3|Console Commands
+framework/react/how-to/debug-router-issues.md|670|3|Network Tab
+framework/react/how-to/debug-router-issues.md|678|3|React DevTools
+framework/react/how-to/debug-router-issues.md|686|2|Common Error Messages
+framework/react/how-to/debug-router-issues.md|688|3|"Route not found"
+framework/react/how-to/debug-router-issues.md|694|3|"Cannot read property 'useParams' of undefined"
+framework/react/how-to/debug-router-issues.md|700|3|"Invalid search params"
+framework/react/how-to/debug-router-issues.md|706|3|"Navigation was interrupted"
+framework/react/how-to/debug-router-issues.md|714|2|Performance Monitoring
+framework/react/how-to/debug-router-issues.md|716|3|Enable Performance Tracking
+framework/react/how-to/debug-router-issues.md|734|3|Monitor Route Loading Times
+framework/react/how-to/debug-router-issues.md|752|2|Common Next Steps
+framework/react/how-to/debug-router-issues.md|764|2|Related Resources
+framework/react/how-to/deploy-to-production.md|7|2|Quick Start
+framework/react/how-to/deploy-to-production.md|13|2|Netlify Deployment
+framework/react/how-to/deploy-to-production.md|15|3|1. Create `_redirects` File
+framework/react/how-to/deploy-to-production.md|23|3|2. Alternative: `netlify.toml`
+framework/react/how-to/deploy-to-production.md|38|3|3. For TanStack Start (SSR)
+framework/react/how-to/deploy-to-production.md|61|2|Cloudflare Pages
+framework/react/how-to/deploy-to-production.md|63|3|1. Create `_redirects` File
+framework/react/how-to/deploy-to-production.md|71|3|2. Alternative: `_routes.json`
+framework/react/how-to/deploy-to-production.md|83|3|3. For TanStack Start (SSR)
+framework/react/how-to/deploy-to-production.md|94|3|4. Deploy via Git
+framework/react/how-to/deploy-to-production.md|102|3|5. Deploy via Wrangler CLI
+framework/react/how-to/deploy-to-production.md|105|1|Install Wrangler
+framework/react/how-to/deploy-to-production.md|108|1|Deploy
+framework/react/how-to/deploy-to-production.md|114|2|Vercel Deployment
+framework/react/how-to/deploy-to-production.md|116|3|1. Create `vercel.json`
+framework/react/how-to/deploy-to-production.md|131|3|2. For TanStack Start (SSR) Applications
+framework/react/how-to/deploy-to-production.md|151|3|3. Build Configuration
+framework/react/how-to/deploy-to-production.md|164|3|4. Deploy
+framework/react/how-to/deploy-to-production.md|167|1|Install Vercel CLI
+framework/react/how-to/deploy-to-production.md|170|1|Deploy
+framework/react/how-to/deploy-to-production.md|176|2|GitHub Pages
+framework/react/how-to/deploy-to-production.md|178|3|1. Create `404.html`
+framework/react/how-to/deploy-to-production.md|183|1|After building
+framework/react/how-to/deploy-to-production.md|187|3|2. Update `vite.config.js`
+framework/react/how-to/deploy-to-production.md|209|3|3. GitHub Actions Workflow
+framework/react/how-to/deploy-to-production.md|250|2|Firebase Hosting
+framework/react/how-to/deploy-to-production.md|252|3|1. Create `firebase.json`
+framework/react/how-to/deploy-to-production.md|269|3|2. Deploy
+framework/react/how-to/deploy-to-production.md|272|1|Install Firebase CLI
+framework/react/how-to/deploy-to-production.md|275|1|Login and initialize
+framework/react/how-to/deploy-to-production.md|279|1|Build and deploy
+framework/react/how-to/deploy-to-production.md|286|2|Apache Server
+framework/react/how-to/deploy-to-production.md|303|2|Nginx
+framework/react/how-to/deploy-to-production.md|328|2|Docker Deployment
+framework/react/how-to/deploy-to-production.md|330|3|1. Create `Dockerfile`
+framework/react/how-to/deploy-to-production.md|333|1|Build stage
+framework/react/how-to/deploy-to-production.md|341|1|Production stage
+framework/react/how-to/deploy-to-production.md|349|3|2. Create `nginx.conf`
+framework/react/how-to/deploy-to-production.md|364|3|3. Build and Run
+framework/react/how-to/deploy-to-production.md|373|2|Production Checklist
+framework/react/how-to/deploy-to-production.md|385|2|Common Problems
+framework/react/how-to/deploy-to-production.md|387|3|404 Errors on Page Refresh
+framework/react/how-to/deploy-to-production.md|395|3|App Works Locally But Breaks When Deployed
+framework/react/how-to/deploy-to-production.md|421|3|Assets Not Loading (CSS/JS 404s)
+framework/react/how-to/deploy-to-production.md|433|2|Common Next Steps
+framework/react/how-to/deploy-to-production.md|446|2|Related Resources
+framework/react/how-to/install.md|5|2|Prerequisites
+framework/react/how-to/install.md|11|2|Installation Steps
+framework/react/how-to/integrate-chakra-ui.md|7|2|Quick Start
+framework/react/how-to/integrate-chakra-ui.md|13|3|What You'll Accomplish
+framework/react/how-to/integrate-chakra-ui.md|23|2|Installation and Setup
+framework/react/how-to/integrate-chakra-ui.md|25|3|Step 1: Install Chakra UI Dependencies
+framework/react/how-to/integrate-chakra-ui.md|31|3|Step 2: Set Up Chakra Provider
+framework/react/how-to/integrate-chakra-ui.md|89|3|Step 3: Update Root Route
+framework/react/how-to/integrate-chakra-ui.md|109|2|Creating Router-Compatible Components
+framework/react/how-to/integrate-chakra-ui.md|111|3|Step 1: Create Router-Compatible Chakra Components
+framework/react/how-to/integrate-chakra-ui.md|141|3|Step 2: Create Navigation Components
+framework/react/how-to/integrate-chakra-ui.md|296|3|Step 3: Create Breadcrumb Navigation
+framework/react/how-to/integrate-chakra-ui.md|367|2|Responsive Design Patterns
+framework/react/how-to/integrate-chakra-ui.md|369|3|Step 1: Create Responsive Layout Component
+framework/react/how-to/integrate-chakra-ui.md|423|3|Step 2: Create Responsive Card Grid
+framework/react/how-to/integrate-chakra-ui.md|462|2|Complete Usage Examples
+framework/react/how-to/integrate-chakra-ui.md|464|3|Step 1: Posts List Page
+framework/react/how-to/integrate-chakra-ui.md|590|3|Step 2: Post Detail Page
+framework/react/how-to/integrate-chakra-ui.md|694|2|Common Problems
+framework/react/how-to/integrate-chakra-ui.md|696|3|Theme Provider Issues
+framework/react/how-to/integrate-chakra-ui.md|722|3|TypeScript Errors with Router Integration
+framework/react/how-to/integrate-chakra-ui.md|741|3|Color Mode Persistence
+framework/react/how-to/integrate-chakra-ui.md|760|3|Responsive Design Issues
+framework/react/how-to/integrate-chakra-ui.md|784|2|Production Checklist
+framework/react/how-to/integrate-chakra-ui.md|788|3|Functionality
+framework/react/how-to/integrate-chakra-ui.md|795|3|Accessibility
+framework/react/how-to/integrate-chakra-ui.md|802|3|Performance
+framework/react/how-to/integrate-chakra-ui.md|809|3|Responsiveness
+framework/react/how-to/integrate-chakra-ui.md|818|2|Related Resources
+framework/react/how-to/integrate-framer-motion.md|7|2|Quick Start
+framework/react/how-to/integrate-framer-motion.md|13|3|What You'll Accomplish
+framework/react/how-to/integrate-framer-motion.md|23|2|Installation and Setup
+framework/react/how-to/integrate-framer-motion.md|25|3|Step 1: Install Framer Motion
+framework/react/how-to/integrate-framer-motion.md|31|3|Step 2: Verify Version Compatibility
+framework/react/how-to/integrate-framer-motion.md|47|2|Route Transition Animations
+framework/react/how-to/integrate-framer-motion.md|49|3|Step 1: Create Animated Route Wrapper
+framework/react/how-to/integrate-framer-motion.md|110|3|Step 2: Set Up Route Animation Container
+framework/react/how-to/integrate-framer-motion.md|135|3|Step 3: Update Root Route for Animations
+framework/react/how-to/integrate-framer-motion.md|155|3|Step 4: Use Animations in Routes
+framework/react/how-to/integrate-framer-motion.md|208|2|Animated Navigation Components
+framework/react/how-to/integrate-framer-motion.md|210|3|Step 1: Create Animated Tab Navigation
+framework/react/how-to/integrate-framer-motion.md|265|3|Step 2: Create Sliding Mobile Menu
+framework/react/how-to/integrate-framer-motion.md|368|3|Step 3: Create Floating Action Button with Animations
+framework/react/how-to/integrate-framer-motion.md|415|2|Advanced Animation Patterns
+framework/react/how-to/integrate-framer-motion.md|417|3|Step 1: Shared Element Transitions
+framework/react/how-to/integrate-framer-motion.md|477|3|Step 2: Route-Based Animation Variants
+framework/react/how-to/integrate-framer-motion.md|540|3|Step 3: Loading Animations
+framework/react/how-to/integrate-framer-motion.md|584|2|Complete Example
+framework/react/how-to/integrate-framer-motion.md|586|3|App with Full Animation Integration
+framework/react/how-to/integrate-framer-motion.md|663|2|Common Problems
+framework/react/how-to/integrate-framer-motion.md|665|3|Animations Not Triggering
+framework/react/how-to/integrate-framer-motion.md|691|3|Performance Issues
+framework/react/how-to/integrate-framer-motion.md|718|3|Layout Shift Issues
+framework/react/how-to/integrate-framer-motion.md|739|2|Production Checklist
+framework/react/how-to/integrate-framer-motion.md|743|3|Performance
+framework/react/how-to/integrate-framer-motion.md|750|3|User Experience
+framework/react/how-to/integrate-framer-motion.md|757|3|Accessibility
+framework/react/how-to/integrate-framer-motion.md|764|3|Technical
+framework/react/how-to/integrate-framer-motion.md|773|2|Related Resources
+framework/react/how-to/integrate-material-ui.md|7|2|Quick Start
+framework/react/how-to/integrate-material-ui.md|13|3|What You'll Accomplish
+framework/react/how-to/integrate-material-ui.md|23|2|Installation and Setup
+framework/react/how-to/integrate-material-ui.md|25|3|Step 1: Install Material-UI Dependencies
+framework/react/how-to/integrate-material-ui.md|37|3|Step 2: Set Up Theme Provider
+framework/react/how-to/integrate-material-ui.md|96|3|Step 3: Update Root Route
+framework/react/how-to/integrate-material-ui.md|118|2|Creating Router-Compatible MUI Components
+framework/react/how-to/integrate-material-ui.md|120|3|Step 1: Create Typed MUI Link Component
+framework/react/how-to/integrate-material-ui.md|138|3|Step 2: Create Typed MUI Button Component
+framework/react/how-to/integrate-material-ui.md|154|3|Step 3: Create Advanced Navigation Components
+framework/react/how-to/integrate-material-ui.md|172|2|Implementing Navigation with Active States
+framework/react/how-to/integrate-material-ui.md|174|3|Step 1: Create Navigation Tabs with Active States
+framework/react/how-to/integrate-material-ui.md|222|3|Step 2: Create Navigation Drawer
+framework/react/how-to/integrate-material-ui.md|303|3|Step 3: Create App Bar with Navigation
+framework/react/how-to/integrate-material-ui.md|424|2|Usage Examples
+framework/react/how-to/integrate-material-ui.md|426|3|Complete Page Example
+framework/react/how-to/integrate-material-ui.md|511|3|Layout with Navigation
+framework/react/how-to/integrate-material-ui.md|556|2|Common Problems
+framework/react/how-to/integrate-material-ui.md|558|3|TypeScript Errors with Component Props
+framework/react/how-to/integrate-material-ui.md|576|3|Styling Conflicts
+framework/react/how-to/integrate-material-ui.md|612|3|Theme Not Applied Correctly
+framework/react/how-to/integrate-material-ui.md|638|3|Performance Issues with Large Apps
+framework/react/how-to/integrate-material-ui.md|678|2|Production Checklist
+framework/react/how-to/integrate-material-ui.md|682|3|Functionality
+framework/react/how-to/integrate-material-ui.md|689|3|Performance
+framework/react/how-to/integrate-material-ui.md|696|3|Styling
+framework/react/how-to/integrate-material-ui.md|703|3|Accessibility
+framework/react/how-to/integrate-material-ui.md|712|2|Related Resources
+framework/react/how-to/integrate-shadcn-ui.md|7|2|Quick Start
+framework/react/how-to/integrate-shadcn-ui.md|13|3|What You'll Accomplish
+framework/react/how-to/integrate-shadcn-ui.md|23|2|Installation and Setup
+framework/react/how-to/integrate-shadcn-ui.md|25|3|Step 1: Install Shadcn/ui
+framework/react/how-to/integrate-shadcn-ui.md|39|3|Step 2: Configure components.json
+framework/react/how-to/integrate-shadcn-ui.md|62|3|Step 3: Add Essential Components
+framework/react/how-to/integrate-shadcn-ui.md|75|2|Fixing Animation Issues
+framework/react/how-to/integrate-shadcn-ui.md|77|3|Step 1: Set Up Proper DOM Structure
+framework/react/how-to/integrate-shadcn-ui.md|103|3|Step 2: Create Router-Compatible Sheet Component
+framework/react/how-to/integrate-shadcn-ui.md|156|3|Step 3: Create Router-Compatible Dialog Component
+framework/react/how-to/integrate-shadcn-ui.md|209|2|Creating Navigation Components
+framework/react/how-to/integrate-shadcn-ui.md|211|3|Step 1: Router-Compatible Navigation Menu
+framework/react/how-to/integrate-shadcn-ui.md|265|3|Step 2: Create Router-Compatible Button Links
+framework/react/how-to/integrate-shadcn-ui.md|281|3|Step 3: Usage Example
+framework/react/how-to/integrate-shadcn-ui.md|336|2|Common Problems
+framework/react/how-to/integrate-shadcn-ui.md|338|3|Animation Components Not Working
+framework/react/how-to/integrate-shadcn-ui.md|369|3|TypeScript Errors with Router Integration
+framework/react/how-to/integrate-shadcn-ui.md|383|3|Styling Conflicts
+framework/react/how-to/integrate-shadcn-ui.md|410|3|Dark Mode Integration
+framework/react/how-to/integrate-shadcn-ui.md|486|2|Production Checklist
+framework/react/how-to/integrate-shadcn-ui.md|490|3|Styling
+framework/react/how-to/integrate-shadcn-ui.md|498|3|Functionality
+framework/react/how-to/integrate-shadcn-ui.md|505|3|Performance
+framework/react/how-to/integrate-shadcn-ui.md|513|2|Related Resources
+framework/react/how-to/migrate-from-react-router.md|7|2|Quick Start
+framework/react/how-to/migrate-from-react-router.md|13|3|What You'll Accomplish
+framework/react/how-to/migrate-from-react-router.md|25|2|Complete Migration Process
+framework/react/how-to/migrate-from-react-router.md|27|3|Step 1: Prepare for Migration
+framework/react/how-to/migrate-from-react-router.md|41|1|Install TanStack Router
+framework/react/how-to/migrate-from-react-router.md|44|1|Install development dependencies
+framework/react/how-to/migrate-from-react-router.md|67|3|Step 2: Create TanStack Router Configuration
+framework/react/how-to/migrate-from-react-router.md|87|3|Step 3: Convert Your React Router v7 Structure
+framework/react/how-to/migrate-from-react-router.md|258|3|Step 4: Handle React Router v7 Framework Features
+framework/react/how-to/migrate-from-react-router.md|344|3|Step 5: Update Navigation Components
+framework/react/how-to/migrate-from-react-router.md|396|3|Step 6: Handle React Router v7 Specific Features
+framework/react/how-to/migrate-from-react-router.md|450|3|Step 7: Update Your Main Router Setup
+framework/react/how-to/migrate-from-react-router.md|483|3|Step 8: Handle Search Parameters
+framework/react/how-to/migrate-from-react-router.md|528|3|Step 9: Remove React Router Dependencies
+framework/react/how-to/migrate-from-react-router.md|543|1|Find remaining React Router imports
+framework/react/how-to/migrate-from-react-router.md|549|3|Step 10: Add Advanced Type Safety
+framework/react/how-to/migrate-from-react-router.md|586|2|Production Checklist
+framework/react/how-to/migrate-from-react-router.md|590|3|Router Configuration
+framework/react/how-to/migrate-from-react-router.md|597|3|Route Migration
+framework/react/how-to/migrate-from-react-router.md|605|3|Feature Migration
+framework/react/how-to/migrate-from-react-router.md|613|3|Navigation Updates
+framework/react/how-to/migrate-from-react-router.md|620|3|Code Cleanup
+framework/react/how-to/migrate-from-react-router.md|628|3|Testing
+framework/react/how-to/migrate-from-react-router.md|640|2|Common Problems
+framework/react/how-to/migrate-from-react-router.md|642|3|Error: "Cannot use useNavigate outside of context"
+framework/react/how-to/migrate-from-react-router.md|655|3|TypeScript Errors: Route Parameters
+framework/react/how-to/migrate-from-react-router.md|672|3|React Router v7 Framework Features Not Working
+framework/react/how-to/migrate-from-react-router.md|683|3|Routes Not Matching
+framework/react/how-to/migrate-from-react-router.md|696|3|React Router v7 Simplified APIs Not Translating
+framework/react/how-to/migrate-from-react-router.md|708|2|React Router v7 vs TanStack Router Feature Comparison
+framework/react/how-to/migrate-from-react-router.md|723|2|Common Next Steps
+framework/react/how-to/migrate-from-react-router.md|727|3|Advanced Features to Explore
+framework/react/how-to/migrate-from-react-router.md|737|2|Related Resources
+framework/react/how-to/navigate-with-search-params.md|9|2|Quick Start
+framework/react/how-to/navigate-with-search-params.md|29|2|Navigation Methods
+framework/react/how-to/navigate-with-search-params.md|31|3|Using Link Components
+framework/react/how-to/navigate-with-search-params.md|33|4|Basic Search Parameter Updates
+framework/react/how-to/navigate-with-search-params.md|55|4|Functional Search Parameter Updates
+framework/react/how-to/navigate-with-search-params.md|94|4|Preserving All Search Parameters
+framework/react/how-to/navigate-with-search-params.md|118|4|Navigation with Route Changes
+framework/react/how-to/navigate-with-search-params.md|159|3|Programmatic Navigation
+framework/react/how-to/navigate-with-search-params.md|161|4|Using useNavigate Hook
+framework/react/how-to/navigate-with-search-params.md|211|4|Navigation with Router Instance
+framework/react/how-to/navigate-with-search-params.md|273|2|Advanced Navigation Patterns
+framework/react/how-to/navigate-with-search-params.md|275|3|Conditional Navigation
+framework/react/how-to/navigate-with-search-params.md|300|2|Common Patterns
+framework/react/how-to/navigate-with-search-params.md|302|2|Common Problems
+framework/react/how-to/navigate-with-search-params.md|304|3|Search Parameters Not Updating
+framework/react/how-to/navigate-with-search-params.md|318|3|Losing Existing Search Parameters
+framework/react/how-to/navigate-with-search-params.md|332|2|Common Next Steps
+framework/react/how-to/navigate-with-search-params.md|343|2|Related Resources
+framework/react/how-to/setup-auth-providers.md|7|2|Quick Start
+framework/react/how-to/setup-auth-providers.md|13|2|Auth0 Integration
+framework/react/how-to/setup-auth-providers.md|15|3|1. Install Auth0
+framework/react/how-to/setup-auth-providers.md|21|3|2. Set Up Environment Variables
+framework/react/how-to/setup-auth-providers.md|30|3|3. Create Auth0 Wrapper
+framework/react/how-to/setup-auth-providers.md|91|3|4. Update App Configuration
+framework/react/how-to/setup-auth-providers.md|125|3|5. Create Protected Routes
+framework/react/how-to/setup-auth-providers.md|146|2|Clerk Integration
+framework/react/how-to/setup-auth-providers.md|148|3|1. Install Clerk
+framework/react/how-to/setup-auth-providers.md|154|3|2. Set Up Environment Variables
+framework/react/how-to/setup-auth-providers.md|162|3|3. Create Clerk Wrapper
+framework/react/how-to/setup-auth-providers.md|204|3|4. Create Clerk Auth Routes
+framework/react/how-to/setup-auth-providers.md|236|3|5. Update App Configuration
+framework/react/how-to/setup-auth-providers.md|270|3|6. Create Protected Routes
+framework/react/how-to/setup-auth-providers.md|294|2|Supabase Integration
+framework/react/how-to/setup-auth-providers.md|296|3|1. Install Supabase
+framework/react/how-to/setup-auth-providers.md|302|3|2. Set Up Environment Variables
+framework/react/how-to/setup-auth-providers.md|311|3|3. Create Supabase Client
+framework/react/how-to/setup-auth-providers.md|402|3|4. Create Login Component
+framework/react/how-to/setup-auth-providers.md|501|3|5. Update App Configuration
+framework/react/how-to/setup-auth-providers.md|537|2|Provider Comparison
+framework/react/how-to/setup-auth-providers.md|549|3|When to Choose Each:
+framework/react/how-to/setup-auth-providers.md|557|2|Common Problems
+framework/react/how-to/setup-auth-providers.md|559|3|Provider Context Not Available
+framework/react/how-to/setup-auth-providers.md|579|3|Infinite Loading States
+framework/react/how-to/setup-auth-providers.md|597|3|Redirect Loops with Auth0
+framework/react/how-to/setup-auth-providers.md|618|2|Common Next Steps
+framework/react/how-to/setup-auth-providers.md|630|2|Related Resources
+framework/react/how-to/setup-authentication.md|7|2|Quick Start
+framework/react/how-to/setup-authentication.md|13|2|Create Authentication Context
+framework/react/how-to/setup-authentication.md|120|2|Configure Router Context
+framework/react/how-to/setup-authentication.md|122|3|1. Set Up Router Context
+framework/react/how-to/setup-authentication.md|151|3|2. Configure Router
+framework/react/how-to/setup-authentication.md|174|3|3. Connect App with Authentication
+framework/react/how-to/setup-authentication.md|201|2|Create Protected Routes
+framework/react/how-to/setup-authentication.md|203|3|1. Create Authentication Layout Route
+framework/react/how-to/setup-authentication.md|226|3|2. Create Login Route
+framework/react/how-to/setup-authentication.md|327|3|3. Create Protected Dashboard
+framework/react/how-to/setup-authentication.md|368|2|Add Authentication Persistence
+framework/react/how-to/setup-authentication.md|421|2|Production Checklist
+framework/react/how-to/setup-authentication.md|436|2|Common Problems
+framework/react/how-to/setup-authentication.md|438|3|Authentication Context Not Available
+framework/react/how-to/setup-authentication.md|444|3|User Logged Out on Page Refresh
+framework/react/how-to/setup-authentication.md|450|3|Protected Route Flashing Before Redirect
+framework/react/how-to/setup-authentication.md|469|2|Common Next Steps
+framework/react/how-to/setup-authentication.md|481|2|Related Resources
+framework/react/how-to/setup-basic-search-params.md|7|2|Quick Start
+framework/react/how-to/setup-basic-search-params.md|41|2|Why Use Schema Validation for Search Parameters?
+framework/react/how-to/setup-basic-search-params.md|51|2|Validation Library Setup
+framework/react/how-to/setup-basic-search-params.md|76|2|Step-by-Step Setup with Zod
+framework/react/how-to/setup-basic-search-params.md|80|3|Step 1: Install Dependencies
+framework/react/how-to/setup-basic-search-params.md|86|3|Step 2: Define Your Search Schema
+framework/react/how-to/setup-basic-search-params.md|116|3|Step 3: Add Schema Validation to Route
+framework/react/how-to/setup-basic-search-params.md|129|3|Step 4: Read Search Parameters in Components
+framework/react/how-to/setup-basic-search-params.md|163|2|Common Search Parameter Patterns
+framework/react/how-to/setup-basic-search-params.md|165|3|Pagination with Constraints
+framework/react/how-to/setup-basic-search-params.md|195|3|Enum Validation with Defaults
+framework/react/how-to/setup-basic-search-params.md|213|3|Complex Data Types
+framework/react/how-to/setup-basic-search-params.md|242|3|Date and Advanced Types
+framework/react/how-to/setup-basic-search-params.md|253|2|Reading Search Parameters Outside Components
+framework/react/how-to/setup-basic-search-params.md|255|3|Using getRouteApi
+framework/react/how-to/setup-basic-search-params.md|281|3|Using useSearch with from
+framework/react/how-to/setup-basic-search-params.md|293|2|Manual Validation (Understanding the Primitives)
+framework/react/how-to/setup-basic-search-params.md|319|2|Production Checklist
+framework/react/how-to/setup-basic-search-params.md|329|2|Common Problems
+framework/react/how-to/setup-basic-search-params.md|331|3|Problem: Search Parameters Cause TypeScript Errors
+framework/react/how-to/setup-basic-search-params.md|355|3|Problem: Invalid URL Parameters Break the App
+framework/react/how-to/setup-basic-search-params.md|373|3|Problem: Optional Parameters Are Required by TypeScript
+framework/react/how-to/setup-basic-search-params.md|389|3|Problem: Complex Objects Not Validating
+framework/react/how-to/setup-basic-search-params.md|413|2|Common Next Steps
+framework/react/how-to/setup-basic-search-params.md|421|2|Related Resources
+framework/react/how-to/setup-rbac.md|7|2|Quick Start
+framework/react/how-to/setup-rbac.md|13|2|Extend Authentication Context
+framework/react/how-to/setup-rbac.md|15|3|1. Add Roles to User Type
+framework/react/how-to/setup-rbac.md|116|3|2. Update Router Context Types
+framework/react/how-to/setup-rbac.md|155|2|Create Role-Protected Routes
+framework/react/how-to/setup-rbac.md|157|3|1. Admin-Only Routes
+framework/react/how-to/setup-rbac.md|190|3|2. Multiple Role Access
+framework/react/how-to/setup-rbac.md|227|3|3. Permission-Based Routes
+framework/react/how-to/setup-rbac.md|253|2|Create Specific Protected Pages
+framework/react/how-to/setup-rbac.md|255|3|1. Admin Dashboard
+framework/react/how-to/setup-rbac.md|310|3|2. User Management Page
+framework/react/how-to/setup-rbac.md|396|2|Create Unauthorized Page
+framework/react/how-to/setup-rbac.md|483|2|Component-Level Permission Checks
+framework/react/how-to/setup-rbac.md|485|3|1. Conditional Rendering Hook
+framework/react/how-to/setup-rbac.md|506|3|2. Permission Guard Component
+framework/react/how-to/setup-rbac.md|547|3|3. Using Permission Guards
+framework/react/how-to/setup-rbac.md|588|2|Advanced Permission Patterns
+framework/react/how-to/setup-rbac.md|590|3|1. Resource-Based Permissions
+framework/react/how-to/setup-rbac.md|621|3|2. Time-Based Permissions
+framework/react/how-to/setup-rbac.md|647|2|Common Problems
+framework/react/how-to/setup-rbac.md|649|3|Role/Permission Data Not Loading
+framework/react/how-to/setup-rbac.md|673|3|Permission Checks Too Restrictive
+framework/react/how-to/setup-rbac.md|694|3|Performance Issues with Many Permission Checks
+framework/react/how-to/setup-rbac.md|722|2|Common Next Steps
+framework/react/how-to/setup-rbac.md|734|2|Related Resources
+framework/react/how-to/setup-ssr.md|9|2|Quick Start with TanStack Start
+framework/react/how-to/setup-ssr.md|17|2|Manual SSR Setup
+framework/react/how-to/setup-ssr.md|19|3|1. Install Dependencies
+framework/react/how-to/setup-ssr.md|26|3|2. Create Shared Router Configuration
+framework/react/how-to/setup-ssr.md|50|3|3. Set Up Server Entry Point
+framework/react/how-to/setup-ssr.md|125|3|4. Set Up Client Entry Point
+framework/react/how-to/setup-ssr.md|138|3|5. Configure Vite for SSR
+framework/react/how-to/setup-ssr.md|191|3|6. Update Root Route for HTML Structure
+framework/react/how-to/setup-ssr.md|270|3|7. Create Express Server
+framework/react/how-to/setup-ssr.md|368|3|8. Update Package Scripts
+framework/react/how-to/setup-ssr.md|382|2|Streaming SSR
+framework/react/how-to/setup-ssr.md|401|3|Streaming Vite Configuration
+framework/react/how-to/setup-ssr.md|424|2|Common Problems
+framework/react/how-to/setup-ssr.md|428|3|React Import Errors
+framework/react/how-to/setup-ssr.md|444|3|Hydration Mismatches
+framework/react/how-to/setup-ssr.md|464|3|Bun Runtime Issues
+framework/react/how-to/setup-ssr.md|478|3|Module Resolution Errors
+framework/react/how-to/setup-ssr.md|500|3|Streaming Configuration Issues
+framework/react/how-to/setup-ssr.md|518|3|Build Output Issues
+framework/react/how-to/setup-ssr.md|538|2|Related Resources
+framework/react/how-to/setup-ssr.md|544|2|Common Next Steps
+framework/react/how-to/setup-testing.md|1|1|How to Set Up Testing with Code-Based Routing
+framework/react/how-to/setup-testing.md|5|2|Quick Start
+framework/react/how-to/setup-testing.md|13|2|Configure Test Framework
+framework/react/how-to/setup-testing.md|15|3|1. Install Dependencies
+framework/react/how-to/setup-testing.md|29|3|2. Configure Vitest
+framework/react/how-to/setup-testing.md|48|3|3. Create Test Setup
+framework/react/how-to/setup-testing.md|61|2|Code-Based Router Testing Patterns
+framework/react/how-to/setup-testing.md|65|3|1. TanStack Router Internal Pattern (Recommended)
+framework/react/how-to/setup-testing.md|115|3|2. Alternative: Router Test Utilities (For Simpler Cases)
+framework/react/how-to/setup-testing.md|197|3|2. Mock Route Factory
+framework/react/how-to/setup-testing.md|234|2|Test Code-Based Route Components
+framework/react/how-to/setup-testing.md|236|3|1. Basic Component Testing
+framework/react/how-to/setup-testing.md|287|3|2. Testing Route Parameters
+framework/react/how-to/setup-testing.md|348|2|Test Navigation
+framework/react/how-to/setup-testing.md|350|3|1. Testing Link Components
+framework/react/how-to/setup-testing.md|457|3|2. Testing Route Guards
+framework/react/how-to/setup-testing.md|533|2|Test Data Loading
+framework/react/how-to/setup-testing.md|535|3|1. Testing Loaders
+framework/react/how-to/setup-testing.md|614|3|2. Testing with React Query
+framework/react/how-to/setup-testing.md|684|2|Test with Context
+framework/react/how-to/setup-testing.md|686|3|1. Testing Router Context
+framework/react/how-to/setup-testing.md|749|2|E2E Testing with Playwright
+framework/react/how-to/setup-testing.md|751|3|1. Playwright Configuration
+framework/react/how-to/setup-testing.md|783|3|2. E2E Test Example
+framework/react/how-to/setup-testing.md|844|2|Code-Based Routing Testing Best Practices
+framework/react/how-to/setup-testing.md|846|3|1. Test Organization
+framework/react/how-to/setup-testing.md|866|3|2. Common Patterns
+framework/react/how-to/setup-testing.md|911|2|Common Problems
+framework/react/how-to/setup-testing.md|913|3|Test Environment Issues
+framework/react/how-to/setup-testing.md|928|3|Router Context Missing
+framework/react/how-to/setup-testing.md|942|3|Async Data Loading
+framework/react/how-to/setup-testing.md|956|2|Common Next Steps
+framework/react/how-to/setup-testing.md|969|2|Related Resources
+framework/react/how-to/share-search-params-across-routes.md|5|1|How to Share Search Parameters Across Routes
+framework/react/how-to/share-search-params-across-routes.md|9|2|How Parameter Inheritance Works
+framework/react/how-to/share-search-params-across-routes.md|17|2|Global Parameters via Root Route
+framework/react/how-to/share-search-params-across-routes.md|80|2|Section-Specific Parameters via Layout Routes
+framework/react/how-to/share-search-params-across-routes.md|141|2|Common Use Cases
+framework/react/how-to/share-search-params-across-routes.md|161|2|Common Problems
+framework/react/how-to/share-search-params-across-routes.md|163|3|Problem: Parameters Not Inheriting
+framework/react/how-to/share-search-params-across-routes.md|189|3|Problem: Navigation Loses Shared Parameters
+framework/react/how-to/share-search-params-across-routes.md|211|3|Problem: Type Errors with Inherited Parameters
+framework/react/how-to/share-search-params-across-routes.md|223|2|Production Checklist
+framework/react/how-to/share-search-params-across-routes.md|232|2|Common Next Steps
+framework/react/how-to/share-search-params-across-routes.md|241|2|Related Resources
+framework/react/how-to/test-file-based-routing.md|7|2|Quick Start
+framework/react/how-to/test-file-based-routing.md|13|2|Understanding File-Based Routing Testing
+framework/react/how-to/test-file-based-routing.md|24|2|Setting Up File-Based Route Testing
+framework/react/how-to/test-file-based-routing.md|26|3|1. Install Test Dependencies
+framework/react/how-to/test-file-based-routing.md|34|3|2. Configure Test Environment
+framework/react/how-to/test-file-based-routing.md|64|3|3. Create Route Testing Utilities
+framework/react/how-to/test-file-based-routing.md|143|2|Testing File-Based Route Structure
+framework/react/how-to/test-file-based-routing.md|145|3|1. Test Route Tree Generation
+framework/react/how-to/test-file-based-routing.md|195|3|2. Test File Route Conventions
+framework/react/how-to/test-file-based-routing.md|246|2|Testing File-Based Route Components
+framework/react/how-to/test-file-based-routing.md|248|3|1. Test Individual Route Files
+framework/react/how-to/test-file-based-routing.md|286|3|2. Test Route-Specific Hooks
+framework/react/how-to/test-file-based-routing.md|332|2|Testing Route Navigation with File-Based Routes
+framework/react/how-to/test-file-based-routing.md|334|3|1. Test Link Navigation
+framework/react/how-to/test-file-based-routing.md|391|3|2. Test Programmatic Navigation
+framework/react/how-to/test-file-based-routing.md|433|2|Testing File-Based Route Guards and Loaders
+framework/react/how-to/test-file-based-routing.md|435|3|1. Test Route Guards
+framework/react/how-to/test-file-based-routing.md|472|3|2. Test Route Loaders
+framework/react/how-to/test-file-based-routing.md|524|2|Testing File Route Validation
+framework/react/how-to/test-file-based-routing.md|526|3|1. Test Search Parameter Validation
+framework/react/how-to/test-file-based-routing.md|567|2|Testing File Route Error Boundaries
+framework/react/how-to/test-file-based-routing.md|569|3|1. Test Route-Level Error Handling
+framework/react/how-to/test-file-based-routing.md|619|2|Testing with Generated Route Types
+framework/react/how-to/test-file-based-routing.md|621|3|1. Test Type Safety
+framework/react/how-to/test-file-based-routing.md|665|2|Testing Route Tree Changes
+framework/react/how-to/test-file-based-routing.md|667|3|1. Test Route Generation During Development
+framework/react/how-to/test-file-based-routing.md|705|2|E2E Testing for File-Based Routes
+framework/react/how-to/test-file-based-routing.md|707|3|1. Playwright Configuration for File-Based Routes
+framework/react/how-to/test-file-based-routing.md|755|2|Common File-Based Routing Testing Patterns
+framework/react/how-to/test-file-based-routing.md|757|3|1. Mock Route Files for Testing
+framework/react/how-to/test-file-based-routing.md|790|3|2. Test Route Discovery
+framework/react/how-to/test-file-based-routing.md|825|2|Best Practices for File-Based Route Testing
+framework/react/how-to/test-file-based-routing.md|827|3|1. Test Organization
+framework/react/how-to/test-file-based-routing.md|849|3|2. Common Test Patterns
+framework/react/how-to/test-file-based-routing.md|885|2|Troubleshooting File-Based Route Testing
+framework/react/how-to/test-file-based-routing.md|887|3|Common Issues
+framework/react/how-to/test-file-based-routing.md|939|2|Next Steps
+framework/react/how-to/test-file-based-routing.md|947|2|Related Resources
+framework/react/how-to/use-environment-variables.md|7|2|Quick Start
+framework/react/how-to/use-environment-variables.md|12|1|.env
+framework/react/how-to/use-environment-variables.md|31|2|Environment Variable Access Patterns
+framework/react/how-to/use-environment-variables.md|33|3|Vite-Based Projects (Most Common)
+framework/react/how-to/use-environment-variables.md|66|3|Webpack-Based Projects
+framework/react/how-to/use-environment-variables.md|97|3|Rspack-Based Projects
+framework/react/how-to/use-environment-variables.md|102|1|.env
+framework/react/how-to/use-environment-variables.md|121|3|ESBuild Projects
+framework/react/how-to/use-environment-variables.md|138|2|Common Patterns
+framework/react/how-to/use-environment-variables.md|140|3|API Configuration in Route Loaders
+framework/react/how-to/use-environment-variables.md|172|3|Environment-Based Route Configuration
+framework/react/how-to/use-environment-variables.md|190|3|Feature Flags in Routes
+framework/react/how-to/use-environment-variables.md|215|3|Authentication Configuration
+framework/react/how-to/use-environment-variables.md|243|3|Search Params with Environment Config
+framework/react/how-to/use-environment-variables.md|271|2|Environment File Setup
+framework/react/how-to/use-environment-variables.md|273|3|File Hierarchy (Vite)
+framework/react/how-to/use-environment-variables.md|284|3|Example Configuration
+framework/react/how-to/use-environment-variables.md|289|1|API Configuration
+framework/react/how-to/use-environment-variables.md|293|1|Feature Flags
+framework/react/how-to/use-environment-variables.md|297|1|Auth Configuration (public keys only)
+framework/react/how-to/use-environment-variables.md|301|1|Build Configuration
+framework/react/how-to/use-environment-variables.md|309|1|Development overrides
+framework/react/how-to/use-environment-variables.md|318|1|Production-specific
+framework/react/how-to/use-environment-variables.md|324|2|Type Safety
+framework/react/how-to/use-environment-variables.md|326|3|Vite TypeScript Declarations
+framework/react/how-to/use-environment-variables.md|358|3|Runtime Validation
+framework/react/how-to/use-environment-variables.md|407|3|Usage with Type Safety
+framework/react/how-to/use-environment-variables.md|431|2|Bundler-Specific Configuration
+framework/react/how-to/use-environment-variables.md|433|3|Vite Configuration
+framework/react/how-to/use-environment-variables.md|456|3|Webpack Configuration
+framework/react/how-to/use-environment-variables.md|477|3|Rspack Configuration
+framework/react/how-to/use-environment-variables.md|500|2|Production Checklist
+framework/react/how-to/use-environment-variables.md|511|2|Common Problems
+framework/react/how-to/use-environment-variables.md|513|3|Environment Variable is Undefined
+framework/react/how-to/use-environment-variables.md|539|1|❌ Won't work (no prefix)
+framework/react/how-to/use-environment-variables.md|542|1|✅ Works with Vite
+framework/react/how-to/use-environment-variables.md|545|1|✅ Works with Rspack
+framework/react/how-to/use-environment-variables.md|548|1|❌ Won't bundle the variable (assuming it is not set in the environment of the build)
+framework/react/how-to/use-environment-variables.md|551|1|✅ Works with Vite and will bundle the variable for production
+framework/react/how-to/use-environment-variables.md|554|1|✅ Works with Rspack and will bundle the variable for production
+framework/react/how-to/use-environment-variables.md|558|3|Runtime Client Environment Variables at Runtime in Production
+framework/react/how-to/use-environment-variables.md|592|3|Variable Not Updating
+framework/react/how-to/use-environment-variables.md|603|3|TypeScript Errors
+framework/react/how-to/use-environment-variables.md|615|3|Build Errors
+framework/react/how-to/use-environment-variables.md|626|3|Security Issues
+framework/react/how-to/use-environment-variables.md|637|3|Runtime vs Build-time Confusion
+framework/react/how-to/use-environment-variables.md|647|3|Environment Variables are Always Strings
+framework/react/how-to/use-environment-variables.md|679|2|Common Next Steps
+framework/react/how-to/use-environment-variables.md|685|2|Related Resources
+framework/react/how-to/validate-search-params.md|9|2|Quick Start
+framework/react/how-to/validate-search-params.md|77|2|Validation Library Options
+framework/react/how-to/validate-search-params.md|81|3|Zod (Recommended)
+framework/react/how-to/validate-search-params.md|102|3|Valibot
+framework/react/how-to/validate-search-params.md|123|3|ArkType
+framework/react/how-to/validate-search-params.md|143|3|Custom Validation Function
+framework/react/how-to/validate-search-params.md|187|2|Common Validation Patterns
+framework/react/how-to/validate-search-params.md|189|3|Required vs Optional Parameters
+framework/react/how-to/validate-search-params.md|208|3|Complex Data Types
+framework/react/how-to/validate-search-params.md|240|3|Input Transformation
+framework/react/how-to/validate-search-params.md|264|2|Error Handling Strategies
+framework/react/how-to/validate-search-params.md|266|3|Basic Error Handling
+framework/react/how-to/validate-search-params.md|312|3|Custom Error Messages
+framework/react/how-to/validate-search-params.md|339|3|Validation Error Recovery
+framework/react/how-to/validate-search-params.md|368|2|Advanced Validation Techniques
+framework/react/how-to/validate-search-params.md|370|3|Conditional Validation
+framework/react/how-to/validate-search-params.md|397|3|Schema Composition
+framework/react/how-to/validate-search-params.md|426|3|Performance Optimization
+framework/react/how-to/validate-search-params.md|458|2|Testing Search Parameter Validation
+framework/react/how-to/validate-search-params.md|505|2|Common Problems
+framework/react/how-to/validate-search-params.md|507|3|Problem: Validation errors break the entire route
+framework/react/how-to/validate-search-params.md|538|3|Problem: TypeScript errors with optional search parameters
+framework/react/how-to/validate-search-params.md|563|3|Problem: Search parameter arrays not parsing correctly
+framework/react/how-to/validate-search-params.md|592|3|Problem: Schema validation is too slow
+framework/react/how-to/validate-search-params.md|626|2|Common Next Steps
+framework/react/how-to/validate-search-params.md|637|2|Related Resources
+framework/react/how-to/drafts/README.md|1|1|How-To Guide Drafts
+framework/react/how-to/drafts/README.md|10|2|File Naming Convention
+framework/react/how-to/drafts/README.md|15|2|Current Drafts
+framework/react/how-to/drafts/README.md|17|3|⏳ Ready for Implementation (Substantial Content Available)
+framework/react/how-to/drafts/README.md|39|2|Implementation Workflow
+framework/react/how-to/drafts/README.md|50|2|Benefits of This System
+framework/react/how-to/drafts/README.md|58|2|Content Sources
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|1|1|DRAFT: Build Search-Based Filtering Systems
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|10|2|Content Staged from navigate-with-search-params.md
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|12|3|Search Result Navigation
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|62|3|Filter Navigation
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|128|3|Programmatic Search Controls
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|169|2|Implementation Notes
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|171|3|Additional Content Needed:
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|182|3|Cross-References to Add:
+framework/react/how-to/drafts/build-search-filtering-systems.draft.md|189|3|README Update Required:
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|1|1|DRAFT: Optimize Search Parameter Performance
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|10|2|Content Staged from navigate-with-search-params.md
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|12|3|Performance Issues with Functional Updates
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|35|3|Navigation During Render
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|67|2|Implementation Notes
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|69|3|Additional Content Needed:
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|80|3|Cross-References to Add:
+framework/react/how-to/drafts/optimize-search-param-performance.draft.md|87|3|README Update Required:
+framework/react/how-to/drafts/search-params-in-forms.draft.md|1|1|DRAFT: Handle Search Parameters in Forms
+framework/react/how-to/drafts/search-params-in-forms.draft.md|10|2|Content Staged from navigate-with-search-params.md
+framework/react/how-to/drafts/search-params-in-forms.draft.md|12|3|Navigation with State Synchronization
+framework/react/how-to/drafts/search-params-in-forms.draft.md|113|3|Form with Search Parameter Validation
+framework/react/how-to/drafts/search-params-in-forms.draft.md|134|2|Implementation Notes
+framework/react/how-to/drafts/search-params-in-forms.draft.md|136|3|Additional Content Needed:
+framework/react/how-to/drafts/search-params-in-forms.draft.md|147|3|Cross-References to Add:
+framework/react/how-to/drafts/search-params-in-forms.draft.md|154|3|README Update Required:
+integrations/query.md|9|2|What you get
+integrations/query.md|16|2|Installation
+integrations/query.md|22|1|or
+integrations/query.md|24|1|or
+integrations/query.md|26|1|or
+integrations/query.md|30|2|Setup
+integrations/query.md|65|2|SSR behavior and streaming
+integrations/query.md|71|2|Use in routes
+integrations/query.md|73|3|Using useSuspenseQuery vs useQuery
+integrations/query.md|86|3|Preload with a loader and read with a hook
+integrations/query.md|113|3|Prefetching and streaming
+integrations/query.md|135|2|Redirect handling
+integrations/query.md|142|2|Works with TanStack Start
+eslint/create-route-property-order.md|24|2|Rule Details
+eslint/create-route-property-order.md|54|2|Attributes
+eslint/eslint-plugin-router.md|8|2|Installation
+eslint/eslint-plugin-router.md|34|2|Flat Config (`eslint.config.js`)
+eslint/eslint-plugin-router.md|39|3|Recommended Flat Config setup
+eslint/eslint-plugin-router.md|53|3|Custom Flat Config setup
+eslint/eslint-plugin-router.md|74|2|Legacy Config (`.eslintrc`)
+eslint/eslint-plugin-router.md|78|3|Recommended Legacy Config setup
+eslint/eslint-plugin-router.md|88|3|Custom Legacy Config setup
+eslint/eslint-plugin-router.md|101|2|Rules
+eslint/eslint-plugin-router.md|107|2|Conflicts with other ESLint plugins
+eslint/eslint-plugin-router.md|111|3|`typescript-eslint`
diff --git a/scripts/extract_headings.py b/scripts/extract_headings.py
new file mode 100644
index 00000000000..aabe177f7a1
--- /dev/null
+++ b/scripts/extract_headings.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+import os
+import re
+import json
+
+DOCS_ROOT = "/workspace/tanstack-router/docs/router"
+OUT_JSON = "/workspace/router_docs_headings.json"
+OUT_TSV = "/workspace/router_docs_headings.tsv"
+OUT_FILES = "/workspace/router_docs_files.txt"
+
+
+def collect_headings(root_dir: str):
+ inventory = []
+ all_files = []
+ heading_regex = re.compile(r"^(#{1,6})\s+(.*)$")
+
+ for dirpath, _, filenames in os.walk(root_dir):
+ for filename in sorted(filenames):
+ if not filename.endswith(".md"):
+ continue
+ abs_path = os.path.join(dirpath, filename)
+ rel_path = os.path.relpath(abs_path, root_dir).replace("\\", "/")
+ all_files.append(rel_path)
+
+ headings = []
+ try:
+ with open(abs_path, "r", encoding="utf-8") as f:
+ for idx, line in enumerate(f, start=1):
+ m = heading_regex.match(line.rstrip("\n\r"))
+ if m:
+ level = len(m.group(1))
+ text = m.group(2).strip()
+ headings.append({
+ "line": idx,
+ "level": level,
+ "text": text,
+ })
+ except Exception as e:
+ headings.append({
+ "line": 0,
+ "level": 0,
+ "text": f": {e}",
+ })
+
+ inventory.append({
+ "path": rel_path,
+ "headings": headings,
+ })
+
+ return inventory, sorted(all_files)
+
+
+def main():
+ inventory, files = collect_headings(DOCS_ROOT)
+
+ # Write JSON
+ with open(OUT_JSON, "w", encoding="utf-8") as jf:
+ json.dump(inventory, jf, ensure_ascii=False, indent=2)
+
+ # Write TSV
+ with open(OUT_TSV, "w", encoding="utf-8") as tf:
+ for item in inventory:
+ for h in item["headings"]:
+ tf.write(f"{item['path']}|{h['line']}|{h['level']}|{h['text']}\n")
+
+ # Write file list
+ with open(OUT_FILES, "w", encoding="utf-8") as ff:
+ for p in files:
+ ff.write(p + "\n")
+
+ print(f"Wrote {len(inventory)} files to: \n {OUT_JSON}\n {OUT_TSV}\n {OUT_FILES}")
+
+
+if __name__ == "__main__":
+ main()
+
diff --git a/tanstack-router b/tanstack-router
new file mode 160000
index 00000000000..22c9888857a
--- /dev/null
+++ b/tanstack-router
@@ -0,0 +1 @@
+Subproject commit 22c9888857aca20cdffbf8f97927add139aaa5ea
diff --git a/tanstack-website b/tanstack-website
new file mode 160000
index 00000000000..9add4f37f7e
--- /dev/null
+++ b/tanstack-website
@@ -0,0 +1 @@
+Subproject commit 9add4f37f7e705e209e015bfd821890220d1486f