Cloud
Moving off Vercel or Heroku
Moving an app to a platform that suits it better, often Cloudflare Workers, without starting again.
What we've moved
HelloRestaurant: Vercel to Cloudflare Workers
A Next.js app, now running on Workers through OpenNext. The database moved from Neon PostgreSQL to D1, files to R2, email to Cloudflare's email sending, and scheduled jobs to a Worker cron trigger.
HeySales: AWS Lambda to Cloudflare Workers
Now built with vinext, Cloudflare's Vite-based way of running Next.js apps. The database moved from Neon PostgreSQL to D1, email to Cloudflare's email sending, and the Google integration was rewritten to work on Workers.
HelloSupermarket: AWS to Cloudflare Workers
A Next.js app relaunched on Workers through OpenNext, with its products and prices moved from DynamoDB to D1 and pages cached at Cloudflare's edge.
Read: Why we replaced googleapis with plain fetch on Cloudflare Workers
What changes in a move
The runtime
Workers aren't Node.js servers. There's no filesystem at runtime, no timers at start-up, and some Node libraries don't work, so we find those early.
The database
Connections, transactions and SQL can all change with a new database. See our database migrations service.
Background work
Jobs that ran on a schedule or after a request move to cron triggers, queues or waitUntil.
Email, files and secrets
Each service the app relies on gets a new home and new credentials, set in the platform's secret store.
Heroku, Render, Railway and others
The same approach applies to apps on Heroku, Render, Railway or Netlify: we list what the app relies on, map each piece to the new platform, and move it in steps you can test.
Related work
Technologies
Questions
Why Cloudflare Workers?
For many web apps it's simple to run: no servers to manage, a database (D1) and file storage (R2) alongside, and pages served close to each visitor. It isn't right for everything, and long-running jobs or some Node libraries need another home. We'll say so.
Will there be downtime?
We plan the move so the new version runs alongside the old one until it's checked, then move the domain across.
Tell us what you're building.
Email us about your project: what it needs to do, who it's for and when you'd like it live.