From 7e71445a8c31419150a685a02d1916ad4f2915dd Mon Sep 17 00:00:00 2001
From: Birk Skyum <birk.skyum@pm.me>
Date: Tue, 21 Oct 2025 15:06:00 +0200
Subject: [PATCH 1/2] start-basic-solid-query

---
 .../solid/start-basic-solid-query/.gitignore  |  18 +
 .../start-basic-solid-query/.prettierignore   |   4 +
 .../.vscode/settings.json                     |  11 +
 .../solid/start-basic-solid-query/README.md   |  72 +++
 .../start-basic-solid-query/package.json      |  32 ++
 .../postcss.config.mjs                        |   6 +
 .../public/android-chrome-192x192.png         | Bin 0 -> 29964 bytes
 .../public/android-chrome-512x512.png         | Bin 0 -> 109271 bytes
 .../public/apple-touch-icon.png               | Bin 0 -> 27246 bytes
 .../public/favicon-16x16.png                  | Bin 0 -> 832 bytes
 .../public/favicon-32x32.png                  | Bin 0 -> 2115 bytes
 .../public/favicon.ico                        | Bin 0 -> 15406 bytes
 .../public/favicon.png                        | Bin 0 -> 1507 bytes
 .../public/site.webmanifest                   |  19 +
 .../src/components/DefaultCatchBoundary.tsx   |  53 +++
 .../src/components/NotFound.tsx               |  25 +
 .../src/routeTree.gen.ts                      | 430 ++++++++++++++++++
 .../start-basic-solid-query/src/router.tsx    |  30 ++
 .../src/routes/__root.tsx                     | 147 ++++++
 .../src/routes/_pathlessLayout.tsx            |  16 +
 .../routes/_pathlessLayout/_nested-layout.tsx |  34 ++
 .../_nested-layout/route-a.tsx                |  11 +
 .../_nested-layout/route-b.tsx                |  11 +
 .../src/routes/api/users.$id.ts               |  27 ++
 .../src/routes/api/users.ts                   |  21 +
 .../src/routes/deferred.tsx                   |  53 +++
 .../src/routes/index.tsx                      |  13 +
 .../src/routes/posts.$postId.tsx              |  53 +++
 .../src/routes/posts.index.tsx                |   9 +
 .../src/routes/posts.route.tsx                |  45 ++
 .../src/routes/posts_.$postId.deep.tsx        |  36 ++
 .../src/routes/redirect.tsx                   |   9 +
 .../src/routes/users.$userId.tsx              |  35 ++
 .../src/routes/users.index.tsx                |   9 +
 .../src/routes/users.route.tsx                |  42 ++
 .../src/styles/app.css                        |  22 +
 .../src/utils/posts.tsx                       |  49 ++
 .../start-basic-solid-query/src/utils/seo.ts  |  33 ++
 .../src/utils/users.tsx                       |  34 ++
 .../tailwind.config.mjs                       |   4 +
 .../start-basic-solid-query/tsconfig.json     |  23 +
 .../start-basic-solid-query/vite.config.ts    |  17 +
 pnpm-lock.yaml                                |  59 ++-
 43 files changed, 1510 insertions(+), 2 deletions(-)
 create mode 100644 examples/solid/start-basic-solid-query/.gitignore
 create mode 100644 examples/solid/start-basic-solid-query/.prettierignore
 create mode 100644 examples/solid/start-basic-solid-query/.vscode/settings.json
 create mode 100644 examples/solid/start-basic-solid-query/README.md
 create mode 100644 examples/solid/start-basic-solid-query/package.json
 create mode 100644 examples/solid/start-basic-solid-query/postcss.config.mjs
 create mode 100644 examples/solid/start-basic-solid-query/public/android-chrome-192x192.png
 create mode 100644 examples/solid/start-basic-solid-query/public/android-chrome-512x512.png
 create mode 100644 examples/solid/start-basic-solid-query/public/apple-touch-icon.png
 create mode 100644 examples/solid/start-basic-solid-query/public/favicon-16x16.png
 create mode 100644 examples/solid/start-basic-solid-query/public/favicon-32x32.png
 create mode 100644 examples/solid/start-basic-solid-query/public/favicon.ico
 create mode 100644 examples/solid/start-basic-solid-query/public/favicon.png
 create mode 100644 examples/solid/start-basic-solid-query/public/site.webmanifest
 create mode 100644 examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/components/NotFound.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routeTree.gen.ts
 create mode 100644 examples/solid/start-basic-solid-query/src/router.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/__root.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/api/users.ts
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/deferred.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/index.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.index.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/redirect.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.index.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.route.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/styles/app.css
 create mode 100644 examples/solid/start-basic-solid-query/src/utils/posts.tsx
 create mode 100644 examples/solid/start-basic-solid-query/src/utils/seo.ts
 create mode 100644 examples/solid/start-basic-solid-query/src/utils/users.tsx
 create mode 100644 examples/solid/start-basic-solid-query/tailwind.config.mjs
 create mode 100644 examples/solid/start-basic-solid-query/tsconfig.json
 create mode 100644 examples/solid/start-basic-solid-query/vite.config.ts

