Skip to content

FAQ ​

How do I add SSR or check an existing setup? ​

Start with npx ssr-boost init --dry-run, review the diff, then use --apply and install dependencies. Follow the automatic migration guide for invocation before the library is installed and for unsupported layouts. Run ssr-boost doctor after changes; --json is suitable for scripts, and --bundle support.json collects structural support information without request or environment data.

Do I need React Server Components? ​

No. vite-ssr-boost renders your React component tree through its SSR renderer and hydrates it in the browser. It does not implement React Server Components or Server Actions; use the migration guide to add SSR to route objects.

Is SSR without RSC obsolete? ​

No. React documents streaming HTML with renderToPipeableStream and Suspense as a server rendering API. vite-ssr-boost uses that rendering model and browser hydration; RSC is not a prerequisite for it.

Can I switch back to SPA? ​

Yes: run npm run build:spa, then npm run start:spa with the example scripts. Both commands use --focus-only client, keeping the same route objects and browser entry. Rebuild with npm run build before starting SSR again.

Why not React Router Framework mode? ​

Choose Framework mode when you want its Vite plugin, route module API and rendering configuration. Its adoption guide converts route definitions to route modules and adds a root entry. vite-ssr-boost adds SSR while keeping your Data-mode route objects and HTML entry.

Why not Next.js? ​

Choose Next.js App Router when you want its file-system routing, Server Components and Server Functions. Its Vite migration guide starts with SPA behavior and describes moving from React Router to App Router for streaming. vite-ssr-boost keeps the Vite build and React Router route objects.

Does it work on Bun, Deno, Cloudflare? ​

Yes, through the Fetch core, @lomray/vite-ssr-boost/edge/render-to-stream and @lomray/vite-ssr-boost/adapters/edge. Use the runtime adapter integration with Bun.serve, Deno.serve or a Cloudflare Worker Fetch entry, and provide bundling, static assets and route-asset injection. Cloudflare bundles need the workerd and worker resolution conditions. The managed CLI and its Vercel/serverless output use Node and Express; they do not produce a Worker bundle.

Can <Await> and React 19 use() hydrate loader promises? ​

Yes. Loader and action promises stream by default, including nested promises. The browser reconstructs them before creating the Data router. Enable hydration: 'early' to hydrate the shell while slow boundaries are pending; custom state must be ready at onShellReady. The default retains footer hydration. Stream loader data covers examples, errors and buffered crawler responses.