miinideckmiinideck
PricingUse casesBlog
Sign in
How-to & formats

Get a single-file (or static) export out of bolt.new for a stable link (2026)

Bolt.new previews live behind a session URL that changes and can lapse. How to pull a static export — one HTML file or a built dist folder — out of Bolt and turn it into one stable, private link.

By miinideck·September 12, 2026·6 min read
TL;DR
  • A bolt.new preview lives behind a session URL — a live WebContainer that serves your app while the tab is open. It's a working address, not a permanent home, which is why the link you sent can change or go cold.
  • For a stable link you want a static export: either one self-contained index.html Bolt hands you, or the built dist folder a Vite/framework project compiles to. Both are finished files, not a running session.
  • Honest boundary: if your Bolt app talks to a server, database, or secret, a static export can't carry that half — Vercel or Netlify run code; a static link owns the self-contained slice.

A bolt.new preview is a live WebContainer — a full dev environment running inside the browser tab, serving your app the same way npm run dev serves it on your own machine. That's why it feels instant. It's also why the URL you paste into a message has a half-life. Close the tab, hit an idle timeout, or start your next project, and the address goes cold. The work didn't break — the session it was attached to did.

So the deliverable isn't the preview. It's the build the preview was running. This post is about pulling that static export out of Bolt and turning it into a link that holds still.

Why the bolt.new preview URL isn't the deliverable

The preview pane is a session, not a destination. That has three consequences for anything you send to another person:

  • The address is tied to your session. Start a new project, hit an idle timeout, or close the tab, and the URL you shared can stop resolving. The recipient gets a dead link, not your app.
  • It serves dev, not a finished build. A preview reflects the project mid-edit. Whatever you change next, the person on the other end sees — or sees half-loaded.
  • It assumes the container is up. No running WebContainer, no page. There's nothing to point at once the session is gone.

The fix is to stop sending the session and start sending the build: the finished output, frozen, in files you control.

Two shapes a Bolt export comes in

Bolt projects don't all export the same way, and which one you have decides what you hand off.

Shape one — a single self-contained HTML file. If you ask Bolt for a one-page build with styles and scripts inlined (try the prompt: "make this a single self-contained index.html, no external dependencies"), you can download that one file from the file tree. Everything lives inside it. This is the cleanest possible deliverable: one file, opens anywhere, nothing to wire up.

Shape two — a built dist folder. Most "build me an app" projects in Bolt are Vite or framework apps. They don't live as one file — they compile to one. Run the build (npm run build in Bolt's terminal, or in a local clone) and you get a dist or build folder: an index.html plus hashed JS and CSS bundles and an /assets directory. The files reference each other by relative path. That folder, intact, is your static export.

The difference matters for how you move it, not whether it works. Shape one travels as a file. Shape two has to travel as a folder — keep the structure, because flattening it breaks the relative paths the bundler wrote.

Single index.html? Drop the file. A dist folder? Zip it and drop the zip — it unpacks and serves with the relative paths intact. One private link in seconds, no build step, no account.

Drop your Bolt export — file or folder

The honest part: when a static export can't carry everything

Some Bolt apps are pure frontend — a calculator, a landing page, an interactive chart, a tool that runs entirely in the browser. For those, the static export is the whole app. The page, its logic, and its data all live in the files, so a static link is a complete, faithful copy.

But Bolt also builds apps with a back end. If your project calls an API route, reads from a database, signs in users, or holds a key it isn't supposed to expose, then npm run build only freezes the frontend. The server half doesn't come along — it needs a host that actually runs code on request.

That's not a static-hosting job. Vercel and Netlify are the right tools for an app with a live backend: they run your server functions, manage your environment secrets, and keep the data layer alive. Reach for them when the app genuinely needs a server.

A static link owns the other slice, and it's a wide one:

  • The app is self-contained (no server calls), so the build is the complete thing.
  • You're sharing a frontend snapshot for review — the UI and flow, with mock or hard-coded data — and the live backend isn't part of what you're showing yet.
  • You want the finished look on a stable address while the backend gets sorted out separately.

Knowing which half you're sending is the whole decision. Self-contained or a snapshot → static link. Live data and accounts → a backend host.

From export to a link that holds still

Once you have the static export, the move is short. You don't need a deploy pipeline for a finished build — a deploy stands up a host, a build step, and a public address, which is more than a review or a handoff needs.

  1. Get the export. Download the single index.html, or run the build and grab the dist folder.
  2. Open it locally once. Double-click index.html. If it renders the way the preview did, the build is clean. If a chart or font is missing, it was loading from somewhere external — worth catching before you send it.
  3. Drop it for a link. A single file drops as-is. A dist folder zips and drops — it unpacks server-side and serves index.html as the entry, relative paths intact, exactly as it ran locally.

What you get back is one unguessable link that's private by default and kept out of search engines. It points at the build, not a session, so it doesn't lapse when you close a tab or start your next project. The viewer needs no account — they click and it opens.

From there the controls are yours: add a password if the build is sensitive, set an expiry if it's a time-boxed review, or give it a link that simply never expires if it's a keeper. None of it requires touching the Bolt project again — the export stands on its own.

The short version

A bolt.new preview is a live session, so its URL is a working address, not a home. Export the build instead — one self-contained index.html, or the dist folder a Vite project compiles to. If the app needs a server, send it to Vercel or Netlify and let them run the code; if it's self-contained or you're sharing a frontend snapshot, drop the static export and get one stable, private link that holds still after you've moved on to the next prompt.

More in How-to & formats

Export a self-contained HTML from a Cursor project (2026)

Cursor builds projects as folders of linked files, not one shareable artifact. Three reliable ways to collapse a Cursor build into a single self-contained HTML you can drop on a private link — and the one case where you deploy instead.

September 8, 2026·7 min read

Export a shareable build from Replit without keeping the repl awake (2026)

A Replit webview link dies when the repl sleeps. If your build is static, you can lift the output out of the container and serve it from a link that never spins down. Here is the export path — and the honest line where it stops applying.

September 9, 2026·6 min read

Check the page on a real phone before you send it (2026)

Desktop preview says the page is fine. The phone disagrees, and you find out after the client already has the link. Here's the loop that catches it first — and the part of the problem no host can fix for you.

August 28, 2026·7 min read

Send your own private link.

miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.

Try it free →See pricing
miinideck

HTML files, finally as links — for AI builders, agencies, and consultants. Default-noindex, default-private, default-yours.

Product

  • Pricing
  • Use cases
  • Try it free

Resources

  • Blog
  • Free tools
  • Featured on
  • Report abuse

Legal

  • Privacy
  • Terms
Listed onmiinideck listed on Product Huntmiinideck listed on Faziermiinideck listed on TheSaaSDirmiinideck listed on AIToolHuntmiinideck listed on LaunchNest
© 2026 miinideckMade for people who don't want their work indexed.