Repository: TanStack/router
Pull request #3094 (2025-01-01 10:05:08)

feat(react-router): allow to `await` `router.invalidate` in case of SWR

nx-cloud[bot]: 
View your [CI Pipeline Execution ↗](https://cloud.nx.app/cipes/6775136e9e7ea87e426ba68b?utm_source=pull-request&utm_medium=comment) for commit 68f3a6a652e94ad91915110f81a7874f0b7e96ab.

---

☁️ [Nx Cloud](https://cloud.nx.app?utm_source=pull-request&utm_medium=comment) last updated this comment at `2025-01-01 10:05:36` UTC

<!-- NX_CLOUD_APP_COMMENT_END -->
pkg-pr-new[bot]: 
[Open in Stackblitz](https://pkg.pr.new/template/57dca7f4-ece5-4584-ba02-23ff32fad04f)
<details><summary><b>More templates</b></summary><p>

- [tanstack-router-react-example-basic](https://pkg.pr.new/template/c9a46435-3e67-4eb9-b3b3-138bd8d8afee)
- [tanstack-router-react-example-authenticated-routes](https://pkg.pr.new/template/bc1c6c11-292d-41be-8b74-c60751658b66)
- [tanstack-router-react-example-basic-default-search-params](https://pkg.pr.new/template/76cf6271-e447-4e91-a10f-ea2fbc5f09eb)
- [tanstack-router-react-example-basic-file-based](https://pkg.pr.new/template/955dc0ed-25ed-4449-b51c-cb1b2e98cebb)
- [tanstack-router-react-example-basic-file-based-codesplitting](https://pkg.pr.new/template/1ca89d59-ae51-49f1-80b0-317ffd7f98ec)
- [tanstack-router-react-example-react-query](https://pkg.pr.new/template/96fa3ec9-918a-4a67-8da4-2dfbfc3c0f85)
- [tanstack-router-react-example-basic-ssr-file-based](https://pkg.pr.new/template/30fd9b66-2728-4c81-b6ad-c2c03767dea4)
- [tanstack-router-react-example-basic-react-query-file-based](https://pkg.pr.new/template/abce417a-a0ef-4f8b-8115-1b39618b6181)
- [tanstack-router-react-example-basic-ssr-streaming-file-based](https://pkg.pr.new/template/6b7d3eb3-d793-43eb-935a-9f23812aa674)
- [tanstack-router-react-example-basic-virtual-file-based](https://pkg.pr.new/template/b39151c7-9aaa-4036-ad45-1d4046b3c722)
- [tanstack-router-react-example-basic-virtual-inside-file-based](https://pkg.pr.new/template/3928f5a4-65b7-40f6-b928-d1545ac8368f)
- [tanstack-router-react-example-deferred-data](https://pkg.pr.new/template/cb26bf99-d004-4519-8773-cf47a8af5fa7)
- [tanstack-router-react-example-kitchen-sink](https://pkg.pr.new/template/da984195-96a2-4eca-a800-0021782a8356)
- [tanstack-router-react-example-kitchen-sink-file-based](https://pkg.pr.new/template/2ffeb885-ede1-4fac-bddc-f1554956c9b6)
- [tanstack-router-react-example-kitchen-sink-react-query](https://pkg.pr.new/template/cdc1f6fd-20b2-4b25-b7b3-aa8d293409fe)
- [tanstack-router-react-example-kitchen-sink-react-query-file-based](https://pkg.pr.new/template/3c3353da-4af8-43eb-9c6c-e8d0b30bf248)
- [tanstack-router-react-example-large-file-based](https://pkg.pr.new/template/b135a335-0e68-4325-ad08-b1f2fbbedd06)
- [tanstack-router-react-example-location-masking](https://pkg.pr.new/template/4d368bb0-2ea2-4266-af62-8d212a921471)
- [tanstack-router-react-example-navigation-blocking](https://pkg.pr.new/template/429c54aa-b2a0-4e57-8df3-f3a7532ca13d)
- [tanstack-router-react-example-quickstart](https://pkg.pr.new/template/1f98e2c7-b8d2-435b-99c0-a31e2dc8340b)
- [tanstack-router-react-example-quickstart-esbuild-file-based](https://pkg.pr.new/template/fc7b9716-1704-4531-b878-36363982d2b4)
- [tanstack-router-react-example-quickstart-file-based](https://pkg.pr.new/template/1d6966b4-03b5-4ac6-9710-1acb09f37ebc)
- [tanstack-router-react-example-quickstart-rspack-file-based](https://pkg.pr.new/template/beb07f88-2420-46a1-aa40-28f6e7d03d60)
- [tanstack-router-react-example-quickstart-webpack-file-based](https://pkg.pr.new/template/f9921eac-e556-481a-99db-83d7e5120801)
- [router-monorepo-react-query](https://pkg.pr.new/template/f28bbbc2-6ddc-4e1a-9b16-a36f901935d4)
- [router-mono-simple](https://pkg.pr.new/template/6628e891-11b8-44d9-b57d-c51ec152cbed)
- [tanstack-router-react-example-scroll-restoration](https://pkg.pr.new/template/28013df0-fa05-49dd-bd91-e9321da195f0)
- [tanstack-search-validator-adapters](https://pkg.pr.new/template/880248cd-2039-46a2-abf3-119bea38d7bf)
- [tanstack-start-example-basic](https://pkg.pr.new/template/b173d067-9cd4-40d0-b634-90fd0c38d887)
- [tanstack-start-example-basic-react-query](https://pkg.pr.new/template/6d3d9650-1597-4ee0-ba03-6767649b880e)
- [tanstack-start-example-basic-rsc](https://pkg.pr.new/template/84e68502-3148-472b-be6a-906c71610557)
- [tanstack-start-example-clerk-basic](https://pkg.pr.new/template/5ff8872d-9fcd-4350-989a-d545fbffe575)
- [tanstack-start-example-convex-trellaux](https://pkg.pr.new/template/bb30abb8-bb51-4244-9773-f05042bbb4e9)
- [tanstack-start-example-counter](https://pkg.pr.new/template/8155180b-cc3d-471f-b012-a66c479088e2)
- [tanstack-start-example-large](https://pkg.pr.new/template/efeffbbd-08c9-4c40-bc8c-ba0e9a2ed9d8)
- [tanstack-start-example-supabase-basic](https://pkg.pr.new/template/0be29225-8e87-40d5-9da2-af3854e3e4fd)
- [tanstack-start-example-trellaux](https://pkg.pr.new/template/c27bf9c0-8a68-4b41-96bf-61e7c67fbeb6)
- [tanstack-router-react-example-with-framer-motion](https://pkg.pr.new/template/d193f492-643d-47ed-9ef3-4d30893a835d)
- [tanstack-start-example-basic-auth](https://pkg.pr.new/template/445167d1-3a1a-498b-9ce8-7d7d0477f4e8)
- [tanstack-router-react-example-with-trpc](https://pkg.pr.new/template/e70be5ab-da64-46cc-94b3-95742e1478e1)
- [tanstack-router-react-example-with-trpc-react-query](https://pkg.pr.new/template/1d6b9975-e49b-42b3-8ddb-4a3f4e8dfb1c)

</p></details>
      
    


<details><summary><b>@tanstack/arktype-adapter</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/arktype-adapter@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/create-router</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/create-router@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/eslint-plugin-router</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/create-start</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/create-start@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/history</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/history@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/react-cross-context</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-cross-context@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/react-router</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-router@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/react-router-with-query</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-router-with-query@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/router-cli</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-cli@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/router-devtools</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-devtools@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/router-generator</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-generator@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/router-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-plugin@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/router-vite-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-vite-plugin@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/start</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/start@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/valibot-adapter</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/valibot-adapter@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/start-vite-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/start-vite-plugin@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/virtual-file-routes</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/virtual-file-routes@3094
```

</p></details>
      
    

<details><summary><b>@tanstack/zod-adapter</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/zod-adapter@3094
```

</p></details>
      
    

_commit: <a href="https://github.com/TanStack/router/runs/35038429004"><code>68f3a6a</code></a>_


Patch:
diff --git a/docs/framework/react/api/router/RouterType.md b/docs/framework/react/api/router/RouterType.md
index e7e438665..dd4b6760e 100644
--- a/docs/framework/react/api/router/RouterType.md
+++ b/docs/framework/react/api/router/RouterType.md
@@ -139,10 +139,11 @@ Navigates to a new location.
 
 Invalidates route matches by forcing their `beforeLoad` and `load` functions to be called again.
 
-- Type: `(opts?: {filter?: (d: MakeRouteMatchUnion<TRouter>) => boolean}) => Promise<void>`
+- Type: `(opts?: {filter?: (d: MakeRouteMatchUnion<TRouter>) => boolean, sync?: boolean}) => Promise<void>`
 - This is useful any time your loader data might be out of date or stale. For example, if you have a route that displays a list of posts, and you have a loader function that fetches the list of posts from an API, you might want to invalidate the route matches for that route any time a new post is created so that the list of posts is always up-to-date.
 - if `filter` is not supplied, all matches will be invalidated
 - if `filter` is supplied, only matches for which `filter` returns `true` will be invalidated.
+- if `sync` is true, the promise returned by this function will only resolve once all loaders have finished.
 - You might also want to invalidate the Router if you imperatively `reset` the router's `CatchBoundary` to trigger loaders again.
 
 ### `.clearCache` method
@@ -159,7 +160,8 @@ Loads all of the currently matched route matches and resolves when they are all
 
 > ⚠️⚠️⚠️ **`router.load()` respects `route.staleTime` and will not forcefully reload a route match if it is still fresh. If you need to forcefully reload a route match, use `router.invalidate()` instead.**
 
-- Type: `() => Promise<void>`
+- Type: `(opts?: {sync?: boolean}) => Promise<void>`
+- if `sync` is true, the promise returned by this function will only resolve once all loaders have finished.
 - The most common use case for this method is to call it when doing SSR to ensure that all of the critical data for the current route is loaded before attempting to stream or render the application to the client.
 
 ### `.preloadRoute` method
diff --git a/docs/framework/react/guide/data-mutations.md b/docs/framework/react/guide/data-mutations.md
index 7277cff88..c0971a24a 100644
--- a/docs/framework/react/guide/data-mutations.md
+++ b/docs/framework/react/guide/data-mutations.md
@@ -52,6 +52,21 @@ const addTodo = async (todo: Todo) => {
 
 Invalidating all of the current route matches happens in the background, so existing data will continue to be served until the new data is ready, just as if you were navigating to a new route.
 
+If you want to await the invalidation until all loaders have finished, pass `{sync: true}` into `router.invalidate`:
+
+```tsx
+const router = useRouter()
+
+const addTodo = async (todo: Todo) => {
+  try {
+    await api.addTodo()
+    await router.invalidate({ sync: true })
+  } catch {
+    //
+  }
+}
+```
+
 ## Long-term mutation State
 
 Regardless of the mutation library used, mutations often create state related to their submission. While most mutations are set-and-forget, some mutation states are more long-lived, either to support optimistic UI or to provide feedback to the user about the status of their submissions. Most state managers will correctly keep this submission state around and expose it to make it possible to show UI elements like loading spinners, success messages, error messages, etc.
diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json
index b343e2ac2..1dc2ad3a5 100644
--- a/examples/react/authenticated-routes/package.json
+++ b/examples/react/authenticated-routes/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json
index c8ba50ac0..800f83d55 100644
--- a/examples/react/basic-default-search-params/package.json
+++ b/examples/react/basic-default-search-params/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json
index ba9aeb9e2..81d4de081 100644
--- a/examples/react/basic-file-based-codesplitting/package.json
+++ b/examples/react/basic-file-based-codesplitting/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json
index 7e84a7a38..d607f80a5 100644
--- a/examples/react/basic-file-based/package.json
+++ b/examples/react/basic-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json
index f82ea8437..b212bcf4a 100644
--- a/examples/react/basic-react-query-file-based/package.json
+++ b/examples/react/basic-react-query-file-based/package.json
@@ -11,9 +11,9 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json
index a80da56bc..0e8bab91c 100644
--- a/examples/react/basic-react-query/package.json
+++ b/examples/react/basic-react-query/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1"
diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json
index d6687c20a..9d9304a9c 100644
--- a/examples/react/basic-ssr-file-based/package.json
+++ b/examples/react/basic-ssr-file-based/package.json
@@ -11,10 +11,10 @@
     "debug": "node --inspect-brk server"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "get-port": "^7.1.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json
index c2ff8ecd3..e072f9c2c 100644
--- a/examples/react/basic-ssr-streaming-file-based/package.json
+++ b/examples/react/basic-ssr-streaming-file-based/package.json
@@ -11,10 +11,10 @@
     "debug": "node --inspect-brk server"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "get-port": "^7.1.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-virtual-file-based/package.json b/examples/react/basic-virtual-file-based/package.json
index 52078cc1c..e0c12500c 100644
--- a/examples/react/basic-virtual-file-based/package.json
+++ b/examples/react/basic-virtual-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "@tanstack/virtual-file-routes": "^1.87.6",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-virtual-inside-file-based/package.json b/examples/react/basic-virtual-inside-file-based/package.json
index ab5bdb032..bb2c745a1 100644
--- a/examples/react/basic-virtual-inside-file-based/package.json
+++ b/examples/react/basic-virtual-inside-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "@tanstack/virtual-file-routes": "^1.87.6",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 3bc4abe5e..0e275f642 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1"
diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json
index 8f177ea22..7997fc405 100644
--- a/examples/react/deferred-data/package.json
+++ b/examples/react/deferred-data/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json
index 2f3bcddb9..fbf8686dc 100644
--- a/examples/react/kitchen-sink-file-based/package.json
+++ b/examples/react/kitchen-sink-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "immer": "^10.1.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json
index 376e2ad61..56220ae05 100644
--- a/examples/react/kitchen-sink-react-query-file-based/package.json
+++ b/examples/react/kitchen-sink-react-query-file-based/package.json
@@ -11,9 +11,9 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "immer": "^10.1.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json
index 9ed73d645..0ab14d565 100644
--- a/examples/react/kitchen-sink-react-query/package.json
+++ b/examples/react/kitchen-sink-react-query/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json
index f341acee0..447d12fb9 100644
--- a/examples/react/kitchen-sink/package.json
+++ b/examples/react/kitchen-sink/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json
index 5f822fcaa..ca4fb8bd6 100644
--- a/examples/react/large-file-based/package.json
+++ b/examples/react/large-file-based/package.json
@@ -12,9 +12,9 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json
index 9ba60b798..8caed9f95 100644
--- a/examples/react/location-masking/package.json
+++ b/examples/react/location-masking/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@radix-ui/react-dialog": "^1.1.2",
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json
index 0d0ae579d..ab923915b 100644
--- a/examples/react/navigation-blocking/package.json
+++ b/examples/react/navigation-blocking/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/quickstart-esbuild-file-based/package.json b/examples/react/quickstart-esbuild-file-based/package.json
index c85cd8731..f14da2587 100644
--- a/examples/react/quickstart-esbuild-file-based/package.json
+++ b/examples/react/quickstart-esbuild-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "dev"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json
index 51675f277..e194792d5 100644
--- a/examples/react/quickstart-file-based/package.json
+++ b/examples/react/quickstart-file-based/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1",
diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json
index 2bad19558..2f841ccdb 100644
--- a/examples/react/quickstart-rspack-file-based/package.json
+++ b/examples/react/quickstart-rspack-file-based/package.json
@@ -8,15 +8,15 @@
     "preview": "rsbuild preview"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
   "devDependencies": {
     "@rsbuild/core": "1.1.9",
     "@rsbuild/plugin-react": "1.1.0",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/router-plugin": "^1.92.13",
     "@types/react": "^18.3.3",
     "@types/react-dom": "^18.3.0",
     "typescript": "^5.6.2"
diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json
index 7ae0dec2a..9e30dd34d 100644
--- a/examples/react/quickstart-webpack-file-based/package.json
+++ b/examples/react/quickstart-webpack-file-based/package.json
@@ -7,14 +7,14 @@
     "build": "webpack build && tsc --noEmit"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
   "devDependencies": {
     "@swc/core": "^1.10.1",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/router-plugin": "^1.92.13",
     "@types/react": "^18.3.3",
     "@types/react-dom": "^18.3.0",
     "html-webpack-plugin": "^5.6.3",
diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json
index 0b48a0c40..11984c807 100644
--- a/examples/react/quickstart/package.json
+++ b/examples/react/quickstart/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },
diff --git a/examples/react/router-monorepo-react-query/package.json b/examples/react/router-monorepo-react-query/package.json
index 33d975073..5505b3a78 100644
--- a/examples/react/router-monorepo-react-query/package.json
+++ b/examples/react/router-monorepo-react-query/package.json
@@ -12,9 +12,9 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1"
diff --git a/examples/react/router-monorepo-react-query/packages/app/package.json b/examples/react/router-monorepo-react-query/packages/app/package.json
index 54b94daf5..2f4f54a18 100644
--- a/examples/react/router-monorepo-react-query/packages/app/package.json
+++ b/examples/react/router-monorepo-react-query/packages/app/package.json
@@ -20,7 +20,7 @@
     "@types/react-dom": "^18.2.18",
     "@vitejs/plugin-react": "^4.3.4",
     "typescript": "^5.7.2",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/router-devtools": "^1.92.13",
     "vite": "^6.0.3",
     "vite-plugin-dts": "^4.4.0"
   },
diff --git a/examples/react/router-monorepo-react-query/packages/router/package.json b/examples/react/router-monorepo-react-query/packages/router/package.json
index 7cd22641d..8ed42b555 100644
--- a/examples/react/router-monorepo-react-query/packages/router/package.json
+++ b/examples/react/router-monorepo-react-query/packages/router/package.json
@@ -10,8 +10,8 @@
   "dependencies": {
     "@tanstack/history": "^1.90.0",
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "@router-mono-react-query/post-query": "workspace:*",
     "redaxios": "^0.5.1",
     "zod": "^3.24.1",
diff --git a/examples/react/router-monorepo-simple/package.json b/examples/react/router-monorepo-simple/package.json
index cdfe9dc39..e24e3079b 100644
--- a/examples/react/router-monorepo-simple/package.json
+++ b/examples/react/router-monorepo-simple/package.json
@@ -8,9 +8,9 @@
     "dev": "pnpm router build && pnpm post-feature build && pnpm app dev"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "redaxios": "^0.5.1"
diff --git a/examples/react/router-monorepo-simple/packages/app/package.json b/examples/react/router-monorepo-simple/packages/app/package.json
index 719abd8d7..aebefd60d 100644
--- a/examples/react/router-monorepo-simple/packages/app/package.json
+++ b/examples/react/router-monorepo-simple/packages/app/package.json
@@ -19,7 +19,7 @@
     "@types/react-dom": "^18.2.18",
     "@vitejs/plugin-react": "^4.3.4",
     "typescript": "^5.7.2",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/router-devtools": "^1.92.13",
     "vite": "^6.0.3",
     "vite-plugin-dts": "^4.4.0"
   },
diff --git a/examples/react/router-monorepo-simple/packages/router/package.json b/examples/react/router-monorepo-simple/packages/router/package.json
index dbb3a64ea..74743eb95 100644
--- a/examples/react/router-monorepo-simple/packages/router/package.json
+++ b/examples/react/router-monorepo-simple/packages/router/package.json
@@ -9,8 +9,8 @@
   "types": "./dist/index.d.ts",
   "dependencies": {
     "@tanstack/history": "^1.90.0",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "redaxios": "^0.5.1",
     "zod": "^3.23.8",
     "react": "^18.2.0",
diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json
index cfdfe354a..79c990ec6 100644
--- a/examples/react/scroll-restoration/package.json
+++ b/examples/react/scroll-restoration/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
     "@tanstack/react-virtual": "^3.11.1",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/router-devtools": "^1.92.13",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },
diff --git a/examples/react/search-validator-adapters/package.json b/examples/react/search-validator-adapters/package.json
index a64a405c8..c2bea9d19 100644
--- a/examples/react/search-validator-adapters/package.json
+++ b/examples/react/search-validator-adapters/package.json
@@ -11,12 +11,12 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/arktype-adapter": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
-    "@tanstack/valibot-adapter": "^1.92.11",
-    "@tanstack/zod-adapter": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/arktype-adapter": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
+    "@tanstack/valibot-adapter": "^1.92.13",
+    "@tanstack/zod-adapter": "^1.92.13",
     "arktype": "2.0.0-rc.26",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/start-basic-auth/package.json b/examples/react/start-basic-auth/package.json
index c9d552fcd..2e46d8b87 100644
--- a/examples/react/start-basic-auth/package.json
+++ b/examples/react/start-basic-auth/package.json
@@ -11,9 +11,9 @@
   },
   "dependencies": {
     "@prisma/client": "5.22.0",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "prisma": "^5.22.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json
index e7712814c..9435feca8 100644
--- a/examples/react/start-basic-react-query/package.json
+++ b/examples/react/start-basic-react-query/package.json
@@ -11,10 +11,10 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/react-router-with-query": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/react-router-with-query": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "redaxios": "^0.5.1",
diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json
index 9daceb4f0..ad726178c 100644
--- a/examples/react/start-basic-rsc/package.json
+++ b/examples/react/start-basic-rsc/package.json
@@ -10,9 +10,9 @@
   },
   "dependencies": {
     "@babel/plugin-syntax-typescript": "^7.25.9",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "redaxios": "^0.5.1",
     "tailwind-merge": "^2.5.5",
     "vinxi": "0.5.1"
diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json
index 2d781f416..943e779d4 100644
--- a/examples/react/start-basic/package.json
+++ b/examples/react/start-basic/package.json
@@ -9,9 +9,9 @@
     "start": "vinxi start"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "redaxios": "^0.5.1",
diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json
index 8088537d1..76af58549 100644
--- a/examples/react/start-clerk-basic/package.json
+++ b/examples/react/start-clerk-basic/package.json
@@ -10,9 +10,9 @@
   },
   "dependencies": {
     "@clerk/tanstack-start": "0.6.5",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "redaxios": "^0.5.1",
diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json
index d431fc612..f3b91c4fb 100644
--- a/examples/react/start-convex-trellaux/package.json
+++ b/examples/react/start-convex-trellaux/package.json
@@ -13,10 +13,10 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/react-router-with-query": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/react-router-with-query": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "@convex-dev/react-query": "0.0.0-alpha.8",
     "concurrently": "^8.2.2",
     "convex": "^1.17.3",
diff --git a/examples/react/start-counter/package.json b/examples/react/start-counter/package.json
index 1f702e398..773e7f829 100644
--- a/examples/react/start-counter/package.json
+++ b/examples/react/start-counter/package.json
@@ -9,8 +9,8 @@
     "start": "vinxi start"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "vinxi": "0.5.1"
diff --git a/examples/react/start-large/package.json b/examples/react/start-large/package.json
index 3f5178fe5..86a46aaa6 100644
--- a/examples/react/start-large/package.json
+++ b/examples/react/start-large/package.json
@@ -12,9 +12,9 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "redaxios": "^0.5.1",
diff --git a/examples/react/start-supabase-basic/package.json b/examples/react/start-supabase-basic/package.json
index 74653f543..f70b041a9 100644
--- a/examples/react/start-supabase-basic/package.json
+++ b/examples/react/start-supabase-basic/package.json
@@ -15,9 +15,9 @@
   "dependencies": {
     "@supabase/ssr": "^0.5.2",
     "@supabase/supabase-js": "^2.47.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "vinxi": "0.5.1"
diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json
index 0af5b8a4c..15f81b8dc 100644
--- a/examples/react/start-trellaux/package.json
+++ b/examples/react/start-trellaux/package.json
@@ -11,10 +11,10 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/react-router-with-query": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/start": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/react-router-with-query": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/start": "^1.92.13",
     "ky": "^1.7.2",
     "msw": "^2.6.8",
     "react": "^18.3.1",
diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json
index 7507edd07..c35e3ac1e 100644
--- a/examples/react/with-framer-motion/package.json
+++ b/examples/react/with-framer-motion/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
     "redaxios": "^0.5.1",
     "framer-motion": "^11.13.3",
     "react": "^18.2.0",
diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json
index c540d85e9..faf67b43a 100644
--- a/examples/react/with-trpc-react-query/package.json
+++ b/examples/react/with-trpc-react-query/package.json
@@ -10,9 +10,9 @@
   "dependencies": {
     "@tanstack/react-query": "^5.62.3",
     "@tanstack/react-query-devtools": "^5.62.3",
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "@trpc/client": "11.0.0-rc.660",
     "@trpc/react-query": "11.0.0-rc.660",
     "@trpc/server": "11.0.0-rc.660",
diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json
index 0c83e7ce1..985e8f025 100644
--- a/examples/react/with-trpc/package.json
+++ b/examples/react/with-trpc/package.json
@@ -8,9 +8,9 @@
     "start": "vinxi start"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.92.11",
-    "@tanstack/router-devtools": "^1.92.11",
-    "@tanstack/router-plugin": "^1.92.11",
+    "@tanstack/react-router": "^1.92.13",
+    "@tanstack/router-devtools": "^1.92.13",
+    "@tanstack/router-plugin": "^1.92.13",
     "@trpc/client": "11.0.0-rc.660",
     "@trpc/server": "11.0.0-rc.660",
     "react": "^18.2.0",
diff --git a/packages/arktype-adapter/package.json b/packages/arktype-adapter/package.json
index c9c1b253d..7a510dc6f 100644
--- a/packages/arktype-adapter/package.json
+++ b/packages/arktype-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/arktype-adapter",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/create-router/package.json b/packages/create-router/package.json
index 00888a2b5..d76816c0c 100644
--- a/packages/create-router/package.json
+++ b/packages/create-router/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/create-router",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/create-start/package.json b/packages/create-start/package.json
index 4fe2a2eb3..64a3057ea 100644
--- a/packages/create-start/package.json
+++ b/packages/create-start/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/create-start",
-  "version": "1.92.12",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tim O'Connell",
   "license": "MIT",
diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json
index cbee40f9b..51ec341af 100644
--- a/packages/react-router-with-query/package.json
+++ b/packages/react-router-with-query/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/react-router-with-query",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index 8af25a450..4c550e4ed 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/react-router",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts
index 1a0cf5726..f7b2cc13f 100644
--- a/packages/react-router/src/router.ts
+++ b/packages/react-router/src/router.ts
@@ -1937,7 +1937,7 @@ export class Router<
 
   latestLoadPromise: undefined | Promise<void>
 
-  load = async (): Promise<void> => {
+  load = async (opts?: { sync?: boolean }): Promise<void> => {
     this.latestLocation = this.parseLocation(this.latestLocation)
 
     let redirect: ResolvedRedirect | undefined
@@ -2000,6 +2000,7 @@ export class Router<
           })
 
           await this.loadMatches({
+            sync: opts?.sync,
             matches: pendingMatches,
             location: next,
             // eslint-disable-next-line @typescript-eslint/require-await
@@ -2188,6 +2189,7 @@ export class Router<
     preload: allPreload,
     onReady,
     updateMatch = this.updateMatch,
+    sync,
   }: {
     location: ParsedLocation
     matches: Array<AnyRouteMatch>
@@ -2198,6 +2200,7 @@ export class Router<
       updater: (match: AnyRouteMatch) => AnyRouteMatch,
     ) => void
     getMatch?: (matchId: string) => AnyRouteMatch | undefined
+    sync?: boolean
   }): Promise<Array<MakeRouteMatch>> => {
     let firstBadMatchIndex: number | undefined
     let rendered = false
@@ -2397,7 +2400,6 @@ export class Router<
                     context: {
                       ...getParentMatchContext(),
                       ...prev.__routeContext,
-                      ...prev.__beforeLoadContext,
                     },
                   }))
 
@@ -2485,7 +2487,8 @@ export class Router<
                   const { loaderPromise: prevLoaderPromise } =
                     this.getMatch(matchId)!
 
-                  let loaderRunningAsync = false
+                  let loaderShouldRunAsync = false
+                  let loaderIsRunningAsync = false
 
                   if (prevLoaderPromise) {
                     await prevLoaderPromise
@@ -2666,36 +2669,50 @@ export class Router<
 
                     // If the route is successful and still fresh, just resolve
                     const { status, invalid } = this.getMatch(matchId)!
-                    loaderRunningAsync =
+                    loaderShouldRunAsync =
                       status === 'success' &&
                       (invalid || (shouldReload ?? age > staleAge))
                     if (preload && route.options.preload === false) {
                       // Do nothing
-                    } else if (loaderRunningAsync) {
+                    } else if (loaderShouldRunAsync && !sync) {
+                      loaderIsRunningAsync = true
                       ;(async () => {
                         try {
                           await runLoader()
+                          const { loaderPromise, loadPromise } =
+                            this.getMatch(matchId)!
+                          loaderPromise?.resolve()
+                          loadPromise?.resolve()
+                          updateMatch(matchId, (prev) => ({
+                            ...prev,
+                            loaderPromise: undefined,
+                          }))
                         } catch (err) {
                           if (isResolvedRedirect(err)) {
                             await this.navigate(err)
                           }
                         }
                       })()
-                    } else if (status !== 'success') {
+                    } else if (
+                      status !== 'success' ||
+                      (loaderShouldRunAsync && sync)
+                    ) {
                       await runLoader()
                     }
-
+                  }
+                  if (!loaderIsRunningAsync) {
                     const { loaderPromise, loadPromise } =
                       this.getMatch(matchId)!
-
                     loaderPromise?.resolve()
                     loadPromise?.resolve()
                   }
 
                   updateMatch(matchId, (prev) => ({
                     ...prev,
-                    isFetching: loaderRunningAsync ? prev.isFetching : false,
-                    loaderPromise: undefined,
+                    isFetching: loaderIsRunningAsync ? prev.isFetching : false,
+                    loaderPromise: loaderIsRunningAsync
+                      ? prev.loaderPromise
+                      : undefined,
                     invalid: false,
                   }))
                   return this.getMatch(matchId)!
@@ -2726,6 +2743,7 @@ export class Router<
 
   invalidate = <TRouter extends AnyRouter = typeof this>(opts?: {
     filter?: (d: MakeRouteMatchUnion<TRouter>) => boolean
+    sync?: boolean
   }) => {
     const invalidate = (d: MakeRouteMatch<TRouteTree>) => {
       if (opts?.filter?.(d as MakeRouteMatchUnion<TRouter>) ?? true) {
@@ -2747,7 +2765,7 @@ export class Router<
       pendingMatches: s.pendingMatches?.map(invalidate),
     }))
 
-    return this.load()
+    return this.load({ sync: opts?.sync })
   }
 
   resolveRedirect = (err: AnyRedirect): ResolvedRedirect => {
diff --git a/packages/router-cli/package.json b/packages/router-cli/package.json
index 038f66278..9785387b7 100644
--- a/packages/router-cli/package.json
+++ b/packages/router-cli/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-cli",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json
index 67689873d..ae6c8db5d 100644
--- a/packages/router-devtools/package.json
+++ b/packages/router-devtools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-devtools",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-generator/package.json b/packages/router-generator/package.json
index 6128cc109..73c36523d 100644
--- a/packages/router-generator/package.json
+++ b/packages/router-generator/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-generator",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-plugin/package.json b/packages/router-plugin/package.json
index a4c971ce5..4d91ced8a 100644
--- a/packages/router-plugin/package.json
+++ b/packages/router-plugin/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-plugin",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-vite-plugin/package.json b/packages/router-vite-plugin/package.json
index 9197c224e..c387eb086 100644
--- a/packages/router-vite-plugin/package.json
+++ b/packages/router-vite-plugin/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-vite-plugin",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/start/package.json b/packages/start/package.json
index 1865972a9..0efe5b17c 100644
--- a/packages/start/package.json
+++ b/packages/start/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/start",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/valibot-adapter/package.json b/packages/valibot-adapter/package.json
index e507e283e..0cabde0cb 100644
--- a/packages/valibot-adapter/package.json
+++ b/packages/valibot-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/valibot-adapter",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/zod-adapter/package.json b/packages/zod-adapter/package.json
index 18ccf5f3b..1c3ffd4d7 100644
--- a/packages/zod-adapter/package.json
+++ b/packages/zod-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/zod-adapter",
-  "version": "1.92.11",
+  "version": "1.92.13",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",


Test patch:
diff --git a/packages/react-router/tests/routeContext.test.tsx b/packages/react-router/tests/routeContext.test.tsx
index 5cb95a809..c62decee7 100644
--- a/packages/react-router/tests/routeContext.test.tsx
+++ b/packages/react-router/tests/routeContext.test.tsx
@@ -1407,6 +1407,59 @@ describe('beforeLoad in the route definition', () => {
     expect(mock).toHaveBeenCalledWith({ foo: 'bar', layout: 'layout' })
     expect(mock).toHaveBeenCalledTimes(1)
   })
+
+  test('child route receives updated values after the values were previously returned by the child route and then updated by the parent route', async () => {
+    const mockIndexBeforeLoadFn = vi.fn()
+    let counter = 0
+
+    const rootRoute = createRootRoute({
+      beforeLoad: () => {
+        counter++
+        return {
+          counter,
+        }
+      },
+    })
+    const indexRoute = createRoute({
+      getParentRoute: () => rootRoute,
+      path: '/',
+      beforeLoad: ({ context }) => {
+        mockIndexBeforeLoadFn(context)
+        return {
+          counter: context.counter,
+        }
+      },
+      component: () => {
+        const { counter } = indexRoute.useRouteContext()
+        return (
+          <div>
+            <span data-testid="index-page">Index page</span>
+            <span data-testid="counter">{counter}</span>
+          </div>
+        )
+      },
+    })
+    const routeTree = rootRoute.addChildren([indexRoute])
+    const router = createRouter({ routeTree, history })
+
+    render(<RouterProvider router={router} />)
+
+    const rootElement = await screen.findByTestId('index-page')
+    expect(rootElement).toBeInTheDocument()
+
+    async function check(expectedCounter: number) {
+      const counterElement = await screen.findByTestId('counter')
+      expect(counterElement).toHaveTextContent(`${expectedCounter}`)
+
+      expect(mockIndexBeforeLoadFn).toHaveBeenCalledWith({
+        counter: expectedCounter,
+      })
+    }
+
+    await check(1)
+    await router.invalidate()
+    await check(2)
+  })
 })
 
 describe('loader in the route definition', () => {