diff --git a/README.md b/README.md
index c5ee5e6..0203e66 100644
--- a/README.md
+++ b/README.md
@@ -32,10 +32,10 @@ Clerk is a developer-first authentication and user management solution. It provi
After following the [Clerk TanStack Start quickstart](https://clerk.com/docs/quickstarts/tanstack-start?utm_source=DevRel&utm_medium=docs&utm_campaign=templates&utm_content=08-05-2023&utm_term=clerk-tanstack-start-quickstart), you will have learned how to:
- Create a new TanStack Start application
-- Install `@clerk/tanstack-start@beta`
+- Install `@clerk/tanstack-react-start`
- Set up your environment keys
+- Add `clerkMiddleware()` to your app
- Wrap your Root Component with ``
-- Configure `clerkHandler()` in the server handler entrypoint
- Use Clerk components to protect your content
- Embed the `` and ``
- Deploy your application
diff --git a/package.json b/package.json
index bfd57b0..018fd9f 100644
--- a/package.json
+++ b/package.json
@@ -11,26 +11,28 @@
"lint": "eslint . --report-unused-disable-directives --max-warnings 0"
},
"dependencies": {
- "@clerk/tanstack-react-start": "^0.23.0",
- "@tanstack/react-router": "^1.131.28",
- "@tanstack/react-router-devtools": "^1.131.28",
- "@tanstack/react-start": "^1.131.28",
+ "@clerk/tanstack-react-start": "^0.26.0",
+ "@tanstack/react-router": "^1.132.47",
+ "@tanstack/react-router-devtools": "^1.133.1",
+ "@tanstack/react-start": "^1.132.56",
"react": "^19.1.0",
- "react-dom": "^19.1.0"
+ "react-dom": "^19.1.0",
+ "srvx": "0.8.15"
},
"devDependencies": {
"@eslint/compat": "^1.3.1",
"@eslint/js": "^9.31.0",
- "@typescript-eslint/parser": "^8.37.0",
+ "@types/node": "^24.0.14",
+ "@types/react": "^19.1.8",
+ "@types/react-dom": "^19.1.6",
"@typescript-eslint/eslint-plugin": "^8.37.0",
+ "@typescript-eslint/parser": "^8.37.0",
+ "@vitejs/plugin-react": "^4.3.4",
+ "autoprefixer": "^10.4.21",
"eslint": "^9.31.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
- "@types/node": "^24.0.14",
- "@types/react": "^19.1.8",
- "@types/react-dom": "^19.1.6",
- "autoprefixer": "^10.4.21",
"prettier": "^3.6.2",
"typescript": "^5.8.3",
"typescript-eslint": "^8.37.0",
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
index d204c26..20a48e5 100644
--- a/src/routeTree.gen.ts
+++ b/src/routeTree.gen.ts
@@ -57,3 +57,13 @@ const rootRouteChildren: RootRouteChildren = {
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)
._addFileTypes()
+
+import type { getRouter } from './router.tsx'
+import type { startInstance } from './start.ts'
+declare module '@tanstack/react-start' {
+ interface Register {
+ ssr: true
+ router: Awaited>
+ config: Awaited>
+ }
+}
diff --git a/src/router.tsx b/src/router.tsx
index e423256..a464233 100644
--- a/src/router.tsx
+++ b/src/router.tsx
@@ -1,8 +1,8 @@
-import { createRouter as createTanStackRouter } from '@tanstack/react-router'
+import { createRouter } from '@tanstack/react-router'
import { routeTree } from './routeTree.gen'
-export function createRouter() {
- const router = createTanStackRouter({
+export function getRouter() {
+ const router = createRouter({
routeTree,
defaultPreload: 'intent',
defaultErrorComponent: (err) => {err.error.stack}
,
@@ -15,6 +15,6 @@ export function createRouter() {
declare module '@tanstack/react-router' {
interface Register {
- router: ReturnType
+ router: ReturnType
}
}
diff --git a/src/server.ts b/src/server.ts
deleted file mode 100644
index 1f4daa6..0000000
--- a/src/server.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { createStartHandler, defineHandlerCallback, defaultStreamHandler } from '@tanstack/react-start/server';
-import { createRouter } from './router';
-import { createClerkHandler } from '@clerk/tanstack-react-start/server';
-
-const handlerFactory = createClerkHandler(
- createStartHandler({
- createRouter,
- }),
-);
-
-export default defineHandlerCallback(async event => {
- const startHandler = await handlerFactory(defaultStreamHandler);
- return startHandler(event);
-});
diff --git a/src/start.ts b/src/start.ts
new file mode 100644
index 0000000..6f0d68a
--- /dev/null
+++ b/src/start.ts
@@ -0,0 +1,8 @@
+import { clerkMiddleware } from '@clerk/tanstack-react-start/server';
+import { createStart } from '@tanstack/react-start';
+
+export const startInstance = createStart(() => {
+ return {
+ requestMiddleware: [clerkMiddleware()],
+ };
+});
diff --git a/vite.config.ts b/vite.config.ts
index 1f5fd19..f10c86e 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,7 @@
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
import { defineConfig } from 'vite'
import tsConfigPaths from 'vite-tsconfig-paths'
+import viteReact from '@vitejs/plugin-react'
export default defineConfig({
server: {
@@ -11,5 +12,6 @@ export default defineConfig({
projects: ['./tsconfig.json'],
}),
tanstackStart(),
+ viteReact(),
],
})