How to export your Base44 app without leaving half of it behind

Daniel Frishtik

Daniel Frishtik

Founder of EscapeBase44 ·

Yes, you can export your Base44 code. But the ZIP or GitHub repo is still wired to Base44, and it does not include the live contents of your app or a replacement for Base44's backend. Unless your app is basically a static website, you are still stuck in Base44.

If your plan was to export the app, put it somewhere else and cancel Base44, the export does not get you there. Your users still log in through Base44, your data still lives there, and the exported code still calls Base44 whenever the app needs its backend. You downloaded the files. You did not move the app.

A confused app owner holding exported code while trying to unplug a cable that is still connected to a Base44 server

What you get when you export a Base44 app

The ZIP and GitHub repo contain your React frontend and the source for your custom backend functions. The CLI export also includes entity schemas and some backend configuration. These are developer tools for continuing to build a Base44 app from your own computer, not an exit from Base44. You can run the frontend locally, but code from the ZIP or GitHub still calls your original Base44 backend. The CLI eject command creates a new backend on Base44 instead. Either way, Base44 is still running the app.

To leave Base44 and keep the app working, you still need two things:

1. Your app's live contents and configuration

  • Every database record and relationship, plus users, roles, login settings and private user records, and the ability for existing users to log in with the passwords they already have.
  • Uploaded files and assets, their access rules, and every Base44 URL that points to them.
  • Entity schemas, permission rules, secrets, and the deployment settings for backend functions.
  • Automation schedules, triggers, arguments and execution identity; agents, conversations and memories; connectors, custom integrations and their OAuth configuration.
  • Routes, visibility, domains, SEO, analytics and the rest of the app settings that tie everything together.

Getting all of this out still does not make it usable. The data and configuration have to be rebuilt in the shape the app expects. Records need to keep their IDs, relationships and field types. Users and private login data need the right collections and indexes. Schemas and permission rules still need to be enforced. Function and automation settings must be attached to new deployments. File URLs must be rewritten. Secrets, integrations and app settings must be restored and connected to the new system. Until that work is done, the app cannot use the data and configuration you extracted.

2. A replacement for Base44's backend

This is the much harder part. Base44's backend is the system that:

  • Logs users in, reads and writes data, and enforces schemas and permission rules.
  • Stores and serves files, serves backend functions, and fires automations.
  • Sends email, handles AI and image generation, runs agents, connectors and integrations, and delivers realtime updates.
  • Applies the app's settings and connects these services to the frontend and to one another.

All of this functionality lives on Base44's servers. The code you exported just calls those servers; it does not contain a replacement for them. That is why the export is not very useful by itself when you want to leave Base44 and keep the same app working.

A backend function shows the problem clearly. You may get the source for a function called sendInvoice, but the source alone cannot run. It still needs its entry point, runtime, dependencies, secrets, URL, permissions and any automation that triggers it. Even if you recreate all of that, the function was written to call Base44's database, users, files, email and other backend services. Until you replace those calls too, it still cannot work without Base44.

This is the lock-in. Base44 builds every app around its SDK and managed infrastructure, not as a self-contained system you can lift onto another host. Leaving means rebuilding the Base44 behavior your app relies on, recovering the live data and hidden configuration, and stitching the whole thing back together outside Base44.

Choose the export based on what you need

I want a code backup

Download the ZIP. It is Base44's best official code backup. If the app stores data, export every table as CSV too, but remember that those CSVs contain only the fields Base44 exposes.

I want to use VS Code, Cursor, Claude Code or a developer while staying on Base44

Use GitHub two-way sync. It is the cleanest way to edit locally and keep Base44 as the backend. This changes your editor, not your infrastructure.

I want a separate Base44-backed copy

Use the Base44 CLI's eject command. It copies more backend configuration, but creates another Base44 project with an empty database.

I want to leave Base44 completely

No official Base44 export does that. The ZIP and GitHub keep your original Base44 backend; eject creates another one. Leaving completely requires a migration.

Need the exact export steps?

Open the method you are using. ZIP, GitHub, eject, free downloads and CSV each solve a different job, so you only need the instructions for the one you chose above.

Builder or higherExport your Base44 app as a ZIPDownload a one-time backup of your code

In your app editor:

  1. Open Code from the top bar.
  2. Click the Export project as ZIP icon at the top right.
  3. Unzip the download into its own folder.

If you only wanted the files somewhere safe, put the ZIP somewhere you control. To back up the app's records too, export each data table separately.

To run the frontend locally, install Node.js, open a terminal in the project folder, run npm install, add the Base44 app ID and backend URL to .env.local, then run npm run dev. Those environment values point the downloaded frontend back to the original Base44 backend.

Verdict: the ZIP is Base44's best official backup of your code. Base44 still holds the live data, uploaded files and secrets, and still runs the backend the code calls.

Builder or higherConnect your Base44 app to GitHubEdit in VS Code, Cursor or Claude Code while staying on Base44

