File: start-basic-solid-query.md | Updated: 11/15/2025
Search...
+ K
Auto
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Maintainers Partners Support Learn StatsBETA Discord Merch Blog GitHub Ethos Brand Guide
Documentation
Framework
Solid
Version
Latest
Search...
+ K
Menu
Getting Started
Guides
Examples
Framework
Solid
Version
Latest
Menu
Getting Started
Guides
Examples
Solid Example: Start Basic Solid Query
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
Code ExplorerCode
Interactive SandboxSandbox
.vscode
public
src
components
routes
_pathlessLayout
api
__root.tsx
_pathlessLayout.tsx
deferred.tsx
index.tsx
posts.$postId.tsx
posts.index.tsx
posts.route.tsx
posts_.$postId.deep.tsx
redirect.tsx
users.$userId.tsx
users.index.tsx
users.route.tsx
styles
utils
routeTree.gen.ts
router.tsx
.gitignore
.prettierignore
README.md
package.json
postcss.config.mjs
tsconfig.json
vite.config.ts
tsx
/// <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>
)
}
/// <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>
)
}
