Repository: TanStack/router
Pull request #2236 (2024-08-31 17:28:47)

docs(react): remove duplicated line in overview.md
removed "Prefetching" in the doc, it was duplicated.


Patch:
diff --git a/docs/framework/react/overview.md b/docs/framework/react/overview.md
index dcf38f8eb..b20be5d07 100644
--- a/docs/framework/react/overview.md
+++ b/docs/framework/react/overview.md
@@ -53,7 +53,6 @@ TanStack Router delivers on the same fundamental expectations as other routers t
 - URL Path Params
 - Error Boundaries and Handling
 - SSR
-- Prefetching
 - Route Masking
 
 And it also delivers some new features that raise the bar:
diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json
index 38ba282eb..12dffe9f0 100644
--- a/examples/react/authenticated-routes/package.json
+++ b/examples/react/authenticated-routes/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json
index 4cec7b6cc..83aafaefd 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.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 d8af393a8..0892c49d4 100644
--- a/examples/react/basic-file-based-codesplitting/package.json
+++ b/examples/react/basic-file-based-codesplitting/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json
index cd9e4855d..c8d0abe66 100644
--- a/examples/react/basic-file-based/package.json
+++ b/examples/react/basic-file-based/package.json
@@ -10,8 +10,8 @@
     "test:e2e": "playwright test --project=chromium"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json
index c4b758782..f9cbf5f7c 100644
--- a/examples/react/basic-react-query-file-based/package.json
+++ b/examples/react/basic-react-query-file-based/package.json
@@ -12,8 +12,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json
index 1e968aa2d..789b4306c 100644
--- a/examples/react/basic-react-query/package.json
+++ b/examples/react/basic-react-query/package.json
@@ -12,8 +12,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 61b99c3ac..0ecae8038 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.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "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 8cf33ef2a..54b5c49c2 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.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "get-port": "^7.1.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 4dac82d5f..f81fa46a3 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -10,8 +10,8 @@
     "test:e2e": "playwright test --project=chromium"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 f39427340..822ad8633 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.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "redaxios": "^0.5.1",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json
index abec1dfec..0bfa5d8ca 100644
--- a/examples/react/kitchen-sink-file-based/package.json
+++ b/examples/react/kitchen-sink-file-based/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^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 910c4995e..63044af86 100644
--- a/examples/react/kitchen-sink-react-query-file-based/package.json
+++ b/examples/react/kitchen-sink-react-query-file-based/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json
index f7bf78271..efdfadb29 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.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 58dce3ceb..291a7d635 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.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 4ac10670c..bdfa98cb6 100644
--- a/examples/react/large-file-based/package.json
+++ b/examples/react/large-file-based/package.json
@@ -12,8 +12,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json
index b50df9642..b94e1e350 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.1",
     "@tanstack/react-query": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 86c5c2b34..338f716c2 100644
--- a/examples/react/navigation-blocking/package.json
+++ b/examples/react/navigation-blocking/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "redaxios": "^0.5.1",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json
index 8f558aad6..a58df31ab 100644
--- a/examples/react/quickstart-file-based/package.json
+++ b/examples/react/quickstart-file-based/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "immer": "^10.1.1",
     "react": "^18.2.0",
diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json
index f193bf8ab..c4e374c20 100644
--- a/examples/react/quickstart-rspack-file-based/package.json
+++ b/examples/react/quickstart-rspack-file-based/package.json
@@ -8,8 +8,8 @@
     "preview": "rsbuild preview"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json
index 388c02259..5662fa9f1 100644
--- a/examples/react/quickstart-webpack-file-based/package.json
+++ b/examples/react/quickstart-webpack-file-based/package.json
@@ -7,8 +7,8 @@
     "build": "webpack build"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json
index 9fbcc3d87..74e0f693f 100644
--- a/examples/react/quickstart/package.json
+++ b/examples/react/quickstart/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },
diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json
index 5df0f468f..2cbe2d523 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.51.8",
+    "@tanstack/react-router": "^1.51.9",
     "@tanstack/react-virtual": "^3.8.4",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/router-devtools": "^1.51.9",
     "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 57974a1eb..7bff705bc 100644
