Which AI builder ships the safest apps?
We ran Shippable's static source checks on 1,463 public GitHub repos across five AI builders — reading committed code only, never touching anyone's live app. The Supabase-backed generators leak hardest; v0 is the safest of the five.

| Builder | Apps | ≥1 issue | Critical | Most common leak |
|---|---|---|---|---|
| Bolt | 295 | 73% | 36% | RLS with no fixed search_path (50%) |
| Lovable | 295 | 51% | 20% | .env committed to git (28%) |
| Cursor | 285 | 28% | 5% | secrets from Math.random() (12%) |
| Replit | 290 | 25% | 8% | secrets from Math.random() (14%) |
| v0 | 298 | 19% | 4% | secrets from Math.random() (8%) |
Full breakdown for each builder — tap a name below or in the table.
Bolt
bolt.new scaffolds Supabase with migrations — and those migrations ship RLS misconfigurations more often than any other builder.
Lovable
Supabase-backed like Bolt; the standout is secrets and .env files committed straight to the repo.
Cursor
An editor, not a one-shot generator — most repos are hand-steered, so backend misconfigs are rarer.
Replit
Mixed bag of hand-built projects; issues skew to weak secret generation and fallback secrets.
v0
Next.js/Vercel output, usually no database layer — so the whole class of RLS and storage leaks mostly doesn't apply.
See which of these your app ships
Paste your app's URL. It's free, read-only, and takes about a minute.
Or dig into the Lovable breakdown: the State of Lovable Security.
How we measured this
For each builder we found roughly 300 public GitHub repositories by its fingerprint — Lovable's lovable-tagger, Bolt's .bolt/ folder, v0's README marker, Replit's .replit, Cursor's .cursorrules — and ran Shippable's static source checks over each one's committed files. We read source only: no live app was scanned and nothing was probed over the network. Figures are the share of repositories where a check fired at least once, aggregated so no repository, owner or finding is identified.
One caveat on the ranking: Lovable, Bolt and v0 are app generators, while .replit and .cursorrules mark repos edited in those tools — many are hand-built or non-app projects. Replit and Cursor look safer partly because that population is different, not only because the output is.