diff --git a/examples/solid/start-basic-solid-query/.gitignore b/examples/solid/start-basic-solid-query/.gitignore
new file mode 100644
index 0000000000..ca63f49885
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/.gitignore
@@ -0,0 +1,18 @@
+node_modules
+package-lock.json
+yarn.lock
+
+.DS_Store
+.cache
+.env
+.vercel
+.output
+/build/
+/api/
+/server/build
+/public/build# Sentry Config File
+.env.sentry-build-plugin
+/test-results/
+/playwright-report/
+/blob-report/
+/playwright/.cache/
diff --git a/examples/solid/start-basic-solid-query/.prettierignore b/examples/solid/start-basic-solid-query/.prettierignore
new file mode 100644
index 0000000000..2be5eaa6ec
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/.prettierignore
@@ -0,0 +1,4 @@
+**/build
+**/public
+pnpm-lock.yaml
+routeTree.gen.ts
\ No newline at end of file
diff --git a/examples/solid/start-basic-solid-query/.vscode/settings.json b/examples/solid/start-basic-solid-query/.vscode/settings.json
new file mode 100644
index 0000000000..00b5278e58
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/.vscode/settings.json
@@ -0,0 +1,11 @@
+{
+  "files.watcherExclude": {
+    "**/routeTree.gen.ts": true
+  },
+  "search.exclude": {
+    "**/routeTree.gen.ts": true
+  },
+  "files.readonlyInclude": {
+    "**/routeTree.gen.ts": true
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/README.md b/examples/solid/start-basic-solid-query/README.md
new file mode 100644
index 0000000000..90cba4aac1
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/README.md
@@ -0,0 +1,72 @@
+# Welcome to TanStack.com!
+
+This site is built with TanStack Router!
+
+- [TanStack Router Docs](https://tanstack.com/router)
+
+It's deployed automagically with Netlify!
+
+- [Netlify](https://netlify.com/)
+
+## Development
+
+From your terminal:
+
+```sh
+pnpm install
+pnpm dev
+```
+
+This starts your app in development mode, rebuilding assets on file changes.
+
+## Editing and previewing the docs of TanStack projects locally
+
+The documentations for all TanStack projects except for `React Charts` are hosted on [https://tanstack.com](https://tanstack.com), powered by this TanStack Router app.
+In production, the markdown doc pages are fetched from the GitHub repos of the projects, but in development they are read from the local file system.
+
+Follow these steps if you want to edit the doc pages of a project (in these steps we'll assume it's [`TanStack/form`](https://github.com/tanstack/form)) and preview them locally :
+
+1. Create a new directory called `tanstack`.
+
+```sh
+mkdir tanstack
+```
+
+2. Enter the directory and clone this repo and the repo of the project there.
+
+```sh
+cd tanstack
+git clone git@github.com:TanStack/tanstack.com.git
+git clone git@github.com:TanStack/form.git
+```
+
+> [!NOTE]
+> Your `tanstack` directory should look like this:
+>
+> ```
+> tanstack/
+>    |
+>    +-- form/
+>    |
+>    +-- tanstack.com/
+> ```
+
+> [!WARNING]
+> Make sure the name of the directory in your local file system matches the name of the project's repo. For example, `tanstack/form` must be cloned into `form` (this is the default) instead of `some-other-name`, because that way, the doc pages won't be found.
+
+3. Enter the `tanstack/tanstack.com` directory, install the dependencies and run the app in dev mode:
+
+```sh
+cd tanstack.com
+pnpm i
+# The app will run on https://localhost:3000 by default
+pnpm dev
+```
+
+4. Now you can visit http://localhost:3000/form/latest/docs/overview in the browser and see the changes you make in `tanstack/form/docs`.
+
+> [!NOTE]
+> The updated pages need to be manually reloaded in the browser.
+
+> [!WARNING]
+> You will need to update the `docs/config.json` file (in the project's repo) if you add a new doc page!
diff --git a/examples/solid/start-basic-solid-query/package.json b/examples/solid/start-basic-solid-query/package.json
new file mode 100644
index 0000000000..0a202cd6a4
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/package.json
@@ -0,0 +1,32 @@
+{
+  "name": "tanstack-start-example-basic-solid-query",
+  "private": true,
+  "sideEffects": false,
+  "type": "module",
+  "scripts": {
+    "dev": "vite dev",
+    "build": "vite build && tsc --noEmit",
+    "start": "vite start"
+  },
+  "dependencies": {
+    "@tanstack/solid-query": "^5.66.0",
+    "@tanstack/solid-query-devtools": "^5.66.0",
+    "@tanstack/solid-router": "^1.133.20",
+    "@tanstack/solid-router-ssr-query": "^1.133.20",
+    "@tanstack/solid-router-devtools": "^1.133.20",
+    "@tanstack/solid-start": "^1.133.20",
+    "solid-js": "^1.9.5",
+    "redaxios": "^0.5.1",
+    "tailwind-merge": "^2.6.0"
+  },
+  "devDependencies": {
+    "@types/node": "^22.5.4",
+    "vite-plugin-solid": "^2.11.9",
+    "postcss": "^8.5.1",
+    "autoprefixer": "^10.4.20",
+    "tailwindcss": "^3.4.17",
+    "typescript": "^5.7.2",
+    "vite": "^7.1.7",
+    "vite-tsconfig-paths": "^5.1.4"
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/postcss.config.mjs b/examples/solid/start-basic-solid-query/postcss.config.mjs
new file mode 100644
index 0000000000..2e7af2b7f1
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/postcss.config.mjs
@@ -0,0 +1,6 @@
+export default {
+  plugins: {
+    tailwindcss: {},
+    autoprefixer: {},
+  },
+}
diff --git a/examples/solid/start-basic-solid-query/public/android-chrome-192x192.png b/examples/solid/start-basic-solid-query/public/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/android-chrome-512x512.png b/examples/solid/start-basic-solid-query/public/android-chrome-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/apple-touch-icon.png b/examples/solid/start-basic-solid-query/public/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/favicon-16x16.png b/examples/solid/start-basic-solid-query/public/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/favicon-32x32.png b/examples/solid/start-basic-solid-query/public/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/favicon.ico b/examples/solid/start-basic-solid-query/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/favicon.png b/examples/solid/start-basic-solid-query/public/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0
GIT binary patch
diff --git a/examples/solid/start-basic-solid-query/public/site.webmanifest b/examples/solid/start-basic-solid-query/public/site.webmanifest
new file mode 100644
index 0000000000..fa99de77db
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/public/site.webmanifest
@@ -0,0 +1,19 @@
+{
+  "name": "",
+  "short_name": "",
+  "icons": [
+    {
+      "src": "/android-chrome-192x192.png",
+      "sizes": "192x192",
+      "type": "image/png"
+    },
+    {
+      "src": "/android-chrome-512x512.png",
+      "sizes": "512x512",
+      "type": "image/png"
+    }
+  ],
+  "theme_color": "#ffffff",
+  "background_color": "#ffffff",
+  "display": "standalone"
+}
diff --git a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
new file mode 100644
index 0000000000..32aed20e67
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx
@@ -0,0 +1,53 @@
+import {
+  ErrorComponent,
+  Link,
+  rootRouteId,
+  useMatch,
+  useRouter,
+} from '@tanstack/solid-router'
+import type { ErrorComponentProps } from '@tanstack/solid-router'
+
+export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
+  const router = useRouter()
+  const isRoot = useMatch({
+    strict: false,
+    select: (state) => state.id === rootRouteId,
+  })
+
+  console.error(error)
+
+  return (
+    <div class="min-w-0 flex-1 p-4 flex flex-col items-center justify-center gap-6">
+      <ErrorComponent error={error} />
+      <div class="flex gap-2 items-center flex-wrap">
+        <button
+          onClick={() => {
+            router.invalidate()
+          }}
+          class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+        >
+          Try Again
+        </button>
+        {isRoot() ? (
+          <Link
+            to="/"
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+          >
+            Home
+          </Link>
+        ) : (
+          <Link
+            to="/"
+            class={`px-2 py-1 bg-gray-600 dark:bg-gray-700 rounded text-white uppercase font-extrabold`}
+            onClick={(e) => {
+              e.preventDefault()
+              window.history.back()
+            }}
+          >
+            Go Back
+          </Link>
+        )}
+      </div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/components/NotFound.tsx b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx
new file mode 100644
index 0000000000..ca4c1960fa
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx
@@ -0,0 +1,25 @@
+import { Link } from '@tanstack/solid-router'
+
+export function NotFound({ children }: { children?: any }) {
+  return (
+    <div class="space-y-2 p-2">
+      <div class="text-gray-600 dark:text-gray-400">
+        {children || <p>The page you are looking for does not exist.</p>}
+      </div>
+      <p class="flex items-center gap-2 flex-wrap">
+        <button
+          onClick={() => window.history.back()}
+          class="bg-emerald-500 text-white px-2 py-1 rounded uppercase font-black text-sm"
+        >
+          Go back
+        </button>
+        <Link
+          to="/"
+          class="bg-cyan-600 text-white px-2 py-1 rounded uppercase font-black text-sm"
+        >
+          Start Over
+        </Link>
+      </p>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routeTree.gen.ts b/examples/solid/start-basic-solid-query/src/routeTree.gen.ts
new file mode 100644
index 0000000000..5f21fd643a
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routeTree.gen.ts
@@ -0,0 +1,430 @@
+/* eslint-disable */
+
+// @ts-nocheck
+
+// noinspection JSUnusedGlobalSymbols
+
+// This file was automatically generated by TanStack Router.
+// You should NOT make any changes in this file as it will be overwritten.
+// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+
+import { Route as rootRouteImport } from './routes/__root'
+import { Route as RedirectRouteImport } from './routes/redirect'
+import { Route as DeferredRouteImport } from './routes/deferred'
+import { Route as PathlessLayoutRouteImport } from './routes/_pathlessLayout'
+import { Route as UsersRouteRouteImport } from './routes/users.route'
+import { Route as PostsRouteRouteImport } from './routes/posts.route'
+import { Route as IndexRouteImport } from './routes/index'
+import { Route as UsersIndexRouteImport } from './routes/users.index'
+import { Route as PostsIndexRouteImport } from './routes/posts.index'
+import { Route as UsersUserIdRouteImport } from './routes/users.$userId'
+import { Route as PostsPostIdRouteImport } from './routes/posts.$postId'
+import { Route as ApiUsersRouteImport } from './routes/api/users'
+import { Route as PathlessLayoutNestedLayoutRouteImport } from './routes/_pathlessLayout/_nested-layout'
+import { Route as PostsPostIdDeepRouteImport } from './routes/posts_.$postId.deep'
+import { Route as ApiUsersIdRouteImport } from './routes/api/users.$id'
+import { Route as PathlessLayoutNestedLayoutRouteBRouteImport } from './routes/_pathlessLayout/_nested-layout/route-b'
+import { Route as PathlessLayoutNestedLayoutRouteARouteImport } from './routes/_pathlessLayout/_nested-layout/route-a'
+
+const RedirectRoute = RedirectRouteImport.update({
+  id: '/redirect',
+  path: '/redirect',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const DeferredRoute = DeferredRouteImport.update({
+  id: '/deferred',
+  path: '/deferred',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const PathlessLayoutRoute = PathlessLayoutRouteImport.update({
+  id: '/_pathlessLayout',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const UsersRouteRoute = UsersRouteRouteImport.update({
+  id: '/users',
+  path: '/users',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const PostsRouteRoute = PostsRouteRouteImport.update({
+  id: '/posts',
+  path: '/posts',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const IndexRoute = IndexRouteImport.update({
+  id: '/',
+  path: '/',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const UsersIndexRoute = UsersIndexRouteImport.update({
+  id: '/',
+  path: '/',
+  getParentRoute: () => UsersRouteRoute,
+} as any)
+const PostsIndexRoute = PostsIndexRouteImport.update({
+  id: '/',
+  path: '/',
+  getParentRoute: () => PostsRouteRoute,
+} as any)
+const UsersUserIdRoute = UsersUserIdRouteImport.update({
+  id: '/$userId',
+  path: '/$userId',
+  getParentRoute: () => UsersRouteRoute,
+} as any)
+const PostsPostIdRoute = PostsPostIdRouteImport.update({
+  id: '/$postId',
+  path: '/$postId',
+  getParentRoute: () => PostsRouteRoute,
+} as any)
+const ApiUsersRoute = ApiUsersRouteImport.update({
+  id: '/api/users',
+  path: '/api/users',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const PathlessLayoutNestedLayoutRoute =
+  PathlessLayoutNestedLayoutRouteImport.update({
+    id: '/_nested-layout',
+    getParentRoute: () => PathlessLayoutRoute,
+  } as any)
+const PostsPostIdDeepRoute = PostsPostIdDeepRouteImport.update({
+  id: '/posts_/$postId/deep',
+  path: '/posts/$postId/deep',
+  getParentRoute: () => rootRouteImport,
+} as any)
+const ApiUsersIdRoute = ApiUsersIdRouteImport.update({
+  id: '/$id',
+  path: '/$id',
+  getParentRoute: () => ApiUsersRoute,
+} as any)
+const PathlessLayoutNestedLayoutRouteBRoute =
+  PathlessLayoutNestedLayoutRouteBRouteImport.update({
+    id: '/route-b',
+    path: '/route-b',
+    getParentRoute: () => PathlessLayoutNestedLayoutRoute,
+  } as any)
+const PathlessLayoutNestedLayoutRouteARoute =
+  PathlessLayoutNestedLayoutRouteARouteImport.update({
+    id: '/route-a',
+    path: '/route-a',
+    getParentRoute: () => PathlessLayoutNestedLayoutRoute,
+  } as any)
+
+export interface FileRoutesByFullPath {
+  '/': typeof IndexRoute
+  '/posts': typeof PostsRouteRouteWithChildren
+  '/users': typeof UsersRouteRouteWithChildren
+  '/deferred': typeof DeferredRoute
+  '/redirect': typeof RedirectRoute
+  '/api/users': typeof ApiUsersRouteWithChildren
+  '/posts/$postId': typeof PostsPostIdRoute
+  '/users/$userId': typeof UsersUserIdRoute
+  '/posts/': typeof PostsIndexRoute
+  '/users/': typeof UsersIndexRoute
+  '/route-a': typeof PathlessLayoutNestedLayoutRouteARoute
+  '/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute
+  '/api/users/$id': typeof ApiUsersIdRoute
+  '/posts/$postId/deep': typeof PostsPostIdDeepRoute
+}
+export interface FileRoutesByTo {
+  '/': typeof IndexRoute
+  '/deferred': typeof DeferredRoute
+  '/redirect': typeof RedirectRoute
+  '/api/users': typeof ApiUsersRouteWithChildren
+  '/posts/$postId': typeof PostsPostIdRoute
+  '/users/$userId': typeof UsersUserIdRoute
+  '/posts': typeof PostsIndexRoute
+  '/users': typeof UsersIndexRoute
+  '/route-a': typeof PathlessLayoutNestedLayoutRouteARoute
+  '/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute
+  '/api/users/$id': typeof ApiUsersIdRoute
+  '/posts/$postId/deep': typeof PostsPostIdDeepRoute
+}
+export interface FileRoutesById {
+  __root__: typeof rootRouteImport
+  '/': typeof IndexRoute
+  '/posts': typeof PostsRouteRouteWithChildren
+  '/users': typeof UsersRouteRouteWithChildren
+  '/_pathlessLayout': typeof PathlessLayoutRouteWithChildren
+  '/deferred': typeof DeferredRoute
+  '/redirect': typeof RedirectRoute
+  '/_pathlessLayout/_nested-layout': typeof PathlessLayoutNestedLayoutRouteWithChildren
+  '/api/users': typeof ApiUsersRouteWithChildren
+  '/posts/$postId': typeof PostsPostIdRoute
+  '/users/$userId': typeof UsersUserIdRoute
+  '/posts/': typeof PostsIndexRoute
+  '/users/': typeof UsersIndexRoute
+  '/_pathlessLayout/_nested-layout/route-a': typeof PathlessLayoutNestedLayoutRouteARoute
+  '/_pathlessLayout/_nested-layout/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute
+  '/api/users/$id': typeof ApiUsersIdRoute
+  '/posts_/$postId/deep': typeof PostsPostIdDeepRoute
+}
+export interface FileRouteTypes {
+  fileRoutesByFullPath: FileRoutesByFullPath
+  fullPaths:
+    | '/'
+    | '/posts'
+    | '/users'
+    | '/deferred'
+    | '/redirect'
+    | '/api/users'
+    | '/posts/$postId'
+    | '/users/$userId'
+    | '/posts/'
+    | '/users/'
+    | '/route-a'
+    | '/route-b'
+    | '/api/users/$id'
+    | '/posts/$postId/deep'
+  fileRoutesByTo: FileRoutesByTo
+  to:
+    | '/'
+    | '/deferred'
+    | '/redirect'
+    | '/api/users'
+    | '/posts/$postId'
+    | '/users/$userId'
+    | '/posts'
+    | '/users'
+    | '/route-a'
+    | '/route-b'
+    | '/api/users/$id'
+    | '/posts/$postId/deep'
+  id:
+    | '__root__'
+    | '/'
+    | '/posts'
+    | '/users'
+    | '/_pathlessLayout'
+    | '/deferred'
+    | '/redirect'
+    | '/_pathlessLayout/_nested-layout'
+    | '/api/users'
+    | '/posts/$postId'
+    | '/users/$userId'
+    | '/posts/'
+    | '/users/'
+    | '/_pathlessLayout/_nested-layout/route-a'
+    | '/_pathlessLayout/_nested-layout/route-b'
+    | '/api/users/$id'
+    | '/posts_/$postId/deep'
+  fileRoutesById: FileRoutesById
+}
+export interface RootRouteChildren {
+  IndexRoute: typeof IndexRoute
+  PostsRouteRoute: typeof PostsRouteRouteWithChildren
+  UsersRouteRoute: typeof UsersRouteRouteWithChildren
+  PathlessLayoutRoute: typeof PathlessLayoutRouteWithChildren
+  DeferredRoute: typeof DeferredRoute
+  RedirectRoute: typeof RedirectRoute
+  ApiUsersRoute: typeof ApiUsersRouteWithChildren
+  PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute
+}
+
+declare module '@tanstack/solid-router' {
+  interface FileRoutesByPath {
+    '/redirect': {
+      id: '/redirect'
+      path: '/redirect'
+      fullPath: '/redirect'
+      preLoaderRoute: typeof RedirectRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/deferred': {
+      id: '/deferred'
+      path: '/deferred'
+      fullPath: '/deferred'
+      preLoaderRoute: typeof DeferredRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/_pathlessLayout': {
+      id: '/_pathlessLayout'
+      path: ''
+      fullPath: ''
+      preLoaderRoute: typeof PathlessLayoutRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/users': {
+      id: '/users'
+      path: '/users'
+      fullPath: '/users'
+      preLoaderRoute: typeof UsersRouteRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/posts': {
+      id: '/posts'
+      path: '/posts'
+      fullPath: '/posts'
+      preLoaderRoute: typeof PostsRouteRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/': {
+      id: '/'
+      path: '/'
+      fullPath: '/'
+      preLoaderRoute: typeof IndexRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/users/': {
+      id: '/users/'
+      path: '/'
+      fullPath: '/users/'
+      preLoaderRoute: typeof UsersIndexRouteImport
+      parentRoute: typeof UsersRouteRoute
+    }
+    '/posts/': {
+      id: '/posts/'
+      path: '/'
+      fullPath: '/posts/'
+      preLoaderRoute: typeof PostsIndexRouteImport
+      parentRoute: typeof PostsRouteRoute
+    }
+    '/users/$userId': {
+      id: '/users/$userId'
+      path: '/$userId'
+      fullPath: '/users/$userId'
+      preLoaderRoute: typeof UsersUserIdRouteImport
+      parentRoute: typeof UsersRouteRoute
+    }
+    '/posts/$postId': {
+      id: '/posts/$postId'
+      path: '/$postId'
+      fullPath: '/posts/$postId'
+      preLoaderRoute: typeof PostsPostIdRouteImport
+      parentRoute: typeof PostsRouteRoute
+    }
+    '/api/users': {
+      id: '/api/users'
+      path: '/api/users'
+      fullPath: '/api/users'
+      preLoaderRoute: typeof ApiUsersRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/_pathlessLayout/_nested-layout': {
+      id: '/_pathlessLayout/_nested-layout'
+      path: ''
+      fullPath: ''
+      preLoaderRoute: typeof PathlessLayoutNestedLayoutRouteImport
+      parentRoute: typeof PathlessLayoutRoute
+    }
+    '/posts_/$postId/deep': {
+      id: '/posts_/$postId/deep'
+      path: '/posts/$postId/deep'
+      fullPath: '/posts/$postId/deep'
+      preLoaderRoute: typeof PostsPostIdDeepRouteImport
+      parentRoute: typeof rootRouteImport
+    }
+    '/api/users/$id': {
+      id: '/api/users/$id'
+      path: '/$id'
+      fullPath: '/api/users/$id'
+      preLoaderRoute: typeof ApiUsersIdRouteImport
+      parentRoute: typeof ApiUsersRoute
+    }
+    '/_pathlessLayout/_nested-layout/route-b': {
+      id: '/_pathlessLayout/_nested-layout/route-b'
+      path: '/route-b'
+      fullPath: '/route-b'
+      preLoaderRoute: typeof PathlessLayoutNestedLayoutRouteBRouteImport
+      parentRoute: typeof PathlessLayoutNestedLayoutRoute
+    }
+    '/_pathlessLayout/_nested-layout/route-a': {
+      id: '/_pathlessLayout/_nested-layout/route-a'
+      path: '/route-a'
+      fullPath: '/route-a'
+      preLoaderRoute: typeof PathlessLayoutNestedLayoutRouteARouteImport
+      parentRoute: typeof PathlessLayoutNestedLayoutRoute
+    }
+  }
+}
+
+interface PostsRouteRouteChildren {
+  PostsPostIdRoute: typeof PostsPostIdRoute
+  PostsIndexRoute: typeof PostsIndexRoute
+}
+
+const PostsRouteRouteChildren: PostsRouteRouteChildren = {
+  PostsPostIdRoute: PostsPostIdRoute,
+  PostsIndexRoute: PostsIndexRoute,
+}
+
+const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren(
+  PostsRouteRouteChildren,
+)
+
+interface UsersRouteRouteChildren {
+  UsersUserIdRoute: typeof UsersUserIdRoute
+  UsersIndexRoute: typeof UsersIndexRoute
+}
+
+const UsersRouteRouteChildren: UsersRouteRouteChildren = {
+  UsersUserIdRoute: UsersUserIdRoute,
+  UsersIndexRoute: UsersIndexRoute,
+}
+
+const UsersRouteRouteWithChildren = UsersRouteRoute._addFileChildren(
+  UsersRouteRouteChildren,
+)
+
+interface PathlessLayoutNestedLayoutRouteChildren {
+  PathlessLayoutNestedLayoutRouteARoute: typeof PathlessLayoutNestedLayoutRouteARoute
+  PathlessLayoutNestedLayoutRouteBRoute: typeof PathlessLayoutNestedLayoutRouteBRoute
+}
+
+const PathlessLayoutNestedLayoutRouteChildren: PathlessLayoutNestedLayoutRouteChildren =
+  {
+    PathlessLayoutNestedLayoutRouteARoute:
+      PathlessLayoutNestedLayoutRouteARoute,
+    PathlessLayoutNestedLayoutRouteBRoute:
+      PathlessLayoutNestedLayoutRouteBRoute,
+  }
+
+const PathlessLayoutNestedLayoutRouteWithChildren =
+  PathlessLayoutNestedLayoutRoute._addFileChildren(
+    PathlessLayoutNestedLayoutRouteChildren,
+  )
+
+interface PathlessLayoutRouteChildren {
+  PathlessLayoutNestedLayoutRoute: typeof PathlessLayoutNestedLayoutRouteWithChildren
+}
+
+const PathlessLayoutRouteChildren: PathlessLayoutRouteChildren = {
+  PathlessLayoutNestedLayoutRoute: PathlessLayoutNestedLayoutRouteWithChildren,
+}
+
+const PathlessLayoutRouteWithChildren = PathlessLayoutRoute._addFileChildren(
+  PathlessLayoutRouteChildren,
+)
+
+interface ApiUsersRouteChildren {
+  ApiUsersIdRoute: typeof ApiUsersIdRoute
+}
+
+const ApiUsersRouteChildren: ApiUsersRouteChildren = {
+  ApiUsersIdRoute: ApiUsersIdRoute,
+}
+
+const ApiUsersRouteWithChildren = ApiUsersRoute._addFileChildren(
+  ApiUsersRouteChildren,
+)
+
+const rootRouteChildren: RootRouteChildren = {
+  IndexRoute: IndexRoute,
+  PostsRouteRoute: PostsRouteRouteWithChildren,
+  UsersRouteRoute: UsersRouteRouteWithChildren,
+  PathlessLayoutRoute: PathlessLayoutRouteWithChildren,
+  DeferredRoute: DeferredRoute,
+  RedirectRoute: RedirectRoute,
+  ApiUsersRoute: ApiUsersRouteWithChildren,
+  PostsPostIdDeepRoute: PostsPostIdDeepRoute,
+}
+export const routeTree = rootRouteImport
+  ._addFileChildren(rootRouteChildren)
+  ._addFileTypes<FileRouteTypes>()
+
+import type { getRouter } from './router.tsx'
+import type { createStart } from '@tanstack/solid-start'
+declare module '@tanstack/solid-start' {
+  interface Register {
+    ssr: true
+    router: Awaited<ReturnType<typeof getRouter>>
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/src/router.tsx b/examples/solid/start-basic-solid-query/src/router.tsx
new file mode 100644
index 0000000000..d0d083f875
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/router.tsx
@@ -0,0 +1,30 @@
+import { QueryClient } from '@tanstack/solid-query'
+import { createRouter } from '@tanstack/solid-router'
+import { setupRouterSsrQueryIntegration } from '@tanstack/solid-router-ssr-query'
+import { routeTree } from './routeTree.gen'
+import { DefaultCatchBoundary } from './components/DefaultCatchBoundary'
+import { NotFound } from './components/NotFound'
+
+export function getRouter() {
+  const queryClient = new QueryClient()
+
+  const router = createRouter({
+    routeTree,
+    context: { queryClient },
+    defaultPreload: 'intent',
+    defaultErrorComponent: DefaultCatchBoundary,
+    defaultNotFoundComponent: () => <NotFound />,
+  })
+  setupRouterSsrQueryIntegration({
+    router,
+    queryClient,
+  })
+
+  return router
+}
+
+declare module '@tanstack/solid-router' {
+  interface Register {
+    router: ReturnType<typeof getRouter>
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/__root.tsx b/examples/solid/start-basic-solid-query/src/routes/__root.tsx
new file mode 100644
index 0000000000..584d35be30
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/__root.tsx
@@ -0,0 +1,147 @@
+/// <reference types="vite/client" />
+import {
+  HeadContent,
+  Link,
+  Outlet,
+  Scripts,
+  createRootRouteWithContext,
+} from '@tanstack/solid-router'
+import { SolidQueryDevtools } from '@tanstack/solid-query-devtools'
+import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
+import { HydrationScript } from 'solid-js/web'
+import type * as Solid from 'solid-js'
+import type { QueryClient } from '@tanstack/solid-query'
+import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary'
+import { NotFound } from '~/components/NotFound'
+import appCss from '~/styles/app.css?url'
+import { seo } from '~/utils/seo'
+
+export const Route = createRootRouteWithContext<{
+  queryClient: QueryClient
+}>()({
+  head: () => ({
+    meta: [
+      {
+        charset: 'utf-8',
+      },
+      {
+        name: 'viewport',
+        content: 'width=device-width, initial-scale=1',
+      },
+      ...seo({
+        title:
+          'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework',
+        description: `TanStack Start is a type-safe, client-first, full-stack React framework. `,
+      }),
+    ],
+    links: [
+      { rel: 'stylesheet', href: appCss },
+      {
+        rel: 'apple-touch-icon',
+        sizes: '180x180',
+        href: '/apple-touch-icon.png',
+      },
+      {
+        rel: 'icon',
+        type: 'image/png',
+        sizes: '32x32',
+        href: '/favicon-32x32.png',
+      },
+      {
+        rel: 'icon',
+        type: 'image/png',
+        sizes: '16x16',
+        href: '/favicon-16x16.png',
+      },
+      { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' },
+      { rel: 'icon', href: '/favicon.ico' },
+    ],
+  }),
+  errorComponent: (props) => {
+    return (
+      <RootDocument>
+        <DefaultCatchBoundary {...props} />
+      </RootDocument>
+    )
+  },
+  notFoundComponent: () => <NotFound />,
+  component: RootComponent,
+})
+
+function RootComponent() {
+  return (
+    <RootDocument>
+      <Outlet />
+    </RootDocument>
+  )
+}
+
+function RootDocument({ children }: { children: Solid.JSX.Element }) {
+  return (
+    <html>
+      <head>
+        <HydrationScript />
+      </head>
+      <body>
+        <HeadContent />
+        <div class="p-2 flex gap-2 text-lg">
+          <Link
+            to="/"
+            activeProps={{
+              class: 'font-bold',
+            }}
+            activeOptions={{ exact: true }}
+          >
+            Home
+          </Link>{' '}
+          <Link
+            to="/posts"
+            activeProps={{
+              class: 'font-bold',
+            }}
+          >
+            Posts
+          </Link>{' '}
+          <Link
+            to="/users"
+            activeProps={{
+              class: 'font-bold',
+            }}
+          >
+            Users
+          </Link>{' '}
+          <Link
+            to="/route-a"
+            activeProps={{
+              class: 'font-bold',
+            }}
+          >
+            Pathless Layout
+          </Link>{' '}
+          <Link
+            to="/deferred"
+            activeProps={{
+              class: 'font-bold',
+            }}
+          >
+            Deferred
+          </Link>{' '}
+          <Link
+            // @ts-expect-error
+            to="/this-route-does-not-exist"
+            activeProps={{
+              class: 'font-bold',
+            }}
+          >
+            This Route Does Not Exist
+          </Link>
+        </div>
+        <hr />
+        {children}
+        <TanStackRouterDevtools position="bottom-right" />
+        <SolidQueryDevtools buttonPosition="bottom-left" />
+        <Scripts />
+      </body>
+    </html>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx
new file mode 100644
index 0000000000..e525470c60
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx
@@ -0,0 +1,16 @@
+import { Outlet, createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/_pathlessLayout')({
+  component: PathlessLayoutComponent,
+})
+
+function PathlessLayoutComponent() {
+  return (
+    <div class="p-2">
+      <div>I'm a pathless layout</div>
+      <div>
+        <Outlet />
+      </div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx
new file mode 100644
index 0000000000..8651932b0f
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx
@@ -0,0 +1,34 @@
+import { Link, Outlet, createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/_pathlessLayout/_nested-layout')({
+  component: PathlessLayoutComponent,
+})
+
+function PathlessLayoutComponent() {
+  return (
+    <div>
+      <div>I'm a nested pathless layout</div>
+      <div class="flex gap-2">
+        <Link
+          to="/route-a"
+          activeProps={{
+            class: 'font-bold',
+          }}
+        >
+          Go to route A
+        </Link>
+        <Link
+          to="/route-b"
+          activeProps={{
+            class: 'font-bold',
+          }}
+        >
+          Go to route B
+        </Link>
+      </div>
+      <div>
+        <Outlet />
+      </div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx
new file mode 100644
index 0000000000..a22902a271
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx
@@ -0,0 +1,11 @@
+import { createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/_pathlessLayout/_nested-layout/route-a')(
+  {
+    component: LayoutAComponent,
+  },
+)
+
+function LayoutAComponent() {
+  return <div>I'm A!</div>
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx
new file mode 100644
index 0000000000..36231d2153
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx
@@ -0,0 +1,11 @@
+import { createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/_pathlessLayout/_nested-layout/route-b')(
+  {
+    component: LayoutBComponent,
+  },
+)
+
+function LayoutBComponent() {
+  return <div>I'm B!</div>
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts b/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts
new file mode 100644
index 0000000000..ef13c22ab2
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts
@@ -0,0 +1,27 @@
+import { createFileRoute } from '@tanstack/solid-router'
+import { json } from '@tanstack/solid-start'
+import axios from 'redaxios'
+import type { User } from '../../utils/users'
+
+export const Route = createFileRoute('/api/users/$id')({
+  server: {
+    handlers: {
+      GET: async ({ request, params }) => {
+        console.info(`Fetching users by id=${params.id}... @`, request.url)
+        try {
+          const res = await axios.get<User>(
+            'https://jsonplaceholder.typicode.com/users/' + params.id,
+          )
+          return json({
+            id: res.data.id,
+            name: res.data.name,
+            email: res.data.email,
+          })
+        } catch (e) {
+          console.error(e)
+          return json({ error: 'User not found' }, { status: 404 })
+        }
+      },
+    },
+  },
+})
diff --git a/examples/solid/start-basic-solid-query/src/routes/api/users.ts b/examples/solid/start-basic-solid-query/src/routes/api/users.ts
new file mode 100644
index 0000000000..f0f272a8c4
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/api/users.ts
@@ -0,0 +1,21 @@
+import { createFileRoute } from '@tanstack/solid-router'
+import { json } from '@tanstack/solid-start'
+import axios from 'redaxios'
+import type { User } from '../../utils/users'
+
+export const Route = createFileRoute('/api/users')({
+  server: {
+    handlers: {
+      GET: async ({ request }) => {
+        console.info('Fetching users... @', request.url)
+        const res = await axios.get<Array<User>>(
+          'https://jsonplaceholder.typicode.com/users',
+        )
+        const list = res.data.slice(0, 10)
+        return json(
+          list.map((u) => ({ id: u.id, name: u.name, email: u.email })),
+        )
+      },
+    },
+  },
+})
diff --git a/examples/solid/start-basic-solid-query/src/routes/deferred.tsx b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx
new file mode 100644
index 0000000000..782d49bf43
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx
@@ -0,0 +1,53 @@
+import { createFileRoute } from '@tanstack/solid-router'
+import { queryOptions, useQuery } from '@tanstack/solid-query'
+import { Suspense, createSignal } from 'solid-js'
+
+const deferredQueryOptions = () =>
+  queryOptions({
+    queryKey: ['deferred'],
+    queryFn: async () => {
+      await new Promise((r) => setTimeout(r, 3000))
+      return {
+        message: `Hello deferred from the server!`,
+        status: 'success',
+        time: new Date(),
+      }
+    },
+  })
+
+export const Route = createFileRoute('/deferred')({
+  loader: ({ context }) => {
+    // Kick off loading as early as possible!
+    context.queryClient.prefetchQuery(deferredQueryOptions())
+  },
+  component: Deferred,
+})
+
+function Deferred() {
+  const [count, setCount] = createSignal(0)
+
+  return (
+    <div class="p-2">
+      <Suspense fallback="Loading Middleman...">
+        <DeferredQuery />
+      </Suspense>
+      <div>Count: {count()}</div>
+      <div>
+        <button onClick={() => setCount(count() + 1)}>Increment</button>
+      </div>
+    </div>
+  )
+}
+
+function DeferredQuery() {
+  const deferredQuery = useQuery(() => deferredQueryOptions())
+
+  return (
+    <div>
+      <h1>Deferred Query</h1>
+      <div>Status: {deferredQuery.data?.status}</div>
+      <div>Message: {deferredQuery.data?.message}</div>
+      <div>Time: {deferredQuery.data?.time.toISOString()}</div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/index.tsx b/examples/solid/start-basic-solid-query/src/routes/index.tsx
new file mode 100644
index 0000000000..a128aeca0e
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/index.tsx
@@ -0,0 +1,13 @@
+import { createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/')({
+  component: Home,
+})
+
+function Home() {
+  return (
+    <div class="p-2">
+      <h3>Welcome Home!!!</h3>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
new file mode 100644
index 0000000000..e42d34ae74
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
@@ -0,0 +1,53 @@
+import { ErrorComponent, Link, createFileRoute } from '@tanstack/solid-router'
+import { useQuery } from '@tanstack/solid-query'
+import { postQueryOptions } from '../utils/posts'
+import type { ErrorComponentProps } from '@tanstack/solid-router'
+import { NotFound } from '~/components/NotFound'
+
+
+export function PostErrorComponent({ error }: ErrorComponentProps) {
+  return <ErrorComponent error={error} />
+}
+
+export const Route = createFileRoute('/posts/$postId')({
+  loader: async ({ params: { postId }, context }) => {
+    const data = await context.queryClient.ensureQueryData(
+      postQueryOptions(postId),
+    )
+
+    return {
+      title: data.title,
+    }
+  },
+  head: ({ loaderData }) => ({
+    meta: loaderData ? [{ title: loaderData.title }] : undefined,
+  }),
+  errorComponent: PostErrorComponent,
+  notFoundComponent: () => {
+    return <NotFound>Post not found</NotFound>
+  },
+  component: PostComponent,
+})
+
+
+function PostComponent() {
+  const params = Route.useParams()
+  const postQuery = useQuery(() => postQueryOptions(params().postId))
+  
+  return (
+    <div class="space-y-2">
+      <h4 class="text-xl font-bold underline">{postQuery.data?.title}</h4>
+      <div class="text-sm">{postQuery.data?.body}</div>
+      <Link
+        to="/posts/$postId/deep"
+        params={{
+          postId: postQuery.data!.id,
+        }}
+        activeProps={{ class: 'text-black font-bold' }}
+        class="inline-block py-1 text-blue-800 hover:text-blue-600"
+      >
+        Deep View
+      </Link>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx
new file mode 100644
index 0000000000..33d0386c19
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/posts/')({
+  component: PostsIndexComponent,
+})
+
+function PostsIndexComponent() {
+  return <div>Select a post.</div>
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
new file mode 100644
index 0000000000..14e694be5d
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
@@ -0,0 +1,45 @@
+import { useQuery } from '@tanstack/solid-query'
+import { Link, Outlet, createFileRoute } from '@tanstack/solid-router'
+import { postsQueryOptions } from '../utils/posts'
+
+export const Route = createFileRoute('/posts')({
+  loader: async ({ context }) => {
+    await context.queryClient.ensureQueryData(postsQueryOptions())
+  },
+  head: () => ({
+    meta: [{ title: 'Posts' }],
+  }),
+  component: PostsComponent,
+})
+
+function PostsComponent() {
+  const postsQuery = useQuery(() => postsQueryOptions())
+
+  return (
+    <div class="p-2 flex gap-2">
+      <ul class="list-disc pl-4">
+        {[
+          ...postsQuery.data || [],
+          { id: 'i-do-not-exist', title: 'Non-existent Post' },
+        ].map((post) => {
+          return (
+            <li class="whitespace-nowrap">
+              <Link
+                to="/posts/$postId"
+                params={{
+                  postId: post.id,
+                }}
+                class="block py-1 text-blue-800 hover:text-blue-600"
+                activeProps={{ class: 'text-black font-bold' }}
+              >
+                <div>{post.title.substring(0, 20)}</div>
+              </Link>
+            </li>
+          )
+        })}
+      </ul>
+      <hr />
+      <Outlet />
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx
new file mode 100644
index 0000000000..9352a3d086
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx
@@ -0,0 +1,36 @@
+import { Link, createFileRoute } from '@tanstack/solid-router'
+import { useQuery } from '@tanstack/solid-query'
+import { postQueryOptions } from '../utils/posts'
+import { PostErrorComponent } from './posts.$postId'
+
+export const Route = createFileRoute('/posts_/$postId/deep')({
+  loader: async ({ params: { postId }, context }) => {
+    const data = await context.queryClient.ensureQueryData(
+      postQueryOptions(postId),
+    )
+
+    return {
+      title: data.title,
+    }
+  },
+  head: ({ loaderData }) => ({
+    meta: loaderData ? [{ title: loaderData.title }] : undefined,
+  }),
+  errorComponent: PostErrorComponent,
+  component: PostDeepComponent,
+})
+
+function PostDeepComponent() {
+  const params = Route.useParams()
+  const postQuery = useQuery(() => postQueryOptions(params().postId))
+
+  return (
+    <div class="p-2 space-y-2">
+      <Link to="/posts" class="block py-1 text-blue-800 hover:text-blue-600">
+        ← All Posts
+      </Link>
+      <h4 class="text-xl font-bold underline">{postQuery.data?.title}</h4>
+      <div class="text-sm">{postQuery.data?.body}</div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/redirect.tsx b/examples/solid/start-basic-solid-query/src/routes/redirect.tsx
new file mode 100644
index 0000000000..ca017f0635
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/redirect.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute, redirect } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/redirect')({
+  beforeLoad: async () => {
+    throw redirect({
+      to: '/posts',
+    })
+  },
+})
diff --git a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
new file mode 100644
index 0000000000..e2c6c37c12
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
@@ -0,0 +1,35 @@
+import { useQuery } from '@tanstack/solid-query'
+import { ErrorComponent, createFileRoute } from '@tanstack/solid-router'
+import type { ErrorComponentProps } from '@tanstack/solid-router'
+import { NotFound } from '~/components/NotFound'
+import { userQueryOptions } from '~/utils/users'
+
+export function UserErrorComponent({ error }: ErrorComponentProps) {
+  return <ErrorComponent error={error} />
+}
+
+
+export const Route = createFileRoute('/users/$userId')({
+  loader: async ({ context, params: { userId } }) => {
+    await context.queryClient.ensureQueryData(userQueryOptions(userId))
+  },
+  errorComponent: UserErrorComponent,
+  component: UserComponent,
+  notFoundComponent: () => {
+    return <NotFound>User not found</NotFound>
+  },
+})
+
+
+function UserComponent() {
+  const params = Route.useParams()
+  const userQuery = useQuery(() => userQueryOptions(params().userId))
+  const user = userQuery.data
+
+  return (
+    <div class="space-y-2">
+      <h4 class="text-xl font-bold underline">{user?.name}</h4>
+      <div class="text-sm">{user?.email}</div>
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/users.index.tsx b/examples/solid/start-basic-solid-query/src/routes/users.index.tsx
new file mode 100644
index 0000000000..bbc96801a9
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/users.index.tsx
@@ -0,0 +1,9 @@
+import { createFileRoute } from '@tanstack/solid-router'
+
+export const Route = createFileRoute('/users/')({
+  component: UsersIndexComponent,
+})
+
+function UsersIndexComponent() {
+  return <div>Select a user.</div>
+}
diff --git a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx
new file mode 100644
index 0000000000..85229131f2
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx
@@ -0,0 +1,42 @@
+import { useQuery } from '@tanstack/solid-query'
+import { Link, Outlet, createFileRoute } from '@tanstack/solid-router'
+import { usersQueryOptions } from '../utils/users'
+
+export const Route = createFileRoute('/users')({
+  loader: async ({ context }) => {
+    await context.queryClient.ensureQueryData(usersQueryOptions())
+  },
+  component: UsersComponent,
+})
+
+function UsersComponent() {
+  const usersQuery = useQuery(() => usersQueryOptions())
+
+  return (
+    <div class="p-2 flex gap-2">
+      <ul class="list-disc pl-4">
+        {[
+          ...usersQuery.data || [],
+          { id: 'i-do-not-exist', name: 'Non-existent User', email: '' },
+        ].map((user) => {
+          return (
+            <li class="whitespace-nowrap">
+              <Link
+                to="/users/$userId"
+                params={{
+                  userId: String(user.id),
+                }}
+                class="block py-1 text-blue-800 hover:text-blue-600"
+                activeProps={{ class: 'text-black font-bold' }}
+              >
+                <div>{user.name}</div>
+              </Link>
+            </li>
+          )
+        })}
+      </ul>
+      <hr />
+      <Outlet />
+    </div>
+  )
+}
diff --git a/examples/solid/start-basic-solid-query/src/styles/app.css b/examples/solid/start-basic-solid-query/src/styles/app.css
new file mode 100644
index 0000000000..c53c870665
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/styles/app.css
@@ -0,0 +1,22 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+  html {
+    color-scheme: light dark;
+  }
+
+  * {
+    @apply border-gray-200 dark:border-gray-800;
+  }
+
+  html,
+  body {
+    @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200;
+  }
+
+  .using-mouse * {
+    outline: none !important;
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/src/utils/posts.tsx b/examples/solid/start-basic-solid-query/src/utils/posts.tsx
new file mode 100644
index 0000000000..528dd449d7
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/utils/posts.tsx
@@ -0,0 +1,49 @@
+import { queryOptions } from '@tanstack/solid-query'
+import { notFound } from '@tanstack/solid-router'
+import { createServerFn } from '@tanstack/solid-start'
+import axios from 'redaxios'
+
+export type PostType = {
+  id: string
+  title: string
+  body: string
+}
+
+export const fetchPosts = createServerFn({ method: 'GET' }).handler(
+  async () => {
+    console.info('Fetching posts...')
+    return axios
+      .get<Array<PostType>>('https://jsonplaceholder.typicode.com/posts')
+      .then((r) => r.data.slice(0, 10))
+  },
+)
+
+export const postsQueryOptions = () =>
+  queryOptions({
+    queryKey: ['posts'],
+    queryFn: () => fetchPosts(),
+  })
+
+export const fetchPost = createServerFn({ method: 'GET' })
+  .inputValidator((d: string) => d)
+  .handler(async ({ data }) => {
+    console.info(`Fetching post with id ${data}...`)
+    const post = await axios
+      .get<PostType>(`https://jsonplaceholder.typicode.com/posts/${data}`)
+      .then((r) => r.data)
+      .catch((err) => {
+        console.error(err)
+        if (err.status === 404) {
+          throw notFound()
+        }
+        throw err
+      })
+
+    return post
+  })
+
+export const postQueryOptions = (postId: string) =>
+  queryOptions({
+    queryKey: ['post', postId],
+    queryFn: () => fetchPost({ data: postId }),
+  })
diff --git a/examples/solid/start-basic-solid-query/src/utils/seo.ts b/examples/solid/start-basic-solid-query/src/utils/seo.ts
new file mode 100644
index 0000000000..d18ad84b74
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/utils/seo.ts
@@ -0,0 +1,33 @@
+export const seo = ({
+  title,
+  description,
+  keywords,
+  image,
+}: {
+  title: string
+  description?: string
+  image?: string
+  keywords?: string
+}) => {
+  const tags = [
+    { title },
+    { name: 'description', content: description },
+    { name: 'keywords', content: keywords },
+    { name: 'twitter:title', content: title },
+    { name: 'twitter:description', content: description },
+    { name: 'twitter:creator', content: '@tannerlinsley' },
+    { name: 'twitter:site', content: '@tannerlinsley' },
+    { name: 'og:type', content: 'website' },
+    { name: 'og:title', content: title },
+    { name: 'og:description', content: description },
+    ...(image
+      ? [
+          { name: 'twitter:image', content: image },
+          { name: 'twitter:card', content: 'summary_large_image' },
+          { name: 'og:image', content: image },
+        ]
+      : []),
+  ]
+
+  return tags
+}
diff --git a/examples/solid/start-basic-solid-query/src/utils/users.tsx b/examples/solid/start-basic-solid-query/src/utils/users.tsx
new file mode 100644
index 0000000000..a27f1bb142
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/src/utils/users.tsx
@@ -0,0 +1,34 @@
+import { queryOptions } from '@tanstack/solid-query'
+import axios from 'redaxios'
+
+export type User = {
+  id: number
+  name: string
+  email: string
+}
+
+export const DEPLOY_URL = 'http://localhost:3000'
+
+export const usersQueryOptions = () =>
+  queryOptions({
+    queryKey: ['users'],
+    queryFn: () =>
+      axios
+        .get<Array<User>>(DEPLOY_URL + '/api/users')
+        .then((r) => r.data)
+        .catch(() => {
+          throw new Error('Failed to fetch users')
+        }),
+  })
+
+export const userQueryOptions = (id: string) =>
+  queryOptions({
+    queryKey: ['users', id],
+    queryFn: () =>
+      axios
+        .get<User>(DEPLOY_URL + '/api/users/' + id)
+        .then((r) => r.data)
+        .catch(() => {
+          throw new Error('Failed to fetch user')
+        }),
+  })
diff --git a/examples/solid/start-basic-solid-query/tailwind.config.mjs b/examples/solid/start-basic-solid-query/tailwind.config.mjs
new file mode 100644
index 0000000000..e49f4eb776
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/tailwind.config.mjs
@@ -0,0 +1,4 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+  content: ['./src/**/*.{js,jsx,ts,tsx}'],
+}
diff --git a/examples/solid/start-basic-solid-query/tsconfig.json b/examples/solid/start-basic-solid-query/tsconfig.json
new file mode 100644
index 0000000000..a40235b863
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/tsconfig.json
@@ -0,0 +1,23 @@
+{
+  "include": ["**/*.ts", "**/*.tsx"],
+  "compilerOptions": {
+    "strict": true,
+    "esModuleInterop": true,
+    "jsx": "preserve",
+    "jsxImportSource": "solid-js",
+    "module": "ESNext",
+    "moduleResolution": "Bundler",
+    "lib": ["DOM", "DOM.Iterable", "ES2022"],
+    "isolatedModules": true,
+    "resolveJsonModule": true,
+    "skipLibCheck": true,
+    "target": "ES2022",
+    "allowJs": true,
+    "forceConsistentCasingInFileNames": true,
+    "baseUrl": ".",
+    "paths": {
+      "~/*": ["./src/*"]
+    },
+    "noEmit": true
+  }
+}
diff --git a/examples/solid/start-basic-solid-query/vite.config.ts b/examples/solid/start-basic-solid-query/vite.config.ts
new file mode 100644
index 0000000000..27a27a7b5a
--- /dev/null
+++ b/examples/solid/start-basic-solid-query/vite.config.ts
@@ -0,0 +1,17 @@
+import { tanstackStart } from '@tanstack/solid-start/plugin/vite'
+import { defineConfig } from 'vite'
+import tsConfigPaths from 'vite-tsconfig-paths'
+import viteSolid from 'vite-plugin-solid'
+
+export default defineConfig({
+  server: {
+    port: 3000,
+  },
+  plugins: [
+    tsConfigPaths({
+      projects: ['./tsconfig.json'],
+    }),
+    tanstackStart(),
+    viteSolid({ ssr: true }),
+  ],
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index edbf26aab2..ea92f5e046 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2378,7 +2378,7 @@ importers:
         version: 1.0.3(@rsbuild/core@1.2.4)
       '@rsbuild/plugin-solid':
         specifier: ^1.0.4
-        version: 1.0.4(@babel/core@7.28.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
+        version: 1.0.4(@babel/core@7.27.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -2424,7 +2424,7 @@ importers:
         version: 1.0.3(@rsbuild/core@1.2.4)
       '@rsbuild/plugin-solid':
         specifier: ^1.0.4
-        version: 1.0.4(@babel/core@7.27.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
+        version: 1.0.4(@babel/core@7.28.4)(@rsbuild/core@1.2.4)(solid-js@1.9.5)
       '@tanstack/router-e2e-utils':
         specifier: workspace:^
         version: link:../../e2e-utils
@@ -7096,6 +7096,61 @@ importers:
         specifier: ^5.1.4
         version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
 
+  examples/solid/start-basic-solid-query:
+    dependencies:
+      '@tanstack/solid-query':
+        specifier: ^5.66.0
+        version: 5.72.2(solid-js@1.9.5)
+      '@tanstack/solid-query-devtools':
+        specifier: ^5.66.0
+        version: 5.72.2(@tanstack/solid-query@5.72.2(solid-js@1.9.5))(solid-js@1.9.5)
+      '@tanstack/solid-router':
+        specifier: ^1.133.20
+        version: link:../../../packages/solid-router
+      '@tanstack/solid-router-devtools':
+        specifier: workspace:^
+        version: link:../../../packages/solid-router-devtools
+      '@tanstack/solid-router-ssr-query':
+        specifier: workspace:*
+        version: link:../../../packages/solid-router-ssr-query
+      '@tanstack/solid-start':
+        specifier: workspace:*
+        version: link:../../../packages/solid-start
+      redaxios:
+        specifier: ^0.5.1
+        version: 0.5.1
+      solid-js:
+        specifier: ^1.9.5
+        version: 1.9.5
+      tailwind-merge:
+        specifier: ^2.6.0
+        version: 2.6.0
+    devDependencies:
+      '@types/node':
+        specifier: 22.10.2
+        version: 22.10.2
+      autoprefixer:
+        specifier: ^10.4.20
+        version: 10.4.20(postcss@8.5.6)
+      postcss:
+        specifier: ^8.5.1
+        version: 8.5.6
+      tailwindcss:
+        specifier: ^3.4.17
+        version: 3.4.17
+      typescript:
+        specifier: ^5.7.2
+        version: 5.9.2
+      vite:
+        specifier: ^7.1.7
+        version: 7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)
+      vite-plugin-solid:
+        specifier: ^2.11.9
+        version: 2.11.9(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+      vite-tsconfig-paths:
+        specifier: ^5.1.4
+        version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))
+
   examples/solid/start-basic-static:
     dependencies:
       '@tanstack/solid-router':

From 18ade981d185c7782a70e34dd1a269021afab600 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Tue, 21 Oct 2025 13:11:44 +0000
Subject: [PATCH 2/2] ci: apply automated fixes

---
 .../start-basic-solid-query/src/routes/posts.$postId.tsx      | 4 +---
 .../solid/start-basic-solid-query/src/routes/posts.route.tsx  | 2 +-
 .../start-basic-solid-query/src/routes/users.$userId.tsx      | 2 --
 .../solid/start-basic-solid-query/src/routes/users.route.tsx  | 2 +-
 4 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
index e42d34ae74..1d8653e504 100644
--- a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
+++ b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx
@@ -4,7 +4,6 @@ import { postQueryOptions } from '../utils/posts'
 import type { ErrorComponentProps } from '@tanstack/solid-router'
 import { NotFound } from '~/components/NotFound'
 
-
 export function PostErrorComponent({ error }: ErrorComponentProps) {
   return <ErrorComponent error={error} />
 }
@@ -29,11 +28,10 @@ export const Route = createFileRoute('/posts/$postId')({
   component: PostComponent,
 })
 
-
 function PostComponent() {
   const params = Route.useParams()
   const postQuery = useQuery(() => postQueryOptions(params().postId))
-  
+
   return (
     <div class="space-y-2">
       <h4 class="text-xl font-bold underline">{postQuery.data?.title}</h4>
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
index 14e694be5d..9d1ec7d098 100644
--- a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
+++ b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx
@@ -19,7 +19,7 @@ function PostsComponent() {
     <div class="p-2 flex gap-2">
       <ul class="list-disc pl-4">
         {[
-          ...postsQuery.data || [],
+          ...(postsQuery.data || []),
           { id: 'i-do-not-exist', title: 'Non-existent Post' },
         ].map((post) => {
           return (
diff --git a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
index e2c6c37c12..568f64bdf3 100644
--- a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
+++ b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx
@@ -8,7 +8,6 @@ export function UserErrorComponent({ error }: ErrorComponentProps) {
   return <ErrorComponent error={error} />
 }
 
-
 export const Route = createFileRoute('/users/$userId')({
   loader: async ({ context, params: { userId } }) => {
     await context.queryClient.ensureQueryData(userQueryOptions(userId))
@@ -20,7 +19,6 @@ export const Route = createFileRoute('/users/$userId')({
   },
 })
 
-
 function UserComponent() {
   const params = Route.useParams()
   const userQuery = useQuery(() => userQueryOptions(params().userId))
diff --git a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx
index 85229131f2..61e96eb4e6 100644
--- a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx
+++ b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx
@@ -16,7 +16,7 @@ function UsersComponent() {
     <div class="p-2 flex gap-2">
       <ul class="list-disc pl-4">
         {[
-          ...usersQuery.data || [],
+          ...(usersQuery.data || []),
           { id: 'i-do-not-exist', name: 'Non-existent User', email: '' },
         ].map((user) => {
           return (
