Next.js 16 vs Remix
Vercel Next.js 16 versus Shopify Remix: server components, data loading, deployment, performance, and the modern React full-stack framework choice.
A managed platform that automates everything after git push
A fixed monthly-fee server: full control, full responsibility
There's no outright winner — these are two different responsibility models. If your traffic is spiky and you lack DevOps capacity, Vercel's automatic scaling earns its price. If you have predictable medium traffic plus an existing systemd/nginx/Cloudflare discipline, Hetzner + Cloudflare fixes the bill and gives you an edge on data residency. The tipping point: bandwidth and ISR-write volume — measure for a month, then decide.
| Category | Vercel | Hetzner VPS (self-host) |
|---|---|---|
| Performance | 8/10 | 7/10 |
| Ease of Learning | 9/10 | 5/10 |
| Ecosystem | 9/10 | 7/10 |
| Community | 8/10 | 7/10 |
| Job Market | 7/10 | 7/10 |
| Future-Proof | 8/10 | 8/10 |
# Vercel — zero-config Next.js deploy + environment variable + Edge Config example
# 1) vercel.json at the project root for function region and cron settings
{
"regions": ["fra1"],
"crons": [
{ "path": "/api/cron/revalidate", "schedule": "0 */6 * * *" }
]
}
# 2) Deploy via CLI (build+TLS+CDN automatic)
npx vercel --prod
# 3) To reduce the cost of ISR write units (1 unit = 8 KB, no included quota),
# adjust the revalidate interval based on traffic
export const revalidate = 3600; // regenerate once an hour
# 4) To reduce Fast Origin Transfer, force the function
# output into a static cache
export async function GET() {
return Response.json(
{ data: "ok" },
{ headers: { "Cache-Control": "public, s-maxage=600" } }
);
}# Hetzner VPS — Next.js standalone self-host + systemd + nginx
# 1) next.config.js — standalone output mode (per the official self-hosting guide)
module.exports = {
output: "standalone",
};
# 2) Build + copy into standalone
npm run build
cp -r .next/static .next/standalone/.next/static
cp -r public .next/standalone/public
# 3) systemd unit — process management (portfolio-ssr.service example)
[Unit]
Description=Next.js standalone server
After=network.target
[Service]
Type=simple
User=portfolio
WorkingDirectory=/var/www/app/.next/standalone
ExecStart=/usr/bin/node server.js
Restart=on-failure
Environment=PORT=4000
NoNewPrivileges=true
ProtectHome=true
[Install]
WantedBy=multi-user.target
# 4) nginx reverse proxy (Next.js's official recommendation)
server {
listen 443 ssl;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:4000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 5) Install sharp — required for Image Optimization
npm install sharpThere's no outright winner — these are two different responsibility models. If your traffic is spiky and you lack DevOps capacity, Vercel's automatic scaling earns its price. If you have predictable medium traffic plus an existing systemd/nginx/Cloudflare discipline, Hetzner + Cloudflare fixes the bill and gives you an edge on data residency. The tipping point: bandwidth and ISR-write volume — measure for a month, then decide.
Get Free ConsultationThe exact ratio depends on your traffic and ISR-write volume, but the structural difference is clear: Vercel Pro charges a $20/month base plus usage-based extras (Fast Data Transfer from $0.15/GB, Edge Requests $2/1M, ISR Write $4/1M write units), while a Hetzner VPS charges a fixed monthly rent with no extra charges as long as you stay within the included traffic quota. If your bandwidth/ISR-write volume is low, the gap can be negligible; as it rises, Vercel's bill compounds while Hetzner's stays fixed. Factor in the 2026 Hetzner price increases too (especially on the CCX/CPX lines) and run the numbers for both sides against your own traffic.