Engineering

Who actually owns your data on a no-code platform

Every no-code platform worth using has an export button, and every vendor will tell you your data is yours. Both things are true. The question nobody asks until the week they need to leave is what shape the data comes out in, because a CSV of your records is not the same asset as a database you can point an application at. That gap is where migrations go from a two week job to a two month one.

The export button gives you content, not a system

Webflow documents this plainly. Code export lives on paid Workspace plans only, and site plans do not include it at all. What lands in the ZIP is HTML, CSS, JavaScript and your uploaded images. What does not land in it, per Webflow's own list: CMS content and Collection lists, User Accounts, Ecommerce products and checkout, page password protection, form submission processing, reCAPTCHA, site search, and every locale except your primary one. Their wording for what you get instead is worth quoting: Collection lists show the empty state, and Collection pages will not show content bound to Collection fields.

So the export produces a site skeleton with the content surgically removed, plus a separate pile of CSVs if you remember to export each Collection by hand. Rebuilding the join between them is your problem. Webflow does not owe you a schema, and a CSV does not carry one.

Bubble is more generous on formats. You can export a data type to CSV, JSON or NDJSON, and the export runs on the same scheduler as your API workflows, which means a busy app queues the job behind everything else and emails you a link when it clears. Read their known issues before you trust the output: a date interval field stored as 172,800,000 milliseconds exports as the string "2 days", and the importer expects milliseconds back. That is one field type quietly changing units between the door out and the door in.

Files are the part people forget

Airtable made a change in November 2022 that still catches teams. Attachment URLs pulled through the CSV export or the API expire. Airtable commits only to keeping a download URL alive for at least two hours after you receive it, and says outright that using Airtable as a CDN is discouraged. The viewer URLs that do not expire only work for people signed into a base they can already access, which is no help to a migration script.

Run the arithmetic on a base with 9,000 attachments. Your export is a spreadsheet full of links with a two hour fuse, so you need a downloader that pulls every file before the clock runs out, keeps the record association intact, and re-uploads to storage you control. Nobody schedules that work, because "export the data" sounds like an afternoon.

Xano exports a table to CSV from the settings menu and emails you when it finishes, which is fine for a table and unhelpful for a backend. Endpoint logic, auth rules and background tasks are not rows. When we moved Stay World Class off Webflow and Xano, the data was the tractable half. The four stage ETL that mapped every legacy platform ID onto a PostgreSQL UUID took real engineering, because references have to survive the move or nothing downstream resolves.

What ownership looks like on the other side

The Stay World Class rebuild put the same product on Next.js, NestJS and Supabase. Lighthouse went from 55.91 to 91 out of 100 and LCP dropped 77%. Neither number is the point. The point is that after the migration the team could open the database, read the schema, write a query nobody at a vendor had anticipated, and restore last Tuesday's state from a backup they held themselves.

That is the whole difference. On a platform you have a copy of your rows. Off it you have the schema, the constraints, the migration history, the file bytes, and the logic that turns them into an application. Choosing the platform first was reasonable, and for years the export gap was an acceptable price for shipping months earlier. AI-assisted engineering has made custom builds fast enough that the price now buys less than it used to.

When staying put is the right answer

If your content is a few hundred CMS items and no attachments, the export gap is theoretical. You can move that by hand in a day whenever you decide to, so there is no reason to decide today. Same if your Airtable base is an internal tracker rather than the source of truth behind a customer facing product. Nobody needs to migrate a spreadsheet with opinions.

The one thing worth doing regardless of where you land: try the export before you need it. Pull the ZIP, pull the CSVs, and check whether an engineer who has never seen your app could reconstruct the data model from what came out. If they can, you are portable and you can stay as long as the platform serves you. If they cannot, you have learned that at a calm moment instead of during a renewal negotiation, which is the only time that answer is expensive.

Sources

Have a stack outgrowing itself?

Book a call and we'll walk you through how we'd approach your platform, priced fairly and estimated for real.