TanStack Start 1.0 Is Stable: What You Get and How to Start

Executive Summary
- What shipped: On October 13, TanStack announced that TanStack Start 1.0 is stable and ready for production. It is a full-stack framework for React and Solid, built on TanStack Router.
- Why it matters: Teams were already running Start in production during beta and RC. 1.0 is TanStack's formal commitment to the APIs, so you can adopt it without expecting the app model to change under you.
- The idea: your app still feels like a SPA (components, routes, client navigation, caching), and you add server rendering, streaming and typed server functions where they belong.
- Speed: profiling work on the SSR path gave 5.5x the throughput in TanStack's own stress benchmark (427 → 2,357 requests per second).
- Where it runs: built on Vite and Nitro, so you can deploy to Cloudflare, Netlify, Railway (the official hosting partners), Vercel, Node.js, Bun or any host Nitro supports.
I made a short video of this release on X; this post covers the details and how to try it.

TanStack Start 1.0 is stable
What TanStack Start is
Start began as server utilities inside TanStack Router, the type-safe router: routes know their paths, params, search params, loader data and context, and your editor tells you what breaks when one of them changes. Start adds the server side to that model without asking you to rebuild your app around it.
In the announcement, Tanner Linsley explains the goal: keep building the kinds of apps we already know (state, client navigation, data caching) and still get server rendering, streaming and server functions when you need them. The three building blocks:
- Selective SSR: per route, render on the server, load the data on the server without rendering the component, or render on the client (docs).
- Server functions: typed functions that run only on the server and can be called from loaders, components or event handlers (docs).
- Middleware: full-stack middleware that can run on the client and the server, with types carrying the context through (docs).

TanStack's launch video: server rendering, streaming and server functions
Server functions in practice
A server function is a normal async function that Start keeps on the server. This is the basic shape from the docs:
import { createServerFn } from '@tanstack/react-start'
export const getServerTime = createServerFn().handler(async () => {
// This runs only on the server
return new Date().toISOString()
})
// Call from anywhere - components, loaders, hooks, etc.
const time = await getServerTime()You get database access, environment variables and the file system on the server, with types across the network boundary. One security detail worth knowing: server functions are same-origin endpoints, and Start installs CSRF middleware for them by default when your app has no custom src/start.ts. If you add one, add createCsrfMiddleware() yourself, as the docs show.
One call, two environments
My favourite example from the announcement is createIsomorphicFn (docs). You need the current origin to build an absolute URL. On the server it comes from the request, in the browser from window.location, and you write both side by side:
import { createIsomorphicFn } from '@tanstack/react-start'
import { getRequest } from '@tanstack/react-start/server'
const getOrigin = createIsomorphicFn()
.server(() => new URL(getRequest().url).origin)
.client(() => window.location.origin)
// Call during a server request or in the browser.
const absoluteUrl = new URL('/about', getOrigin()).hrefStart removes the other environment's implementation from each bundle, and calling it in the browser does not make a request back to the server. When you do want a server round trip, use createServerFn.

Illustration: the server bundle keeps the request version, the client bundle keeps window.location
The SSR speed-up
Before 1.0, Manuel Schiller and Florian Pellet profiled the server under sustained load and removed whole categories of work from the SSR hot path. Their write-up reports, on a stress endpoint that renders about 100 links with 100 concurrent connections for 30 seconds:
- Throughput: 427 → 2,357 requests per second (5.5x)
- Average latency: 424 ms → 43 ms (9.9x faster)
- p99 latency: 6,558 ms → 928 ms (7.1x faster)
- Success rate: 99.96% → 100%, so the server stopped failing under load
This is TanStack's own benchmark of a feature-focused endpoint, not a comparison against other frameworks. Your app will differ, but it shows where the server time went.

TanStack's SSR stress test: 5.5x throughput, 9.9x lower average latency
Where you can deploy it
Instead of maintaining its own deployment adapters, Start moved to Vite and Nitro early on. The hosting guide lists:
- Official hosting partners: Cloudflare Workers, Netlify and Railway.
- Also documented: Vercel, a plain Node.js server or Docker, and Bun.
- Anything else Nitro supports, through the Nitro target.
You are not locked to one host, and moving later does not change how you build the app. Rsbuild is supported alongside Vite too.

Illustration: one build deployed to Cloudflare, Netlify, Railway, Vercel, Node.js and Bun
Built for agents too
TanStack also put agent guidance into its npm packages through TanStack Intent: skills that teach a coding agent how to use Start and Router properly, kept in sync with the code. The launch video shows an agent reading those skills, writing the routes and server function, passing the type check and starting the dev server. Strict types help here: when an agent changes a route param or a server function input, TypeScript points at everything that no longer agrees.

TanStack's launch video: an agent reads TanStack Intent skills and builds the app
How to try it
Create a project with the TanStack CLI, as the getting started guide shows. It asks for your package manager and optional add-ons like Tailwind CSS and ESLint:
npx @tanstack/cli@latest createOr begin from the official Basic example:
npx gitpick TanStack/router/tree/main/examples/react/start-basic start-basic
cd start-basic
npm install
npm run devIf you are on Next.js, there is a migration guide. For Solid, start from the Solid docs. My take: for a new React app that is mostly interactive and only needs the server for some work, Start is now a serious default, and 1.0 removes the "it's still RC" argument.
Sources
- TanStack Start 1.0 is Stable (TanStack blog, October 13, 2026)
- TanStack on X (launch post)
- 5x SSR Throughput: Profiling SSR Hot Paths in TanStack Start (TanStack blog)
- TanStack Start docs: hosting, server functions, environment functions, selective SSR, migrate from Next.js
Comments
Share your thoughts and join the conversation



