Guide · Framework
Deploy Remix SPA / prerender
ssr false plus prerender. Deploy build/client. Loaders do not run on the host.
Remix is a server framework first. On Novence you only get the client build: ssr: false and prerender: true so build/client contains index.html plus prerendered routes. build/client is not auto-detected.
Configure
SPA mode (ssr: false) emits a client bundle. Add prerender: true (or a list of paths) so each URL is a real HTML file. Without prerender, only / exists and /about 404s on refresh.
Resource routes, actions, and server loaders will not run after upload. Load data at prerender time or from a public API in the browser. Do not deploy build/server.
// vite.config.ts
import { vitePlugin as remix } from "@remix-run/dev";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
remix({
ssr: false,
prerender: true,
}),
],
});Build
npx remix vite:build
npx remix vite:build. Confirm build/client/index.html. React Router 7 apps using the same Vite plugin follow the same build/client layout.
Deploy
npx novence deploy build/client
npx novence deploy build/client. Required. Auto-detect will not choose this nested folder (it may pick a top-level build/ that is the wrong tree).
build/client is not in the CLI auto-detect list. Pass it every time. Full CLI: /cli.
Caveats
- No Remix server, no session cookies from loaders, no mutating actions.
- SPA fallback via Express
app.get('*')is not available on Novence. - If you need full Remix SSR, use a Node host instead. See /vs/vercel.
FAQ
Does this work with React Router 7?
Yes if you prerender a static client build and upload that folder (often build/client). Same constraint: no server loaders on Novence.
Can loaders fetch at request time?
No. Prerender bakes loader data into HTML at build time. After that, use client fetch to public APIs.
Why not deploy build/?
The server bundle may sit next to client/. Upload only build/client so you do not miss index.html or include files Novence rejects.
Agents ship. Novence hosts.
Copy Prompt or get a key. Then npx novence deploy build/client.