Migrate off Bubble to Next.js, one journey at a time.

Bubble, Webflow, Airtable or Zapier got you to revenue. Now pages take eight seconds, workflows time out, and the monthly platform bill keeps climbing. We move you to Next.js and Postgres without a rebuild-and-pray cutover, and without you stopping shipping.

Migrate when Bubble blocks growth, not when it annoys you

  • 1You need real database constraints: multi-tenant permissions, audited data, roles that Bubble privacy rules cannot express safely.
  • 2You are paying for capacity you cannot predict, and cannot tie the bill to a workflow or a page.
  • 3A hot page is slow and you cannot profile it; or you are hitting Zapier, Airtable or Bubble workflow limits every month.
  • 4You need integrations Bubble makes you hack around: Stripe Connect edge cases, vendor webhooks, queues.
  • 5You are past roughly $10k MRR, or you are B2B with permissions that make security mistakes expensive. Below that, we will usually tell you to squeeze more out of Bubble first.

The cutover plan

The rewrite is not the risk. The cutover is. Every phase is designed so there is one source of truth at all times.

  1. 1

    Inventory Bubble like production code

    Data types, privacy rules, every backend and scheduled workflow, API calls, Stripe, email, file uploads. One to three days. This is where hidden coupling gets found.

  2. 2

    Stand up the new core

    Postgres with tenants and roles modelled properly, auth (Supabase Auth or Clerk), and a repeatable data pipeline that preserves every Bubble ID in a bubble_id column. Runs ten times before it runs for real.

  3. 3

    Strangle one journey at a time

    Login and onboarding first, then the core dashboard, then billing. New routes live on a subdomain or path; the rest stays on Bubble. Users do not notice.

  4. 4

    Cut over

    Freeze Bubble writes, run the final sync, switch, verify the top ten workflows, keep Bubble read-only for two to four weeks as the rollback path.

  5. 5

    Delete Bubble

    After the read-only window, we remove it. Keeping it around "just in case" for six months is how you pay two bills forever.

What a migration includes

  • Written inventory of every Bubble workflow, rule and integration
  • Postgres schema with row-level security or an explicit tenant boundary
  • Repeatable export → transform → load pipeline, tested on a copy first
  • Permissions matrix (role × action) implemented in code and SQL
  • Idempotent rewrite of backend workflows as explicit jobs
  • Stripe webhooks that survive retries and out-of-order delivery
  • Password-reset flow for users, framed as a security upgrade
  • A migration scoreboard so you always know what lives where

Real timelines and costs

These match what we see when a Bubble app is real and messy, not a weekend MVP.

ScopeTypical priceTime
Thin Bubble appMostly CRUD plus Stripe. Clean data model, few workflows.$20,000–$45,0004–7 weeks
Typical Bubble SaaSRoles, backend workflows, email, dashboards, exports.$45,000–$95,0008–12 weeks
Bubble as backendMarketplaces, heavy automations, messy data that needs an event log.$90,000–$180,00012–20 weeks

USD, fixed price after the assessment. We will tell you which scenario you are in before you commit. Hybrid (custom backend behind the Bubble frontend) starts around $8,000 if a full migration is premature.

Questions we get about this

Can we keep shipping during the migration?

Yes, that is the point of migrating one journey at a time. New features go into the Next.js side; we keep a scoreboard of which journeys live where. Stopping for ten weeks is how migrations die.

What happens to our data and files?

Relationships in Bubble export as internal IDs, files live on Bubble’s CDN, and passwords cannot be exported. We preserve every Bubble ID, re-host files, and run a password reset framed as a security upgrade. Budget about 20 percent of the project for data.

Should we dual-write to both systems?

Only if you must, for example a marketplace where both sides handle orders during cutover, and then only with an append-only event log you can replay. Otherwise one system writes and the other reads until the flip.

What stack do you migrate to?

Next.js App Router, Postgres (Supabase or Neon), Supabase Auth or Clerk, Stripe, a queue for background jobs, and S3-compatible storage. Boring on purpose; your next engineer will know it.

We are not ready yet. What should we do now?

Document your Bubble workflows and privacy rules now, while the people who built them remember. That inventory is the first phase of any migration and it costs you nothing today.

Read how we fix it

Tell us about the app. We will say which scenario you are in.

One of the founders reads it, not a sales team. Within 48 hours you have a written assessment and a fixed price. If it is a two-hour fix, we tell you that too.

Prefer to talk first? Book a 30-minute call with Mahima. No pitch deck.

No pitch, no retainer. Or email mahima@heydev.us.