Skip to content
LPR Studio
FREN
Contact us

Custom softwareSaaSCode ownershipMethod

Moving off Bubble: when and how to migrate to custom code

9 min read

Moving off Bubble is worth it when the platform blocks something concrete: a bill that tracks activity instead of your budget, data hosted in the United States when your customers need it elsewhere, a team that needs automated tests and code review, or a feature you cannot build in the editor. Without one of those signals, staying on Bubble is often the right call. With one, the safe approach is to keep the Bubble app live and migrate module by module, data included.

Everything below is based on Bubble's official documentation as read on 3 November 2026. Plans change, so check Bubble's pricing page before you decide.

What Bubble does well, and why many teams stay

Bubble has let a lot of founders ship a product without an engineering team. Database, user accounts, workflows, hosting and backups come built in, and the platform runs on Amazon Web Services with Cloudflare in front. That is a large share of the operations work you would otherwise have to organise yourself.

Keep that in mind before you leave: everything Bubble does behind the scenes becomes your job. Bubble's own page on exporting your app lists it plainly: hosting, a database, authentication, file storage, domains, monitoring and backups all need to be set up once the app has moved. Our comparison of agencies, freelancers and no-code covers when no-code remains the best answer.

Four signals that justify migrating

SignalWhat happens on BubbleWhat custom code changes
Usage-based billingEvery action consumes workload unitsHosting costs you size yourself
Hosting locationShared servers in the US, region choice on EnterpriseRegion chosen from day one
Ownership and portabilityNo downloadable source codeA repository another team can take over
Engineering practicesVisual editor, logic spread across workflowsAutomated tests, code review, versioning

1. The bill follows activity, not your budget

Bubble uses usage-based pricing measured in workload units (WU). Each plan includes a monthly allowance; beyond it you pay overages as you go or add a workload tier, on the Starter, Growth and Team plans. The documentation lists twelve activity types that consume units, including database searches, workflows, API calls and page loads. Bubble emails you at 75% and 100% of your monthly allowance.

That model is not a flaw. It is fair for a lightly used app. It becomes a signal when your margins depend on a predictable cost per customer, which is typical for a SaaS with a fixed price per seat or tier, or when the team spends more time tuning consumption than building the product.

2. Your data needs to live somewhere else

According to Bubble's hosting documentation, the shared environment is hosted in the US and that location cannot be changed; only the Enterprise plan lets you choose the AWS region. If a large customer, a public tender or your own GDPR assessment requires hosting in Europe or another region, you face a choice: move to Enterprise, or migrate.

3. You want code you can take with you

Bubble does not offer source code to download. Its export page describes a different route: an AI agent connects to your app through the Bubble MCP server, in beta, reads your data types, pages, workflows and privacy rules, then recreates the app in the language and framework you pick. Bubble notes that this is effective but does not guarantee perfect fidelity, and calls the result "a strong starting point, not a finished app". API keys are not readable by the agent and have to be copied over by hand.

If the ability to change vendor or platform matters to you, weigh this now rather than later. Our guide to avoiding vendor lock-in sets out what you should be able to take with you when you leave.

4. Your team needs engineering practices

Once several people change the app, you need automated tests, a review before anything reaches production, and a readable version history. As the product grows, logic scattered across hundreds of visual workflows gets hard to reason about. That is a form of technical debt, and a well-kept codebase makes it visible and repayable.

Bad reasons to migrate

  • "Code is more professional." Badly written code is worse than a well-built Bubble app. What matters is how the product holds up over time.
  • "It will be cheaper." Not necessarily. As Bubble itself points out, costs in code are spread across several providers (hosting, database, email, monitoring), and you add maintenance and the rebuild itself. List them all before you compare.
  • "A feature is missing." First check whether a plugin, the API Connector or custom code in an HTML element covers it. Bubble recommends exactly that before any move.

What you take with you, and what you rebuild