--- a/examples/react/search-validator-adapters/package.json
+++ b/examples/react/search-validator-adapters/package.json
@@ -9,12 +9,12 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/router-zod-adapter": "^1.51.8",
-    "@tanstack/router-valibot-adapter": "^1.51.8",
-    "@tanstack/router-arktype-adapter": "^1.51.8",
+    "@tanstack/router-zod-adapter": "^1.51.9",
+    "@tanstack/router-valibot-adapter": "^1.51.9",
+    "@tanstack/router-arktype-adapter": "^1.51.9",
     "@tanstack/react-query": "^5.51.21",
     "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 57ca1af43..8ee073a80 100644
--- a/examples/react/start-basic-auth/package.json
+++ b/examples/react/start-basic-auth/package.json
@@ -14,10 +14,10 @@
   },
   "dependencies": {
     "@prisma/client": "5.17.0",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "dotenv": "^16.4.5",
     "isbot": "^5.1.12",
diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json
index 4072819ce..1bc309e45 100644
--- a/examples/react/start-basic-counter/package.json
+++ b/examples/react/start-basic-counter/package.json
@@ -11,8 +11,8 @@
     "format": "prettier --write '**/*' --ignore-unknown"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/start": "^1.51.9",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "vinxi": "0.4.2"
diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json
index a0f5a1cd2..106622cb5 100644
--- a/examples/react/start-basic-react-query/package.json
+++ b/examples/react/start-basic-react-query/package.json
@@ -14,11 +14,11 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/react-router-with-query": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/react-router-with-query": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "isbot": "^5.1.14",
     "react": "^18.3.1",
diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json
index 6d2e7dc3d..8918415ee 100644
--- a/examples/react/start-basic-rsc/package.json
+++ b/examples/react/start-basic-rsc/package.json
@@ -12,10 +12,10 @@
   },
   "dependencies": {
     "@babel/plugin-syntax-typescript": "^7.24.7",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "redaxios": "^0.5.1",
     "tailwind-merge": "^2.5.2",
     "vinxi": "0.4.2"
diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json
index 902d85b54..9ad3064a9 100644
--- a/examples/react/start-basic/package.json
+++ b/examples/react/start-basic/package.json
@@ -12,10 +12,10 @@
     "test:e2e": "playwright test --project=chromium"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "isbot": "^5.1.14",
     "react": "^18.3.1",
diff --git a/examples/react/start-clerk-basic/package.json b/examples/react/start-clerk-basic/package.json
index 24d818bd9..0116987a3 100644
--- a/examples/react/start-clerk-basic/package.json
+++ b/examples/react/start-clerk-basic/package.json
@@ -13,10 +13,10 @@
   },
   "dependencies": {
     "@clerk/tanstack-start": "0.3.0-snapshot.vdf04997",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "dotenv": "^16.4.5",
     "isbot": "^5.1.12",
diff --git a/examples/react/start-convex-trellaux/package.json b/examples/react/start-convex-trellaux/package.json
index eb65116f1..ce4345c7c 100644
--- a/examples/react/start-convex-trellaux/package.json
+++ b/examples/react/start-convex-trellaux/package.json
@@ -15,11 +15,11 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/react-router-with-query": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/react-router-with-query": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "@convex-dev/react-query": "0.0.0-alpha.5",
     "concurrently": "^8.2.2",
diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json
index 577fd8fd0..91ba52c87 100644
--- a/examples/react/start-trellaux/package.json
+++ b/examples/react/start-trellaux/package.json
@@ -13,11 +13,11 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/react-router-with-query": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/react-router-with-query": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
-    "@tanstack/start": "^1.51.8",
+    "@tanstack/start": "^1.51.9",
     "@vitejs/plugin-react": "^4.3.1",
     "isbot": "^5.1.14",
     "ky": "^1.5.0",
diff --git a/examples/react/with-framer-motion/package.json b/examples/react/with-framer-motion/package.json
index 0c51f0e3b..a2be92e4a 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.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "redaxios": "^0.5.1",
     "framer-motion": "^11.3.21",
     "immer": "^10.1.1",
diff --git a/examples/react/with-trpc-react-query/package.json b/examples/react/with-trpc-react-query/package.json
index bef1c9d3e..7e0516609 100644
--- a/examples/react/with-trpc-react-query/package.json
+++ b/examples/react/with-trpc-react-query/package.json
@@ -10,8 +10,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.51.21",
     "@tanstack/react-query-devtools": "^5.51.21",
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "@trpc/client": "11.0.0-rc.477",
     "@trpc/react-query": "11.0.0-rc.477",
diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json
index a15e156e8..37f936574 100644
--- a/examples/react/with-trpc/package.json
+++ b/examples/react/with-trpc/package.json
@@ -8,8 +8,8 @@
     "start": "vinxi start"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.51.8",
-    "@tanstack/router-devtools": "^1.51.8",
+    "@tanstack/react-router": "^1.51.9",
+    "@tanstack/router-devtools": "^1.51.9",
     "@tanstack/router-plugin": "^1.51.6",
     "@trpc/client": "11.0.0-rc.477",
     "@trpc/server": "11.0.0-rc.477",
diff --git a/packages/react-router-with-query/package.json b/packages/react-router-with-query/package.json
index a9d67ab20..d2a01da3a 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.51.8",
+  "version": "1.51.9",
   "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 8355166f9..11788f2ef 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/react-router",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts
index 000bdef20..7797b496b 100644
--- a/packages/react-router/src/route.ts
+++ b/packages/react-router/src/route.ts
@@ -879,13 +879,45 @@ export class Route<
     TBeforeLoadFn
   >
 
-  // Set up in this.init()
+  // The following properties are set up in this.init()
   parentRoute!: TParentRoute
-  id!: TId
-  // customId!: TCustomId
-  path!: TPath
-  fullPath!: TFullPath
-  to!: TrimPathRight<TFullPath>
+  private _id!: TId
+  private _path!: TPath
+  private _fullPath!: TFullPath
+  private _to!: TrimPathRight<TFullPath>
+
+  public get to() {
+    invariant(
+      this._to,
+      `trying to access property 'to' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`,
+    )
+    return this._to
+  }
+
+  public get id() {
+    invariant(
+      this._id,
+      `trying to access property 'id' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`,
+    )
+    return this._id
+  }
+
+  public get path() {
+    invariant(
+      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+      this.isRoot || this._id || this._path,
+      `trying to access property 'path' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`,
+    )
+    return this._path
+  }
+
+  public get fullPath() {
+    invariant(
+      this._fullPath,
+      `trying to access property 'fullPath' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`,
+    )
+    return this._fullPath
+  }
 
   // Optional
   children?: TChildren
@@ -981,7 +1013,7 @@ export class Route<
     this.parentRoute = this.options.getParentRoute?.()
 
     if (isRoot) {
-      this.path = rootRouteId as TPath
+      this._path = rootRouteId as TPath
     } else {
       invariant(
         this.parentRoute,
@@ -1017,11 +1049,11 @@ export class Route<
     const fullPath =
       id === rootRouteId ? '/' : joinPaths([this.parentRoute.fullPath, path])
 
-    this.path = path as TPath
-    this.id = id as TId
+    this._path = path as TPath
+    this._id = id as TId
     // this.customId = customId as TCustomId
-    this.fullPath = fullPath as TFullPath
-    this.to = fullPath as TrimPathRight<TFullPath>
+    this._fullPath = fullPath as TFullPath
+    this._to = fullPath as TrimPathRight<TFullPath>
   }
 
   addChildren<
diff --git a/packages/router-arktype-adapter/package.json b/packages/router-arktype-adapter/package.json
index 44bc8b9de..9986fb109 100644
--- a/packages/router-arktype-adapter/package.json
+++ b/packages/router-arktype-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-arktype-adapter",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "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 8f6a3e200..87da2a537 100644
--- a/packages/router-devtools/package.json
+++ b/packages/router-devtools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-devtools",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-valibot-adapter/package.json b/packages/router-valibot-adapter/package.json
index f5d728120..c777d661a 100644
--- a/packages/router-valibot-adapter/package.json
+++ b/packages/router-valibot-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-valibot-adapter",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/router-zod-adapter/package.json b/packages/router-zod-adapter/package.json
index 272b921a8..74b61f940 100644
--- a/packages/router-zod-adapter/package.json
+++ b/packages/router-zod-adapter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-zod-adapter",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "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 4a82fb713..c4930cfdd 100644
--- a/packages/start/package.json
+++ b/packages/start/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/start",
-  "version": "1.51.8",
+  "version": "1.51.9",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",


Test patch:
diff --git a/packages/react-router/tests/createRoute.test.ts b/packages/react-router/tests/createRoute.test.ts
deleted file mode 100644
index efa13c814..000000000
--- a/packages/react-router/tests/createRoute.test.ts
+++ /dev/null
@@ -1,330 +0,0 @@
-import { describe, it } from 'vitest'
-import { z } from 'zod'
-import { createMemoryHistory, RootRoute, Route, createRouter } from '../src'
-
-const lazyTest = (comp: any, key: any) => {
-  comp.preload = () => {}
-  return comp
-}
-
-// Write a test
-describe('everything', () => {
-  it('should work', () => {
-    // // Build our routes. We could do this in our component, too.
-    // const rootRoute = createRootRoute()
-    // const indexRoute = createRoute({
-    //   getParentRoute: () => rootRoute,
-    //   path: '/',
-    //   validateSearch: (search) =>
-    //     z
-    //       .object({
-    //         version: z.number(),
-    //       })
-    //       .parse(search),
-    // })
-    // const testRoute = createRoute({
-    //   getParentRoute: () => rootRoute,
-    //   component: lazyTest(() => import('./TestComponent'), 'NamedComponent'),
-    //   path: 'test',
-    //   validateSearch: (search) =>
-    //     z
-    //       .object({
-    //         version: z.number(),
-    //         isGood: z.boolean(),
-    //       })
-    //       .parse(search),
-    // })
-    // const dashboardRoute = createRoute({
-    //   getParentRoute: () => rootRoute,
-    //   path: 'dashboard',
-    //   loader: async () => {
-    //     console.info('Fetching all invoices...')
-    //     return {
-    //       invoices: 'await fetchInvoices()',
-    //     }
-    //   },
-    // })
-    // const dashboardIndexRoute = createRoute({
-    //   getParentRoute: () => dashboardRoute,
-    //   path: '/',
-    // })
-    // const invoicesRoute = createRoute({
-    //   getParentRoute: () => dashboardRoute,
-    //   path: 'invoices',
-    // })
-    // const invoicesIndexRoute = createRoute({
-    //   getParentRoute: () => invoicesRoute,
-    //   path: '/',
-    // })
-    // const invoiceRoute = createRoute({
-    //   getParentRoute: () => invoicesRoute,
-    //   path: '$invoiceId',
-    //   parseParams: ({ invoiceId }) => ({ invoiceId: Number(invoiceId) }),
-    //   stringifyParams: ({ invoiceId }) => ({
-    //     invoiceId: String(invoiceId),
-    //   }),
-    //   loader: async ({ params: { invoiceId } }) => {
-    //     console.info('Fetching invoice...')
-    //     return {
-    //       invoice: 'await fetchInvoiceById(invoiceId!)',
-    //     }
-    //   },
-    // })
-    // const usersRoute = createRoute({
-    //   getParentRoute: () => dashboardRoute,
-    //   path: 'users',
-    //   loader: async () => {
-    //     return {
-    //       users: 'await fetchUsers()',
-    //     }
-    //   },
-    //   validateSearch: (search) =>
-    //     z
-    //       .object({
-    //         usersView: z
-    //           .object({
-    //             sortBy: z.enum(['name', 'id', 'email']).optional(),
-    //             filterBy: z.string().optional(),
-    //           })
-    //           .optional(),
-    //       })
-    //       .parse(search),
-    //   preSearchFilters: [
-    //     // Keep the usersView search param around
-    //     // while in this route (or it's children!)
-    //     (search) => ({
-    //       ...search,
-    //       usersView: {
-    //         ...search.usersView,
-    //       },
-    //     }),
-    //   ],
-    // })
-    // const userRoute = createRoute({
-    //   getParentRoute: () => usersRoute,
-    //   path: '$userId',
-    //   loader: async ({ params: { userId }, search }) => {
-    //     return {
-    //       user: 'await fetchUserById(userId!)',
-    //     }
-    //   },
-    // })
-    // const authenticatedRoute = createRoute({
-    //   getParentRoute: () => rootRoute,
-    //   path: 'authenticated/', // Trailing slash doesn't mean anything
-    // })
-    // const authenticatedIndexRoute = createRoute({
-    //   getParentRoute: () => authenticatedRoute,
-    //   path: '/',
-    // })
-    // const layoutRoute = createRoute({
-    //   getParentRoute: () => rootRoute,
-    //   id: 'layout',
-    //   component: () => 'layout-wrapper',
-    //   validateSearch: (search) =>
-    //     z
-    //       .object({
-    //         isLayout: z.boolean(),
-    //       })
-    //       .parse(search),
-    // })
-    // const layoutARoute = createRoute({
-    //   getParentRoute: () => layoutRoute,
-    //   path: 'layout-a',
-    //   component: () => 'layout-a',
-    // })
-    // const layoutBRoute = createRoute({
-    //   getParentRoute: () => layoutRoute,
-    //   path: 'layout-b',
-    //   component: () => 'layout-b',
-    // })
-    // const routeTree = rootRoute.addChildren([
-    //   indexRoute,
-    //   testRoute,
-    //   dashboardRoute.addChildren([
-    //     dashboardIndexRoute,
-    //     invoicesRoute.addChildren([invoicesIndexRoute, invoiceRoute]),
-    //     usersRoute.addChildren([userRoute]),
-    //   ]),
-    //   authenticatedRoute.addChildren([authenticatedIndexRoute]),
-    //   layoutRoute.addChildren([layoutARoute, layoutBRoute]),
-    // ])
-    // const router = createRouter({
-    //   routeTree,
-    //   history: createMemoryHistory({
-    //     initialEntries: ['/?version=1'],
-    //   }),
-    // })
-    // const route = router.getRoute('/dashboard/users/$userId')
-    // router.buildLink({
-    //   to: '/dashboard/users/$userId',
-    //   params: {
-    //     userId: '2',
-    //   },
-    //   search: (prev) => ({
-    //     usersView: {
-    //       sortBy: 'email',
-    //     },
-    //   }),
-    // })
-    // // @ts-expect-error
-    // router.buildLink({
-    //   from: '/',
-    //   to: '/test',
-    // })
-    // router.buildLink({
-    //   from: '/',
-    //   to: '/test',
-    //   search: () => {
-    //     return {
-    //       version: 2,
-    //       isGood: true,
-    //     }
-    //   },
-    // })
-    // router.buildLink({
-    //   from: '/test',
-    //   to: '/',
-    // })
-    // router.buildLink({
-    //   from: route.id,
-    //   to: '',
-    // })
-    // router.buildLink({
-    //   from: '/dashboard',
-    //   to: '/dashboard/invoices',
-    //   params: {
-    //     invoiceId: 2,
-    //   },
-    // })
-    // router.buildLink({
-    //   from: '/dashboard',
-    //   to: '/dashboard/invoices/$invoiceId',
-    //   params: {
-    //     // @ts-expect-error
-    //     invoiceId: '2',
-    //   },
-    // })
-    // router.buildLink({
-    //   to: '/dashboard/invoices/$invoiceId',
-    //   params: {
-    //     invoiceId: 2,
-    //   },
-    // })
-    // router.buildLink({
-    //   to: '/',
-    //   search: {
-    //     version: 2,
-    //   },
-    // })
-    // router.buildLink({
-    //   to: '/dashboard/users/$userId',
-    //   // @ts-expect-error
-    //   params: (current) => ({
-    //     userId: current?.invoiceId,
-    //   }),
-    //   search: (old) => ({
-    //     usersView: {
-    //       sortBy: 'email' as const,
-    //       filterBy: String(old.version),
-    //     },
-    //   }),
-    // })
-    // router.buildLink({
-    //   from: '/dashboard/invoices/$invoiceId',
-    //   to: '/dashboard/users/$userId',
-    //   params: (current) => ({
-    //     userId: `${current?.invoiceId}`,
-    //   }),
-    //   search: (prev) => {
-    //     return {
-    //       usersView: {
-    //         sortBy: 'name' as const,
-    //         filterBy: 'tanner',
-    //       },
-    //     }
-    //   },
-    // })
-    // router.buildLink({
-    //   from: '/dashboard/users/$userId',
-    //   to: '/',
-    //   search: (prev) => {
-    //     return {
-    //       version: 2,
-    //     }
-    //   },
-    // })
-    // router.buildLink({
-    //   from: '/',
-    //   to: '/dashboard/users/$userId',
-    //   params: {
-    //     userId: '2',
-    //   },
-    //   search: (prev) => ({
-    //     usersView: {
-    //       sortBy: 'id',
-    //       filterBy: `${prev.version}`,
-    //     },
-    //   }),
-    // })
-    // router.navigate({
-    //   search: (prev: any) => ({
-    //     version: prev.version,
-    //   }),
-    // })
-    // router.buildLink({
-    //   from: '/dashboard/invoices',
-    //   to: '/dashboard',
-    // })
-    // router.buildLink({
-    //   from: '/',
-    //   // @ts-expect-error
-    //   to: '/does-not-exist',
-    // })
-    // router.buildLink({
-    //   to: '/dashboard/invoices/$invoiceId',
-    //   params: {
-    //     invoiceId: 2,
-    //   },
-    // })
-    // router.buildLink({
-    //   from: '/dashboard/invoices/$invoiceId',
-    //   to: '.',
-    //   params: (d) => ({
-    //     invoiceId: d.invoiceId,
-    //   }),
-    // })
-    // router.buildLink({
-    //   from: '/dashboard/invoices/$invoiceId',
-    //   to: testRoute.fullPath,
-    //   search: {
-    //     version: 2,
-    //     isGood: true,
-    //   },
-    // })
-    // router.buildLink({
-    //   to: '/layout-a',
-    //   search: (current) => ({
-    //     isLayout: !!current.version,
-    //   }),
-    // })
-    // router.buildLink({
-    //   to: '/',
-    //   state: true,
-    // })
-    // router.buildLink({
-    //   to: '/',
-    //   state: {},
-    // })
-    // router.buildLink({
-    //   to: '/',
-    //   state: (prev) => prev,
-    // })
-    // router.buildLink({
-    //   to: '/',
-    //   state: (prev) => ({
-    //     test: true,
-    //   }),
-    // })
-  })
-})
diff --git a/packages/react-router/tests/route.test.ts b/packages/react-router/tests/route.test.ts
deleted file mode 100644
index a001f7bfa..000000000
--- a/packages/react-router/tests/route.test.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/* eslint-disable */
-import { describe, it, expect } from 'vitest'
-import { getRouteApi, createRoute } from '../src'
-
-describe('getRouteApi', () => {
-  it('should have the useMatch hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useMatch).toBeDefined()
-  })
-
-  it('should have the useRouteContext hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useRouteContext).toBeDefined()
-  })
-
-  it('should have the useSearch hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useSearch).toBeDefined()
-  })
-
-  it('should have the useParams hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useParams).toBeDefined()
-  })
-
-  it('should have the useLoaderData hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useLoaderData).toBeDefined()
-  })
-
-  it('should have the useLoaderDeps hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useLoaderDeps).toBeDefined()
-  })
-
-  it('should have the useNavigate hook', () => {
-    const api = getRouteApi('foo')
-    expect(api.useNavigate).toBeDefined()
-  })
-})
-
-describe('createRoute has the same hooks as getRouteApi', () => {
-  const routeApi = getRouteApi('foo')
-  const hookNames = Object.keys(routeApi).filter((key) => key.startsWith('use'))
-  const route = createRoute({} as any)
-
-  it.each(hookNames.map((name) => [name]))(
-    'should have the "%s" hook defined',
-    (hookName) => {
-      expect(route[hookName as keyof typeof route]).toBeDefined()
-    },
-  )
-})
diff --git a/packages/react-router/tests/route.test.tsx b/packages/react-router/tests/route.test.tsx
new file mode 100644
index 000000000..fd881e328
--- /dev/null
+++ b/packages/react-router/tests/route.test.tsx
@@ -0,0 +1,140 @@
+/* eslint-disable */
+import { describe, it, expect } from 'vitest'
+import {
+  getRouteApi,
+  createRoute,
+  createRootRoute,
+  createRouter,
+  useNavigate,
+} from '../src'
+import React from 'react'
+import exp from 'constants'
+
+describe('getRouteApi', () => {
+  it('should have the useMatch hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useMatch).toBeDefined()
+  })
+
+  it('should have the useRouteContext hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useRouteContext).toBeDefined()
+  })
+
+  it('should have the useSearch hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useSearch).toBeDefined()
+  })
+
+  it('should have the useParams hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useParams).toBeDefined()
+  })
+
+  it('should have the useLoaderData hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useLoaderData).toBeDefined()
+  })
+
+  it('should have the useLoaderDeps hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useLoaderDeps).toBeDefined()
+  })
+
+  it('should have the useNavigate hook', () => {
+    const api = getRouteApi('foo')
+    expect(api.useNavigate).toBeDefined()
+  })
+})
+
+describe('createRoute has the same hooks as getRouteApi', () => {
+  const routeApi = getRouteApi('foo')
+  const hookNames = Object.keys(routeApi).filter((key) => key.startsWith('use'))
+  const route = createRoute({} as any)
+
+  it.each(hookNames.map((name) => [name]))(
+    'should have the "%s" hook defined',
+    (hookName) => {
+      expect(route[hookName as keyof typeof route]).toBeDefined()
+    },
+  )
+})
+
+describe('throws invariant exception when trying to access properties before `createRouter` completed', () => {
+  function setup() {
+    const rootRoute = createRootRoute()
+
+    const IndexComponent = () => {
+      const navigate = useNavigate()
+      return (
+        <React.Fragment>
+          <h1>Index</h1>
+          <button onClick={() => navigate({ to: '/' })}>Index</button>
+          <button onClick={() => navigate({ to: '/posts' })}>Posts</button>
+        </React.Fragment>
+      )
+    }
+
+    const indexRoute = createRoute({
+      getParentRoute: () => rootRoute,
+      path: '/',
+      component: IndexComponent,
+    })
+
+    const postsRoute = createRoute({
+      getParentRoute: () => rootRoute,
+      path: '/posts',
+      component: () => {
+        return (
+          <React.Fragment>
+            <h1>Posts</h1>
+          </React.Fragment>
+        )
+      },
+    })
+    const initRouter = () =>
+      createRouter({
+        routeTree: rootRoute.addChildren([indexRoute, postsRoute]),
+      })
+    return { initRouter, rootRoute, indexRoute, postsRoute }
+  }
+
+  it('to', () => {
+    const { initRouter, indexRoute, postsRoute } = setup()
+
+    const expectedError = `Invariant failed: trying to access property 'to' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`
+    expect(() => indexRoute.to).toThrowError(expectedError)
+    expect(() => postsRoute.to).toThrowError(expectedError)
+
+    initRouter()
+
+    expect(indexRoute.to).toBe('/')
+    expect(postsRoute.to).toBe('/posts')
+  })
+
+  it('fullPath', () => {
+    const { initRouter, indexRoute, postsRoute } = setup()
+
+    const expectedError = `trying to access property 'fullPath' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`
+    expect(() => indexRoute.fullPath).toThrowError(expectedError)
+    expect(() => postsRoute.fullPath).toThrowError(expectedError)
+
+    initRouter()
+
+    expect(indexRoute.fullPath).toBe('/')
+    expect(postsRoute.fullPath).toBe('/posts')
+  })
+
+  it('id', () => {
+    const { initRouter, indexRoute, postsRoute } = setup()
+
+    const expectedError = `Invariant failed: trying to access property 'id' on a route which is not initialized yet. Route properties are only available after 'createRouter' completed.`
+    expect(() => indexRoute.id).toThrowError(expectedError)
+    expect(() => postsRoute.id).toThrowError(expectedError)
+
+    initRouter()
+
+    expect(indexRoute.to).toBe('/')
+    expect(postsRoute.to).toBe('/posts')
+  })
+})