GitHub syncs code both ways between Base44 and a repository in your GitHub account.

  1. Open your app's Dashboard.
  2. Click the GitHub icon, then Connect to GitHub.
  3. Authorize the Base44 Builder GitHub app.
  4. Choose your GitHub account or organization and create the repository.
  5. Clone that repository onto your computer and install its dependencies.

Open the cloned folder in VS Code, Cursor, Claude Code, Codex or any normal editor. Changes merged into the main branch sync back to Base44. You then publish them from Base44 for users to see.

Entity schemas are managed in Base44 and are not included in the GitHub repository. Your live database records are not there either. The local setup still asks for a VITE_BASE44_APP_BASE_URL, which points the code back to Base44.

Verdict: GitHub is the best official option for version control, AI coding tools and developer collaboration while the app remains on Base44. It is not a migration off Base44.

Command lineUse the Base44 eject commandStart a separate Base44-backed project with an empty database

Despite its name, base44 eject does not eject your app from Base44:

npm install -g base44@latest
base44 eject

Choose the existing app and a destination folder. The command downloads the React frontend, entity schemas, backend functions and configuration files. Together, those files start a separate version of the project that you can work on from your computer.

The command creates a new backend on Base44 with a new app ID. That new database is empty. The schemas come across, but none of your customers, orders, posts or other records do. Your original app stays untouched, and the two Base44 projects are separate.

Use eject if you want branches, pull requests and full local control over the code while continuing to use Base44 as the backend. It is not a database backup, and it does not eject you from Base44 itself.

Free planExport Base44 code for freeCopy the workspace files that Base44 exposes in your browser

Base44's official ZIP and GitHub buttons are paid features. On Free, your two practical choices are copying files manually or using a browser extension that reads the project tree and turns those visible files into a ZIP.

A downloader saves you from creating every folder and copying every file by hand. The result can be incomplete or miss images and videos, so inspect it before relying on it. Before giving an extension access to private code, check who made it, what permissions it requests and whether it sends the code anywhere.

A browser downloader can only copy the files exposed in the Base44 editor. The live contents of your app and Base44's backend are not in that file tree.

Verdict: use a downloader if you need a free frontend/code snapshot or want to experiment locally. Do not treat it as a complete backup or a finished migration.

One table at a timeExport your Base44 dataView a table in Excel or Google Sheets

The code export does not include your live records. Export each table separately:

  1. Open Dashboard.
  2. Choose Data.
  3. Select the table you want.
  4. Open More Actions and click Export.

Base44 downloads the rows and fields it exposes for that table as a CSV you can open in Excel or Google Sheets. Repeat this for every table you care about. If the dashboard only shows 5,000 rows, the CSV still includes every row Base44 exposes for that table. Hidden and private fields are not part of it.

Those CSVs are spreadsheet copies, not a full database you can plug into another app. Relationships between tables need to remain intact. File fields may point to files still hosted by Base44. Even the User CSV does not contain the private authentication record behind each user or preserve their ability to log in with their current password. Agents, conversations, automations and secrets are not included either.

The ZIP is the best official code backup. For the closest thing Base44 offers to a broader backup, keep the ZIP, a CSV from every table and a separate copy of every file your users uploaded. Even that is not a restorable copy of the full app.

Your exported app can run somewhere else and still depend on Base44

Say your app has a Save order button powered by a backend function. You put the exported code on a new host, open its URL and click the button:

  1. The button runs from the frontend on your new host.
  2. The Base44 SDK calls the saveOrder backend function on Base44's servers.
  3. That function checks the logged-in user and permissions, then writes the order to Base44's database.

Your new host is serving the screen. Base44 is still running the app behind the screen. The same pattern applies when the app logs somebody in, reads a table, uploads a file, calls an agent, starts an integration or subscribes to realtime updates.

The new URL may load and every button may work precisely because Base44 is still doing the invisible work. Cancel your Base44 subscription, and Save order stops working.

What it takes to get the whole app out

If your project is a static landing page with no login, database, functions, files or integrations, the official export may be almost everything you need. Put the frontend on normal hosting, remove any unused Base44 setup, and you can be done. I would not pay someone to “migrate” that for you.

For an app with real users and data, this means rebuilding the parts of Base44 it relies on. You need to recover the app's data and configuration, recreate the backend behavior on infrastructure you control, reconnect every piece and change the frontend to use it.

You can do it yourself if you are technical enough and your app is simple enough. Claude Code or Cursor can help too. Ask for a full migration, not a visual rebuild. Then judge and fix what the AI misses, and test login, permissions, data writes, uploads, functions, automations and integrations with real accounts and real data.

