Export the project
On the Builder plan or higher, open Code and choose Export project as ZIP, or connect GitHub. You receive the React and Vite source, not a site that is already built.
Limited-time offerPro & Max plans — 20% offSave 20% on monthly and yearly billing.
Save 20% on monthly and yearly billing.
Base44 export hosting · Updated October 2, 2026
Exported Base44 code is a React and Vite project. Build the frontend, zip that static output, and HTMLShare turns it into a browser link for a client review, a QA pass, or a temporary handoff. This is a preview of the built files, not a Base44 migration.
Export the project, build the static frontend, ZIP the output, upload it to HTMLShare, then share the URL.
On the Builder plan or higher, open Code and choose Export project as ZIP, or connect GitHub. You receive the React and Vite source, not a site that is already built.
In the project folder, run npm install. Base44’s project docs use that command before npm run dev. If you use base44 eject or base44 build, the CLI requires Node.js 20.19.0 or higher.
Run npm run build. When the project is linked and the bundle must carry the Base44 app ID, run base44 build instead. That command runs the project build with the ID injected.
Compress the build folder. Base44’s site config example uses ./dist. index.html should sit at the ZIP root, or directly inside that one folder. Leave src, functions, and node_modules out.
Upload the ZIP to HTMLShare and open the preview. Reviewers do not need a Base44 account to see the static files you uploaded.
Base44’s quick start says you can export the app as a ZIP or to GitHub on the Builder plan or higher. The project structure docs then describe a standard React app built with Vite: pages, components, the SDK client, and a source index.html. HTMLShare can host the folder the build writes. It cannot turn the source ZIP into a website.
Export project as ZIP
After you build it
Builder plan or higher. This is the React and Vite codebase, including source index.html, not the production build.
GitHub 2-way sync
After you build it
Builder plan or higher. Clone the repo, install, and build. Entity schemas stay in Base44 and are not in that repository.
base44 eject
After you build it
Creates a separate Base44 app with an empty database. Schemas are copied. Records are not.
dist/ after the build
Yes
The static HTML, CSS, JavaScript, and assets HTMLShare can publish. Confirm the folder named in site.outputDirectory.
Auth, data, functions, files
No
Those stay on Base44. A static upload does not migrate them. Export table data separately as CSV when you need the records.
Guest uploads: 1 MB HTML, 3 MB ZIP, and the preview expires after one hour. Signed-in projects: 5 MB for one HTML file, 20 MB for the whole project. Free links last 1 day, Pro links last 30 days, and Max links stay up.
From the exported folder, install dependencies and run the production build. Base44’s React quickstart says npm run build writes optimized files to the output directory, typically dist. If base44/config.jsonc exists, use the path in site.outputDirectory. The site deploy docs use ./dist as that example.
npm install npm run build # or, in a linked project: base44 build
base44 build runs the project’s build command with the linked app ID injected, so the compiled frontend can still reach that Base44 app. npm run dev is the local preview Base44 documents. It is not the folder you upload.
GitHub is optional for this preview. Builder-plan editors can download the ZIP, build locally, and upload the output. That path is for a prototype, a frontend check, or a client review. It is not a substitute for Base44 publish or for base44 site deploy, which uploads the same kind of build back to Base44 hosting.
A frontend export is not a backend migration. Search the source for base44.entities, base44.auth, base44.integrations, and base44.functions before you treat the preview as a standalone app. Those calls keep using Base44 until you replace them.
base44.auth calls still talk to Base44. A static preview does not create accounts or move sessions.
The frontend can still request Base44 data. The ZIP does not contain those records. Eject copies schemas into a new, empty database.
functions/ holds server TypeScript. HTMLShare does not run it. A button that calls a function still needs the Base44 function, or a replacement you host elsewhere.
Email, LLM, file, and connector calls that go through the Base44 SDK keep using Base44’s servers. Secrets are not in the export.
Boundary: base44 eject clones the app into a new Base44 project and leaves that database empty. The original app is unchanged. A preview of an ejected build can show the interface against empty data even when the original app still has records.
Quick client or stakeholder review
Base44 preview
Standalone preview URL
The reviewer opens a browser link and does not need a Base44 account.
Share a build without GitHub
Export project as ZIP, then build
Upload the dist ZIP
HTMLShare publishes the static files. It does not create a repository.
Keep using the Base44 backend
Best fit
Frontend only
The built page can still call the original app. The database and functions are not in the ZIP.
Production domain, data, and CI
Base44 publish, or site deploy
Not this workflow
A preview link does not replace auth, storage, functions, or a deployment pipeline.
Deep links that survive a refresh
Base44 serves the SPA
Test the root URL
A Vite app that assumes the site root can miss routes under a project path.
Choose HTMLShare for a fast static preview. Choose Base44, or a host that can run the backend, when you need production traffic, saved data, login, functions, or CI.
Base44 project, then a local build, then HTMLShare, then one browser URL. The client can open it on a phone without installing Node or running the Vite dev server.
The preview shows the files you uploaded. Later edits in Base44 stay in Base44 until you export, build again, and replace the project.
Point the client at copy, layout, flow, or mobile width. They do not need GitHub, the Base44 editor, or a local checkout.
Pro and Max can replace the project at the same URL. Free projects and guest uploads cannot. A guest preview lasts one hour.
Both builders hand you a Vite frontend that has to be built before HTMLShare can publish it. The runtime each export still calls is different, so a Lovable checklist does not describe a Base44 app.
What you download
React and Vite source, plus functions in the editor export
Vite source from Download codebase or Git sync
Before HTMLShare
npm run build, or base44 build when the app ID must be injected
npm run build, with Cloud VITE_ values present at build time
What stays behind
Records, auth, functions, storage, and SDK calls
Lovable Cloud, database, auth, storage, and Edge Functions
Plan gate for the ZIP
Builder plan or higher for ZIP and GitHub
Paid plan for Download codebase; Git sync is separate
The browser got a source index.html, or a built index.html without its bundles. Build first, then upload the output folder rather than the project root.
Preview a Vite project onlineThe editor ZIP contains src, package.json, and Vite’s development index.html. Those files are not the static site. Run the build and zip the output.
JavaScript not workingbase44 build injects the linked app ID before compiling. A plain npm run build can emit a frontend that has nowhere to send SDK calls. Rebuild with the ID the project expects. HTMLShare cannot add it later.
The page can load while entities, auth, integrations, or functions still call Base44. If that app is private, paused, or pointed at an ejected empty database, the UI appears and the data does not.
HTMLShare vs VercelKeep the assets folder next to index.html. Links that start with a drive letter or file:// only work on your computer.
Share HTML with assetsPages such as Settings.jsx become /settings in the Base44 app. Send the root preview URL. A deep route can fail when the app expects the domain root and the preview lives under a project path.
Preview index.html onlineHTMLShare accepts index.html at the ZIP root, or inside one enclosing folder such as dist/. A path like export/dist/index.html is too deep. Zip the build folder itself.
After the build, zip the output folder. Check that index.html exists, asset paths are still the ones the build wrote, and the archive is within the 20 MB signed-in limit.
dist/ ├── index.html ├── assets/ │ ├── index-[hash].js │ └── index-[hash].css └── favicon.ico
Uploading dist as the only top-level folder is fine. If index.html sits two levels down, move the build folder up and zip it again. Before you send the link, open it and confirm the stylesheet, script, and images load.
FAQ
Yes, for the built frontend. Base44 documents a ZIP download and a GitHub export on the Builder plan or higher, and both produce a React and Vite project. Build that project, upload the static output, and share the preview URL. The Base44 backend, database, and functions stay on Base44 unless you migrate them separately.
Only when the ZIP is the built static output, with index.html at the archive root or inside one enclosing folder. The editor’s Export project as ZIP is source code. HTMLShare does not run npm install or npm run build, and it rejects source files such as .jsx, .tsx, .ts, and package.json.
Yes. Base44’s project structure docs say Base44 apps are standard React apps built with Vite. A typical export includes src, package.json, vite.config.js, and a source index.html. That index.html is the Vite entry, not a finished static site.
Yes, for a normal Base44 app. Run npm install, then npm run build. Base44’s React quickstart says the production files land in the output directory, typically dist. If the project is linked and the bundle must include the Base44 app ID, use base44 build, which runs the project build with that ID injected.
Yes, for a static preview. On the Builder plan or higher, open Code and use Export project as ZIP, build the frontend locally, and upload the output folder. HTMLShare does not create a repository. GitHub 2-way sync is a separate Builder-plan option when you want the source kept in a repo.
The code export is not a data export. Base44’s mobile docs say you can download frontend code and functions, and export database collections separately as CSV. The CLI eject command copies entity schemas into a new project and leaves that database empty. User records, uploaded files, secrets, and integrations are not inside the static build.
Yes, when the built page can still reach the original Base44 app. Uploading dist does not copy auth, entities, functions, or storage. If the bundle still calls the Base44 SDK, those requests keep depending on that backend. A blank data view usually means the frontend loaded and the backend call did not.
The usual cause is uploading the source ZIP instead of the build, so the browser never receives the compiled JavaScript and CSS. Other causes are a ZIP whose index.html is nested more than one folder deep, asset paths that still point at your computer, or a build that ran without the Base44 app ID the SDK expects.
Yes, when the upload is static and stays within the size limits. Guest uploads are 1 MB for one HTML file and 3 MB for a ZIP. Signed-in projects accept one HTML file up to 5 MB and 20 MB for the whole project. HTMLShare serves those files as a noindex preview link.
No. Use it for prototype review, frontend QA, a client handoff, or a temporary URL. A production migration still needs a backend, database, authentication, functions, environment management, and a deployment pipeline. Base44’s own site deploy, or another full app host, is the path for that.
Zip the static build, stay within the 20 MB project limit, and send a browser URL for review. Leave the Base44 backend where it is until you actually migrate it.