service · bubble_migration
Bubble to Next.js migration: method, cost and risks — from someone who has done it
Feature-for-feature parity guaranteed, a controlled cutover with rollback, no service interruption.
1 single-cutover migration in production · 18 months of history migrated with no downtime
The 4 signals that your Bubble has hit its ceiling
Bubble is excellent for moving fast and validating an idea. The trouble comes later, once the product works and the platform becomes the brake rather than the accelerator. Here are the four signals I see every single time before a migration.
- Performance degrades with volume. As long as you had a few hundred records, everything held up. Now your lists of several thousand rows crawl, searches turn slow, and you resort to server-side constraints and nested “do a search for” calls to work around the engine. You end up optimising the platform instead of moving your product forward.
- The cumulative cost blows up. The plan keeps climbing, workload units overrun the moment a workflow loops, and every serious feature goes through yet another paid plugin. You stack recurring subscriptions to plug the gaps, and the monthly bill ends up exceeding what a code stack would cost you to run.
- You can’t hire developers. Good developers don’t want to build a career on Bubble: it isn’t Git, it isn’t versioned code, and it isn’t testable the way they expect. You end up dependent on a small pool of no-code freelancers, unable to hire in-house or grow a real engineering team. This is often the signal that triggers the decision on the CTO’s side.
- The data model hits its limits. No real relations or integrity constraints like in SQL, no versioned migrations, and privacy rules that become unmanageable as the roles multiply. The technical debt sits in the very structure of your data, and every new feature adds complexity to an already fragile edifice.
Migrate or rewrite elsewhere?
When to stay on Bubble. If your product is still searching for its product-market fit, don’t migrate. Bubble remains the best tool to iterate fast, test hypotheses and pivot without burning budget. As long as you don’t know exactly what you’re building, a code stack would be extra cost and slowness. I’ll tell you so honestly during the audit.
When to migrate. The right moment is when PMF is validated and you’re entering the scaling phase: volume is climbing, you’re hiring, you need reliability and control. At that stage, what Bubble caps costs more than the migration itself.
Why Next.js + Supabase. It’s a standard, hireable stack: any good React/TypeScript developer can pick it up, and you’re no longer locked in. Supabase gives you a real PostgreSQL with relations, versioned migrations and Row Level Security policies for security at the data level. And the running cost becomes predictable, with no workload units and no pile of paid plugins.
The 4-step method
A migration is not a blind rewrite. It’s a framed process, where each step reduces the risk of the next. Here is how I proceed, with indicative durations.
- 1
Bubble audit — 2 weeks
I map out your data model, your workflows, your dependencies and your plugins. The goal: understand exactly what your app does, spot the traps (privacy rules, critical plugins, API workflows) and define the feature-for-feature scope to reproduce identically.
- 2
Migration plan
I decide between a progressive migration (Bubble and Next.js coexisting, module-by-module cutover) and rip-and-replace (everything in a single step). The choice is made on concrete criteria: size of the scope, how critical production is, external dependencies, the ability to maintain two environments. You approve the plan before we touch any code.
- 3
Data migration — Bubble → PostgreSQL
I extract your Bubble database and normalise it into a clean PostgreSQL schema, with real relations and constraints. Each migrated table runs through regression tests that compare the old and the new, record by record, to guarantee that no data is lost or distorted.
- 4
Controlled cutover — the single-cutover migration
All users move onto the new stack in a single step, at a chosen time, with a guaranteed rollback if a check fails. No second environment to maintain, no extended maintenance window. This is exactly the mode I executed in production, with no perceived downtime.
The real case: a single-cutover migration in production
A fast-growing event caterer, around 500 events a year with about twenty people. In 2025, I delivered them a complete business ERP built on Bubble to move fast: a settled data model, core functions delivered module by module, from lead management through to invoicing. Bubble did its job — validating the product and getting the team moving.
Once the product was validated and the volume settled in, Bubble started to hit its ceiling. In 2026, I migrated the ERP to Next.js + Supabase as a single-cutover migration: all users switched over in a single step, without running parallel environments. Eighteen months of historical data were migrated with no loss and no service interruption, and the cutover happened with no downtime perceived by the team.
The result: the code stack unlocks what Bubble was capping — we move faster, further, and cheaper to run, on an architecture that supports growth past thirty users. This is the migration I run in production today, and it’s my reference point for everything I describe here.
Same story for a retirement-advisory firm that started on Bubble for the same reasons: limited performance, paid plugins, and a team that couldn’t hire a modern developer. See the retirement-firm case →
How much it costs
A Bubble to Next.js migration starts at €15k excl. VAT, over a duration of 2 to 4 months. It’s a fixed price, with the price set at signing: no hidden day rate, no surprise invoices. Three factors make the amount vary.
- The number of workflows to reproduce. The richer your Bubble business logic, the more behaviours there are to recode identically on the Next.js side.
- The plugins to replace. Every critical paid plugin has to be reimplemented in code or replaced by a standard service — that’s often where the work hides.
- The volume of data to migrate. The larger the history and the more complex the structure, the more care the normalisation and the regression tests demand.
| Engagement | Price | Duration |
|---|---|---|
| Diagnostic (precise quote) | €1,500 excl. VAT (deducted if we continue) | 5 days to audit and cost it out |
| Bubble → Next.js migration | From €15k excl. VAT · price set at signing | 2 to 4 months · no service interruption |
If you want a precise quote before committing, the €1,500 excl. VAT Diagnostic audits your Bubble, scopes the perimeter and sets the fixed price. Its cost is fully deducted from the migration if we continue together.
Frequently asked questions
Will my data be lost during the migration?
No. The data migration is a controlled process: I extract your Bubble database, normalise it into a clean PostgreSQL schema, then replay a battery of regression tests that compare the old and the new system record by record. Nothing is switched to production until the checks are green. On the case I run in production, eighteen months of history were migrated without the slightest loss.
How much service downtime should I plan for?
Zero. The cutover is controlled and prepared in advance: all users move onto the new stack in a single step, at a chosen time, with a rollback ready if a check fails. Your users don’t see an extended maintenance window — on my last single-cutover migration, there was no perceived downtime.
Progressive migration or big bang: which to choose?
It depends on your data model and your dependencies. A progressive migration (the strangler pattern) keeps Bubble and Next.js running side by side while you cut over module by module: safer on very large scopes, but you have to maintain two environments. A single-cutover migration (rip-and-replace) switches everything in one step: simpler to run, no double maintenance, provided the scope is under control. I decide at the end of the audit, on concrete criteria, not on principle.
How much does a Bubble to Next.js migration cost?
From €15k excl. VAT, over a duration of 2 to 4 months, as a fixed price with the price set at signing. The final amount depends on the number of workflows to reproduce, the paid plugins to replace with code, and the volume of data to migrate. If you want a precise quote before committing, the €1,500 excl. VAT Diagnostic scopes the perimeter and is deducted from the engagement if we continue.
Why not simply stay on Bubble?
Sometimes it’s the right choice, and I’ll tell you so frankly. As long as your product is still searching for its product-market fit, Bubble stays unbeatable for iterating fast and cheap. Migration is justified once PMF is validated and Bubble becomes the brake: performance degrading with volume, the cost of workload units climbing, the inability to hire developers, the limits of the data model. If you’re not there yet, I advise against migrating.
Let’s audit your Bubble in 30 minutes
Describe your app, its volume and what’s holding you back. I’ll tell you frankly whether the migration is justified today, how I would approach it, and what it would cost. If Bubble is still the right choice for you, I’ll tell you that too. No commitment.
Last updated: 11 June 2026 · Author: Rémy Ardurat, Product Builder · Scope, price and timeline are indicative, to be refined during the audit depending on your application. Page published by buildwithremy.com.