Leaving Bubble starts with knowing what your app really does
UnBubble is the method we use on our own Bubble migrations, published as open source. It reads your app's export on your machine and turns it into an audit of what is dead, documentation of what remains and a rebuild plan that tells whoever builds the new system what to do, and in what order.
Open source on GitHubApache 2.0 · works with Claude Code, Codex, Cursor and any Agent Skills host
Four things the export does not tell you
The export is an inventory, not a blueprint
The .bubble file lists every page, workflow and field, wired together by generated ids. It records what exists without saying what matters, so an agent reading it raw fills the gaps by guessing.
Years of edits left dead weight
Pages nothing navigates to, workflows nothing triggers, plugins still on a paid plan. Rebuilding them is waste, and not knowing which ones they are turns every estimate into a guess.
The credentials live only in the old app
API keys and integration settings often exist nowhere else. Lose them halfway through the rebuild and the project stalls on access nobody remembers granting.
The cutover breaks what nobody listed
Webhooks, Data API consumers and old URLs keep calling the app. A rebuild that never listed them breaks integrations on the day you switch.
Four stages, from the export to the switch
Each stage is a skill your coding agent runs. Behind each skill are scripts that read the facts off the export, so the agent does not have to guess them.
01
Audit
An interactive report lists what is unused in ten areas of the app, such as pages, backend workflows, plugins and fields, and gives each item a confidence level. You clean up the app and export it again before anything is rebuilt.
02
Clone and level-up
The clone step documents the database, the APIs, the workflows and the business rules in a form you can verify, and keeps every credential the export carries in a local .env. Level-up designs the target architecture, the new data model and the migration plan.
03
Rebuild
The rebuild works from an atomic backlog, whether your team, a coding agent or Yowpi does the building. Two gates keep the rebuild honest: every requirement has a story, and every migrated column is read or written by the new code.
04
Cutover
The migration plan sets how each table moves (CSV or the Data API), the cutover window, the data reconciliation the app owner signs off on and the way back if something fails. After the switch, the Bubble app stays as a read-only archive.
Runs where your agent runs
Clone the repository and link the skills into the agent you already use. The scripts need only Python's standard library, and they run without an agent too.
git clone https://github.com/yowpi-tech/unbubble.gitSee it on a demo app before your own
Tidewater Rentals is a fictional equipment-rental app we built to show the method. In almost every section of the audit, its export has something in use and something dead. The report below is what UnBubble produced from it, untouched.


The export, the report and the scripts that built them are in the repository: the demo app
What it does not do
We list the limits of the tool up front, the same way we list the trade-offs of a migration.
It does not convert your app
Converting a Bubble app to code piece by piece carries the same architecture problems into the new codebase. UnBubble does the reading and the planning; writing the code is still a job for your team, a coding agent or us.
It reads the export, not your database
The export carries the app's structure, not its records. Records move by CSV or through the Data API, in the order the migration plan sets.
Your data stays on your machine
The core pipeline runs locally, with no uploads and no accounts. An optional, experimental connected mode works on the live app through the editor, and only with the app owner's consent.
What people ask before trying it
- Is UnBubble free?
- Yes. It is open source under the Apache 2.0 license, so you can use and modify it, commercially too, as long as you keep the license and the notice.
- What if I'm not leaving Bubble?
- The audit works the same way: knowing what is dead makes the app easier to maintain and shows the paid plugins nothing uses. You can stop at the audit and decide on the migration later.
- Does it send my export anywhere?
- No. The scripts read the export where it is and write to a project folder on your machine. Credentials go to a local .env that never enters the documents, and nothing is sent to us.
- Which coding agents does it work with?
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI and any other host that reads Agent Skills. The scripts also run on their own, from a terminal.
- What about Bubble's terms of use?
- The core pipeline only reads the export that the app owner downloads from the editor. The optional connected mode uses the editor's undocumented endpoints, which can change without notice. That is why it is experimental and meant only for use with the app owner's consent, never unattended.
- Do you work with agencies?
- Yes. When a migration is larger than your bench, talk to us about referrals.
- Who maintains UnBubble?
- Yowpi Tech. Issues and pull requests are welcome on GitHub, and support is best effort, with no SLA. When a migration needs a team, the way in is the Operational Architecture Diagnostic, just below.
Bubble and Bubble.io are trademarks of Bubble Group, Inc. UnBubble is an independent project, not affiliated with or endorsed by Bubble.
The connected mode is built on befree-bubble-mcp, by Pedro Duarte (Befree Academy), MIT license.
When the migration cannot stop the operation
UnBubble gives you the facts and the plan. When the app runs an operation that cannot stop while it moves, we run the migration with your team, starting with the Operational Architecture Diagnostic: 30 minutes with Yowpi's founder about what transfers, what gets redesigned and where to start. We take on up to 6 projects in parallel and work US East hours, with the technical owner in every meeting.
Talk directly with the architect who will run the project. No salespeople.