Step-by-step guide to migrating your Vercel project to RaidFrame.
Migrating from Vercel to RaidFrame takes about 10 minutes. Your Next.js app, environment variables, and domains all transfer over. The main difference: on RaidFrame, your app runs as a persistent Node.js server instead of serverless functions.
curl -fsSL https://get.raidframe.com | sh
rf auth login
rf init --from vercel
Detected Vercel project: my-app (Next.js 16)
Import environment variables from Vercel? [Y/n] y
✓ 12 variables imported (production)
✓ 8 variables imported (preview)
Generate raidframe.yaml? [Y/n] y
✓ Configuration generated
Review: cat raidframe.yaml
The importer reads your vercel.json and Vercel project settings to generate an equivalent raidframe.yaml.
If you don't have one, RaidFrame generates it:
rf config generate
Or create one manually:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
CMD ["npm", "start"]
If you're using Vercel Postgres (Neon), Vercel KV, or Vercel Blob:
# Replace Vercel Postgres
rf add postgres
# DATABASE_URL is auto-injected — same env var name
# Replace Vercel KV (Redis)
rf add redis
# KV_URL / REDIS_URL auto-injected
# Replace Vercel Blob
rf add storage
# BLOB_URL / STORAGE_URL auto-injected
# Export from Neon/Vercel Postgres
pg_dump $OLD_DATABASE_URL > backup.sql
# Import to RaidFrame
rf db import main backup.sql
rf deploy
Building... ████████████████████ 100% (38s)
Deploying... ✓ 2 instances healthy
✓ Live at https://my-app-abc123.raidframe.app
rf domains add myapp.com
Update your DNS to point to RaidFrame. Once DNS propagates, your traffic flows to RaidFrame.
| Feature | Vercel | RaidFrame |
|---|---|---|
| Runtime | Serverless functions | Persistent Node.js server |
| Cold starts | Yes (can be slow) | No (always running) |
| Function timeout | 10s (hobby) / 60s (pro) | No timeout |
| WebSockets | Not supported | Supported |
| Background jobs | Not supported | Native support |
| Cron | Limited (vercel.json) | Full cron + job queues |
| Database | Vercel Postgres (Neon) | Managed PostgreSQL |
| Pricing | Per-seat + usage | Flat per-service |
next.config.js — no changes neededVercel Edge Functions use the Edge Runtime (no Node.js APIs). On RaidFrame, everything runs on Node.js. Remove export const runtime = 'edge' from any route handlers — they'll run faster on the full Node.js runtime anyway.
Remove @vercel/analytics. Use RaidFrame's built-in metrics instead:
rf metrics --service web
| vercel.json | raidframe.yaml |
|---|---|
rewrites | Handle in Next.js config or nginx |
redirects | Handle in Next.js config |
headers | Handle in Next.js config |
crons | services.*.schedule |
regions | region |
Vercel's build system resolves some imports differently. If you see module errors, make sure all dependencies are in package.json (not relying on Vercel's auto-install).
ISR works on RaidFrame — pages are revalidated on the server. No changes needed. On-demand revalidation via revalidatePath() and revalidateTag() works identically.
Next.js Image Optimization works natively on RaidFrame. No @vercel/og dependency needed — use the standard next/image component.