Skip to content

When to use vite-ssr-boost and when not to

Use vite-ssr-boost to add SSR to a Vite app while keeping React Router Data-mode route objects. Start with the managed CLI, or own the transport through runtime adapters.

The table describes configuration and migration steps, not measured effort or performance. The Next.js column covers the App Router; the Vike column covers React integration. Each cell about another project links to its official documentation.

Topicvite-ssr-boostReact Router Framework modeNext.jsVikeTanStack Start
Routing modelData-mode route objectsRoute modules and routes.tsApp Router; file-system routingFilesystem, route strings or route functionsTanStack Router; file-system routing
Migration effort from an existing React Router SPAAdd plugin, HTML outlet, entries and scriptsConvert routes to modules; add plugin, config and root entryMigrate Vite setup to Next.js; retain React Router for SPA, move to App Router for streamingRetain React Router during migration; migrate routing afterwardConvert routes, links and hooks to TanStack Router; add Start routing setup
Data loadingRoute loaders; see contract belowloader and clientLoaderFetch in Server Components; pass props to Client Components+data and useData()createServerFn from loaders or components
Streaming SSRReact streams and SuspenseSuspense with loader promisesServer Components and streamingHTML streaming via vike-reactDocument SSR and streaming
SPA output from the same code--focus-only clientssr: falseoutput: 'export'; excludes server featuresssr: false via vike-reactspa: { enabled: true }
RSCNo implementationOpt in with unstable_reactRouterRSCPages and layouts use Server Components by defaultVia vike-react-rscOpt in with rsc.enabled
Server ownershipCLI or transport supplied by the applicationNode server template or Express integrationnext start or server supplied by the application+server: true, +server.js or renderPage()Hosting integration or server forwarding to the Fetch entry
Hosting targetsNode/Express CLI; Fetch runtimes via adapters; SPA filesNode/Docker, Vercel, Cloudflare Workers, NetlifyNode, Docker, export files or platform adaptersNode, Bun, Deno; Cloudflare, Netlify, VercelNode/Docker, Bun, Cloudflare Workers, Netlify, Vercel

The RSC implementations linked above have different release contracts: React Router labels its support experimental, as do Vike and TanStack Start. Consult those pages before selecting an RSC integration.

Loader data in vite-ssr-boost

Loader and action promises stream by default in Data mode. Use Suspense with <Await> or React 19 use() for slow fields, and opt into hydration: 'early' when the shell should become interactive before slow boundaries finish. See Stream loader data for the value matrix and custom-state constraint.

Choose a project

  • Choose vite-ssr-boost when you already have a Vite app with React Router route objects and want to keep that structure while adding SSR. The migration guide shows the entry changes; choose the Fetch path when you also want to own transport and asset delivery.
  • Choose React Router Framework mode when you want its route module API, generated route types and rendering configuration. Its mode guide describes that integration, and its adoption guide explains the route conversion it requires.
  • Choose Next.js when you want the App Router's file-system routing, Server Components and Server Functions. Those are part of its documented App Router model, while vite-ssr-boost does not implement them.
  • Choose Vike when you want its page configuration and routing with a choice of server integration. Its routing guide documents filesystem routes, route strings and route functions, and its server guide documents the integration points.
  • Choose TanStack Start when you want TanStack Router with document SSR, streaming and server functions. The Start overview describes that combination; use its routing guide to assess the route structure you would adopt.