Your DIY migration checklist

  • App settings, authentication settings, visibility and runtime configuration
  • Every entity schema, record, relationship and row-level permission rule
  • Users, login methods, roles and the private authentication state behind them
  • Function files, entry points, dependencies, secrets and new deployment URLs
  • Automation schedules, entity triggers, arguments and execution identity
  • Uploaded files, storage, private-file access and every URL that points to Base44
  • Email, AI, image generation, agents, conversations, memories and realtime behavior
  • Connectors, custom integrations, OAuth configuration, tokens and private headers
  • SEO files, analytics, app logs, domains and deployment configuration
  • Every Base44 SDK call in the frontend and functions

You can hand the same checklist to a good developer. But if your app relies on more than a basic database, the pieces start depending on one another: authentication and permissions control who can see each record, functions rely on secrets and files, automations call integrations, and agents carry state.

At that point, you are rebuilding Base44 outside Base44. Every piece has to work exactly as it did before. That can mean weeks of chasing edge cases and retesting every flow. Get one detail wrong and the app can still look finished, right up until a customer sees someone else's data, an automation silently stops running or your existing users cannot log in. Then you are back in the code, trying to figure out which invisible part of Base44 you missed.

I know because I went through this myself. I migrated several Base44 apps by hand and spent months chasing Base44-specific edge cases. I ended up reverse-engineering Base44's entire backend, building a compatible replacement and automating every step of the migration. That became EscapeBase44.

You can migrate the whole app without rebuilding it

EscapeBase44 moves the existing app as is: frontend, backend, database, users, auth, functions, automations, integrations, agents, conversations and memories, AI and image generation, email, files and storage, permissions, SEO and the weird configuration holding it together. The whole app is deployed automatically onto normal provider accounts you own and choose.

Base44 gives you a GitHub "export" that depends on Base44 and is unusable outside of it. EscapeBase44 gives you the complete codebase of your app, including your own backend, in a private repository in your own GitHub. The repository is wired to your providers: push a change to main, and the app redeploys automatically. It is also very human-friendly & AI-friendly: the repository includes clear instructions for local running and for changing the app, and gives Claude Code, Cursor and any other AI tools everything they need to start working on it.

After the migration, the whole app runs on infrastructure you own instead of Base44, with everything intact and working exactly as before. You can keep building with AI, edit the repository yourself, move to another provider later or hand it to any developer. You own the app, its complete codebase and the infrastructure it runs on, with no Base44 or EscapeBase44 in the picture anymore.

An export gives you the files. A migration is what gets the app out of Base44.

See how the migration worksAlready sure?

Base44 code and data export FAQ

  • Can you export code from Base44?

    Yes. On Builder or higher, you can download a project ZIP or connect the app to GitHub. But the export does not include the live contents of your app or a replacement for Base44's backend, so it is not enough to move most apps off Base44.

  • Does Base44 export backend code?

    It exports your custom backend-function source, and the CLI eject command also copies entity schemas and some backend configuration. It does not export an independent version of Base44's backend, which runs authentication, database APIs, permissions, files and storage, email, AI and image generation, agents, integrations, automations, realtime behavior and the configuration connecting all of them.

  • Can I download my Base44 app as a ZIP?

    Yes, on Builder or higher. Open Code in the app editor and click the Export project as ZIP icon at the top right. The ZIP is a code snapshot, not a copy of your live data or a self-contained deployment.

  • Can I export Base44 code for free?

    Base44's official ZIP and GitHub options require Builder or higher. Browser extensions can copy the workspace files visible in your browser on the Free plan, but they can miss files or media and cannot export the live contents of your app or Base44's backend.

  • Can I open Base44 code in VS Code, Cursor or Claude Code?

    Yes. GitHub two-way sync is the cleanest official workflow: clone the repository and open it in your preferred editor. The local app still uses the Base44 SDK and hosted Base44 backend unless you replace those dependencies.

  • Does Base44 GitHub export include the database?

    No. GitHub contains code files, not the records in your live Base44 database. Entity schemas are also excluded from Base44's GitHub two-way integration. Export each data table separately as CSV if you need a backup of the records.

  • How do I export Base44 data to Excel or CSV?

    Open Dashboard, choose Data, select a table, open More Actions and click Export. Base44 downloads that table as CSV, which opens in Excel or Google Sheets. Repeat this for every table you need.

  • Does base44 eject move my app off Base44?

    No. The CLI eject command creates a new local project and a new backend on Base44. It copies frontend code, schemas, functions and configuration, but the new database is empty and the result still uses Base44 infrastructure.

  • Can I host exported Base44 code on Vercel?

    Yes, but hosting the frontend on Vercel does not remove the Base44 dependency. Unless you replace the Base44 SDK calls and migrate the data, authentication and other backend services, the Vercel-hosted app still talks to Base44.

  • How do I remove every Base44 dependency?

    You have to replace the Base44 backend your app relies on, move the live data, users and files, recover the schemas and configuration, rebuild functions and automations with their secrets and triggers, reconnect integrations and agents, and point the frontend at the new system. That is a migration, not a code export.