deployment & nitro

[check: …]
📖 Read the full guide — the Vite → Nitro → preset build pipeline, all six deploy targets, and the SSR vs SPA mode matrix. This page is the interactive companion.

The one idea

TanStack Start builds via Vite onto Nitro — the server engine from the Nuxt ecosystem — which emits a deploy preset per target: Node, Vercel, Cloudflare, Netlify, Bun, or static (SPA/CDN). Server presets ship a server bundle (server functions work); the static target ships client files only (no server → no server fns). v1 RC · not yet GA · tooling mid-transition

Start ditched per-host adapters: instead of one adapter package per host (the old Next/Nuxt model), one Nitro server output deploys to many targets. The preset you pick only decides the shape of the output — the server bundle is the same Nitro server, packaged for a different runtime.

Vite (default build tool) Rsbuild 2 (first-class alternative) Vinxi (legacy — now migrated to Vite-native)

The build pipeline — app → Vite → Nitro → preset → artifacts

Hit run build after choosing a mode + preset below to watch the pipeline light up. The final stage shows what lands on disk for that combo.

1 · source
Start app
routes + server fns + React
2 · build tool
Vite
tanstackStart() plugin
3 · server engine
Nitro
packs the server bundle
4 · preset
target shape
5 · artifacts
what ships

Build visualizer — pick a mode + a deploy preset

Two build MODES (SSR full vs SPA client-only) × six deploy PRESETS. The combo decides what ships: a server bundle? static client files? does the server render HTML? do server functions work?

1. build mode

2. deploy preset (the Nitro target)

Pick a mode + preset, then hit run build.
Build artifacts
— run a build to see what ships.

vite.config.ts (the preset switch)

// the current Vite-native config import { tanstackStart } from '@tanstack/react-start/plugin/vite' import { nitro } from 'nitro/vite' import viteReact from '@vitejs/plugin-react' export default defineConfig({ plugins: [tanstackStart(), nitro(), viteReact()], })

Comparison — preset → server bundle? → server fns? → example target

This bundle is HOW Start builds and where it deploys: Vite + Nitro → a preset per target. Cross-refs: 🔗 spa_vs_mpa (SPA vs SSR build outputs) · 🔗 ssr_streaming (SSR rendering — why a server bundle matters) · 🔗 tanstack_start_overview (the stack; Nitro layer) · 🔗 metaframework_landscape (where Start deploys vs Next/Astro).