Deploy guide · runtime = "node"
Ship Remix in ~2 minutes.
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 publishThe first command scaffolds a working Remix project plus a percher.toml. Publish builds and deploys it, then prints the live URL.
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.