Skip to main content
PercherPercher

Deploy guide · runtime = "node"

Deploy Remix on Percher

Remix is a fullstack React framework with nested routes, server loaders, and form actions. Newer projects use Vite; either way, on Percher it runs on the Node runtime through the Node adapter.

Why Percher fits

  • Long-running Node container fits Remix's `loader`/`action` model — no platform-specific shims for streaming responses or `defer()`.
  • Auto-forwards `VITE_*` env vars for Vite-based Remix projects, so client-side env wiring matches how Remix docs describe it.

Quick start

bunx percher create my-app --template remix
cd my-app
bunx percher publish

The first command scaffolds a working Remix project plus a `percher.toml`. Publish builds and deploys it; the live URL prints on completion.

percher.toml

The canonical config for a Remix app on Percher. `bunx percher init` generates this automatically when it detects Remix in your project.

[app]
name = "my-app"
runtime = "node"
framework = "remix"

[build]
command = "bun run build"
output = "build"

[web]
port = 3000
health = "/health"

Common gotchas

  • Install `@remix-run/node` (or `@remix-run/serve` for the bundled server) — the platform-specific build target matters.
  • Add a `app/routes/health.tsx` with a `loader` returning `Response.json({ status: "ok" })`; without it the health check fails.
  • React Router 7 fullstack mode (Remix's continuation) uses the same shape — `framework = "remix"` still applies.

Related docs

Ready to deploy Remix?

Free plan, no credit card. Live in under a minute.

Sign up free

← Browse all deploy guides