Migrating from Vercel
Vercel's metered bandwidth, build minutes, and per-seat pricing add up fast for small teams. Doable runs your Next.js app as a standard Node container with flat per-month pricing, $15 for 3 projects, $39 for 10. Most Vercel projects move over without any code changes.
The only Vercel features that don't carry over are Edge Functions (V8-isolate runtime) and ISR-on-edge specifically. Standard Next.js features, SSR, API routes, server actions, middleware, on-demand revalidation, all work the same.
Pull the production env vars into a local file. We'll import this in one command on the Doable side.
vercel env pull .env.vercel --environment=productionOne-time setup.
npm install -g doable-cli && doable loginFrom your repo directory. Doable detects Next.js automatically, no `doable.json` needed.
doable projects createBulk-import from the file you exported. Each var is encrypted at rest with AES-256-GCM.
doable env import .env.vercelFirst deploy takes 30–90 seconds. Doable runs `npm install`, `npm run build`, then `npm run start` in a Node container.
doable deployPoint your custom domain's CNAME at `cname.doable.do` (apex: A record, IP returned by `domain connect`). Then `doable domain connect <hostname>`. Let's Encrypt provisions HTTPS within a minute. The Vercel deployment can keep serving until DNS propagates.
Standard Next.js features: app router, pages router, SSR, static pages, API routes, route handlers, server actions, middleware (runs in Node not edge isolates), `getServerSideProps`, `getStaticProps`, on-demand `revalidatePath`/`revalidateTag`. Anything you can run locally with `next start` runs on Doable identically.
Build-time and runtime env vars work the same way. Both `NEXT_PUBLIC_*` and server-only vars are injected via the same env-var system. Doable encrypts at rest and injects at container start, the same shape as Vercel.
Edge Functions don't carry over, they require V8 isolates that Doable doesn't run. Most apps have very few real Edge Functions (often just middleware), and middleware runs fine in Node on Doable.
ISR-on-edge specifically isn't supported (revalidation request hits a single region, not the edge). On-demand revalidation via `revalidatePath` works.
Image optimization runs through Next.js's built-in optimizer (still optimised, just not Vercel's edge-distributed CDN). For most apps the difference isn't measurable.
Pricing: flat $15 (3 projects) or $39 (10 projects). No per-seat, no metered bandwidth, no per-function-invocation, no per-build-minute. The plan price is the bill.
If you're using Vercel Postgres (powered by Neon), you can keep using it directly, paste the connection string into `doable addon attach postgres <url>` and it's injected as an encrypted env var. Same for KV (Upstash) and Blob (storage providers).
If you want to consolidate billing onto a separate provider, sign up for Neon or Supabase directly, point your existing Postgres URL at it, and `addon attach`.
Almost always yes. The only changes that might be needed are if you're using Edge Functions (move to standard API routes, usually a 5-line change) or relying on Vercel-specific environment variables like `VERCEL_URL` (Doable provides equivalent vars; map them in your config).
For most small teams Doable is significantly cheaper. Vercel Pro is $20/seat/month plus metered bandwidth, build minutes, and edge function executions. Doable Pro is $39/month flat for 10 projects with no usage metering. Vercel can be cheaper at very high static-asset traffic if you've optimised for their CDN.
Doable supports anonymous preview deploys via `doable preview` (8h, no signup required). PR-triggered deploys via the GitHub App are supported too, with simpler tooling than Vercel's comment bot.
Yes, keep the Vercel deployment live until you're confident. The DNS cutover is reversible (just switch the CNAME back). Doable also keeps every deploy's artifact so you can `doable rollback` if a specific deploy breaks something.
No credit card. Deploy your first project in under a minute.