ItemHow it leaves BubbleWhat it becomes in code
DataCSV, JSON or NDJSON export, or the Data APITables in a database such as PostgreSQL
Data types and option setsRead by the agent or mapped by handSchema, lookup tables or enums
Pages and workflowsRead by the agent, then rebuiltScreens and server logic, with tests
Privacy rulesRead by the agentAccess control, rewritten and verified
User accountsNeeds a planAuthentication and a way for users to sign back in
API keys and secretsCopied by handThe new host's secret store
Backups and monitoringProvided by BubbleSet up and tested by you

Two items deserve extra care.

Record IDs. Keep each Bubble record's unique ID as a column in the new database. It keeps references between tables correct after the move and lets you rerun the import as many times as you need.

Access rules. Bubble's privacy rules protect your data without showing up anywhere on screen. Their equivalent in code has to be written and then tested, user by user and role by role. This is where a fast, AI-assisted rebuild most often goes wrong, and our security checklist for AI-built apps applies here too.

Migrating module by module, with no downtime

A good migration does not interrupt the service. The Bubble app stays live during the rebuild, and the switchover is prepared like any other release.

  1. Inventory. List data types, workflows, integrations (payments, email, third-party APIs) and access rules. The inventory doubles as your specification.
  2. Pick the order. Start with a low-risk module, or one that burns a lot of workload units, such as a background job or an export, rather than user sign-up.
  3. Build the new database. Create the schema, write the migration script and rehearse it until the counts match.
  4. Bridge both systems. During the transition, Bubble's Data API lets the new code read records still managed in Bubble. Secure it properly: it follows the same privacy rules.
  5. Test with real data. Acceptance testing with a few users, on a copy of production data, before any switchover.
  6. Switch, then watch. Final data migration, domain cut-over, and the Bubble app kept read-only for a few weeks as a fallback.

For a SaaS with many active customers, moving customers over in batches lowers the risk further. It does mean running both systems side by side for longer, which is a case-by-case decision.

How long and how much

We do not quote a universal figure: it depends on the number of data types, workflows and integrations, and above all on the state of the data. Three reliable rules of thumb instead:

  • The rebuild is only half the job. Data migration, access rules, hosting and acceptance testing take as long again.
  • AI speeds up writing code, including through the agent Bubble offers, but not decisions or verification. Budget time for review.
  • Running costs change shape. One Bubble subscription becomes several lines (hosting, database, third-party services, maintenance). Compare them line by line with your current subscription, over at least a year.

If your app was built with an AI app builder rather than Bubble, the process is very similar, and we cover it in taking a Lovable app to production.

Where to start

Before deciding, get the app reviewed: an inventory of workflows, workload consumption over the last three months, privacy rules and data volume. That review tells you whether to optimise on Bubble, move to a higher plan or migrate, and in which order. Your Bubble app is also an excellent specification: at LPR Studio we start from what it shows to present, in a video call within 5 business days, a free prototype of the coded version, before you commit to anything.

Frequently asked questions

Can I export the source code of a Bubble app?

Not as ready-to-deploy code. Bubble lets an AI agent read your app through its Bubble MCP server, currently in beta, and recreate it in the language and framework you choose, without guaranteed fidelity. Your data is exported separately as CSV, JSON or NDJSON. Bubble itself describes the result as a strong starting point, not a finished app.

Do I have to take my Bubble app offline while migrating?

No. Your Bubble app keeps running while the new version is built, and Bubble says so in its own documentation. You switch over module by module, or all at once after rehearsing the data migration several times. Users only see the new version once it has been tested against real data.

How do I get my data out of Bubble?

Export each data type from the editor as CSV, JSON or NDJSON, or read records continuously through the Bubble Data API while both systems run side by side. Keep every record's unique ID as a column in the new database so that references between tables still match after the migration.

Why does my Bubble bill grow as my app grows?

Because Bubble prices by usage, measured in workload units. Searches, workflows, API calls and page loads all consume units, and each plan includes a monthly allowance. Beyond it, you pay overages or add a workload tier. An app that gains users and activity therefore sees its bill follow that activity rather than a fixed budget.

Is migrating from Bubble to code always worth it?

No. If your app works, the bill is predictable, the hosting location suits your customers and nobody needs a feature Bubble cannot support, migrating costs more than it returns. Migration makes sense when one of those points blocks growth, a contract or compliance, not as a matter of principle.