Remix is a server-first React framework built around web standards — loaders fetch data on the server, actions handle mutations, and the framework leans on real HTTP semantics. With the Remix/React Router convergence, the deployment story centers on running the Remix server (typically an Express or built-in Node server) or an edge adapter. Because Remix does meaningful work on the server, the best hosting gives you a proper runtime plus a database nearby. Here's a fair 2026 comparison.
How Remix wants to be deployed
Remix uses adapters. The most common production setup is the Node server build (or the built-in app server), which produces a long-running server handling SSR, loaders, and actions. There are also edge adapters (Cloudflare, etc.) for the V8-isolate model. Your choice of adapter constrains where you can host:
- Node server build → any platform that runs a Node process (containers/PaaS). Most flexible; full Node API access.
- Edge adapter → edge-runtime hosts (Cloudflare Workers/Pages). Fast and global, but the Workers runtime restricts some Node APIs.
Most teams using a relational database and standard Node libraries pick the Node server build. The rest of this guide focuses on that, since it's the broadest case.
A container-ready Remix app
The Node build is straightforward to containerize:
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/build ./build
COPY --from=build /app/package.json ./package.json
EXPOSE 3000
CMD ["npm", "run", "start"]Loaders and actions read from a database via DATABASE_URL (Prisma/Drizzle are popular with Remix), so the host should make wiring a database easy.
Hosting options at a glance
| Platform | Node server build | Edge adapter | Managed DB | Notes |
|---|---|---|---|---|
| PandaStack | Yes (container) | — (runs Node server) | Yes (PG/MySQL/Mongo/Redis) | DB auto-wired |
| Render | Yes | — | Yes (PG) | Mature managed PaaS |
| Railway | Yes | — | Yes | Great DX, templates |
| Fly.io | Yes (Machines) | — | Managed PG | Edge regions |
| Cloudflare | — | Yes (Workers) | D1 / partners | For edge adapter |
| Vercel | Yes (Node) | Edge | Partners | Strong React DX |
PandaStack
For the Node server build with a relational database, PandaStack is a clean fit. Connect the Git repo: it auto-detects the Node app (or uses your Dockerfile), builds with rootless BuildKit in an ephemeral Kubernetes Job, and deploys via Helm. Attach a managed PostgreSQL or MySQL and DATABASE_URL is injected — your loaders and actions read it directly.
Why it suits Remix:
- Full Node runtime for the server build — no edge-runtime API restrictions on your loaders/actions.
- Managed database auto-wired (PG/MySQL/Mongo/Redis), so Prisma/Drizzle migrations and queries work without copying connection strings around.
- Static assets + SSR together: Remix serves its client bundle from the same app; the platform handles SSL and custom domains.
- Cronjobs and edge functions alongside, if your app needs scheduled work.
- Free tier to start: a web service plus a managed DB.
Honest caveats: if you specifically want the *edge* adapter for global low-latency rendering, an edge-runtime host (Cloudflare) is purpose-built for that; PandaStack runs the Node server build, not the Workers runtime. Free-tier apps cold-start (scale-to-zero), which adds latency to the first request after idle; run latency-sensitive Remix apps on a warm paid tier. Free-tier DBs are dev/hobby-sized.
Render
Render hosts the Remix Node build comfortably with managed Postgres, predictable per-instance pricing, and a mature platform. A safe, proven choice for server-rendered Remix apps.
Railway
Railway gets a Remix + Postgres stack running fast with excellent DX and templates, on usage-based pricing. Great for quick starts and variable load.
Fly.io
Fly.io runs the Remix Node build as a Machine with edge placement and a managed Postgres option — useful when you want the server physically close to users without adopting the edge runtime. More configuration than a pure PaaS.
Cloudflare (edge adapter)
If you choose Remix's edge/Workers adapter, Cloudflare is the natural home: global, fast, with D1/KV/R2 for storage. The tradeoff is the Workers runtime's API restrictions and SQLite-based D1 versus a full managed Postgres. Pick this only if you've committed to the edge adapter.
Vercel
Vercel offers strong React DX and supports Remix via Node and edge runtimes, with database access through partner integrations. A solid option, especially if your team already lives in the Vercel ecosystem.
How to choose
- Node server build + relational DB, one platform → PandaStack.
- Mature managed PaaS with Postgres → Render.
- Fastest setup + great DX → Railway.
- Edge placement, Node build → Fly.io.
- Committed to the edge/Workers adapter → Cloudflare.
The deciding factor is your adapter. Node server build → a container PaaS with a bundled database is the path of least resistance. Edge adapter → an edge-runtime host. Most data-driven Remix apps land on the former.
References
- Remix docs: https://remix.run/docs
- React Router (Remix convergence): https://reactrouter.com/
- Remix deployment & adapters: https://remix.run/docs/en/main/guides/deployment
- Prisma with Remix: https://www.prisma.io/docs
- Drizzle ORM: https://orm.drizzle.team/
---
Deploying the Remix Node server build with a database? PandaStack builds from your repo, runs a full Node runtime, and auto-wires managed Postgres/MySQL via DATABASE_URL — free to start at https://dashboard.pandastack.io.