Skip to main content
NinjaNext

AI-Built App Rescue

Take your Bolt app from prototype to production

Bolt builds and previews the whole application in your browser, which is why it feels so fast and why the first real deployment is where the surprises arrive. The pattern we see most is not bad code: it is configuration. Bolt projects are built with Vite, and Vite has one rule about which values reach the browser that decides whether your database is protected or wide open.

Free first look, fixes from $500 · fixed quote after the review, same as every rescue

Is it time?

Signs a Bolt app is ready for this

Any one of these on its own is usually enough reason to have the code read properly.

  • You are about to take payments, or real customer data is already in the app
  • The app works in the Bolt preview and behaves differently once deployed
  • You added a key to make an error go away and are not certain where it ended up
  • You need a custom domain, staging and a team that can deploy without you
  • Someone asked whether one customer can read another's records and you could not answer

Specific to Bolt

What this stack gets wrong, and what we do about it

The rest of the work is the same as any takeover. These are the parts that are not.

Getting the project out of the browser

Bolt runs the editor, the install step and the dev server inside the browser tab, so the first job is to get a copy that lives somewhere else. The project can be downloaded as an archive or pushed to GitHub, and the repository is the version everything afterwards depends on.

That copy is also the first honest inventory. Until the project builds on an ordinary machine from the repository alone, nobody knows whether what you have is the application or just the part of it that happened to be open.

  • Push to a repository under the company's GitHub account rather than a personal one
  • Confirm the project installs and builds outside Bolt before any deadline depends on it
  • Agree which side is authoritative once a developer is also committing changes

The prefix that decides what the public can read

Bolt's own documentation shows three configuration values side by side for a Supabase project: the URL and anonymous key, both prefixed `VITE_`, and the service-role key, deliberately without that prefix. The prefix is not a naming convention. It is the switch that tells the build tool to copy a value into the JavaScript the browser downloads.

So a value renamed to start with `VITE_` becomes public the moment the site is deployed, whatever the file it was written in. This is the single most consequential thing to know about a Bolt project, because adding the prefix is also the quickest way to make a stubborn error disappear during development, and the error does come back as something far worse.

  • Anything prefixed for the client is public: treat it as published, not as configuration
  • A key that has already shipped is rotated, not renamed, because copies are already out there
  • We check the built output rather than the source, since that is what users actually receive

The key that ignores your security rules

Permissions, and the rules the documentation does not name

Bolt creates a Postgres database for a project when it needs one, and can also connect to a Supabase project you own. Its introduction to databases describes authentication and permissions deciding who can read and change data, and warns that anyone holding your keys can do both.

What that page does not name is row-level security, which is the mechanism that actually enforces those permissions in Postgres. That gap matters because an app talking to the database from the browser has nowhere else to enforce anything. If the rules are absent, the screens are the only thing standing between one customer and another's records, and changing a number in a request walks straight past them.

Why one user can read another user's data

What the one-click deploy does not carry

Publishing a Bolt project to a host is genuinely one step, and that is the problem: it sets an expectation that everything travelled. Configuration values do not. They are set in Bolt, and they have to be set again in whatever runs the site, which is why a freshly deployed app so often loads and then fails the moment it touches the database.

The things a business needs around a deployment are also not part of that step. A custom domain, a staging copy to try changes on, a way for someone else to ship while you are away, and a record of what was deployed when, all have to be put in place deliberately.

Where it starts

What the free first look covers

The same review we run on any takeover, pointed at the things a Bolt app usually gets wrong.

  • Whether any key has reached the browser through the client-side prefix, checked in the built output
  • Whether one user can read another's data, tested with two accounts rather than assumed
  • Whether the project builds from the repository alone on a clean machine
  • Whether payments, if there are any, are confirmed somewhere other than the browser
  • What to keep, what to fix and what, if anything, is genuinely worth rebuilding

What we do not promise

If the prototype is mostly screens with little working logic behind them, a fresh first release is usually faster and cheaper. We will tell you that after the review rather than patch something that should be rebuilt.

FAQs

Bolt rescue: common questions

Can you work with a Bolt project, or do you start again?

We work with it. Bolt produces a conventional project that builds with ordinary tooling, and most of it is worth keeping. The review tells you which parts are sound and which would fail with real users. A full rebuild is the exception.

I pasted a key into the project to fix an error. How bad is that?

It depends entirely on which key and whether it reached the browser. If it was given the client-side prefix and the site has been deployed, assume it is public and replace it rather than moving it. Checking takes minutes and is the first thing we look at.

Can I keep using Bolt after you have worked on it?

Usually yes, for a while. What changes is that the flows touching money and customer data have tests around them, so a later prompt that breaks one fails a check instead of a customer. If the project has moved to your own repository and host, we agree up front which side is authoritative.

Do I have to move off Bolt's database?

Not necessarily. It is Postgres either way, and the decision is about who holds the account and the billing rather than about the technology. It is far easier before you have a real user base, which is why it is worth deciding now rather than later.

Do you only work with Bolt apps?

No. The same review applies to anything that exports code, including Lovable, Replit, v0 and Cursor. This page exists because Bolt's build configuration raises a specific question the others do not.

More general questions are answered on the AI-built app rescue page.

Let's build it

Send us your Bolt app

Share your repository or a code export. Within 48 hours we reply with what to keep, fix or rebuild, and a fixed quote for the work. No obligation.