aliteq.

Are most vibe-coded apps leaving their database open? What a 30,998-app scan found, and how to check yours

Not most apps, but more than half of the Supabase apps a scanner could reach. The real numbers behind the headline, read on the reports' own pages, and the two-minute check that tells you whether your Lovable, Bolt or v0 app is one of them.

Aliteq TeamUpdated Published 9 min read
Is your app open? Thumbnail with the official Supabase logo, a screenshot of Reeve's report showing 57%, and a card reading 2,096 of 3,680 Supabase apps with a readable table, read Nov 3, 2026
Share

Are most vibe-coded apps leaving their database open? No, but a lot of Supabase apps are. In the largest public scan so far, 2,096 of the 3,680 Supabase-backed apps the scanner could check (57%) let a stranger read at least one table with no login. That's not 57% of all vibe-coded apps: the scan covered 30,998 apps, and most of them either don't use Supabase or couldn't be checked from outside. Whether yours is one of them takes about two minutes to find out, in your own Supabase dashboard. Every number below was re-read on the reports' own pages on November 3, 2026.

The two scans side by side (read on their own pages, Nov 3, 2026)

Published

Reeve
Aug 19, 2026 (scanned Aug 12-14)
Symbiotic Security
Jun 2, 2026

Apps scanned

Reeve
30,998 (8,429 name a Supabase project)
Symbiotic Security
1,072 Supabase apps

Apps whose database could be checked

Reeve
3,680
Symbiotic Security
Not stated separately

Readable without logging in

Reeve
2,096 had at least one readable table (57%)
Symbiotic Security
39 had tables fully readable with the public key

Tables named like personal data

Reeve
394 apps
Symbiotic Security
34 sites exposed sensitive columns (emails, tokens, phone numbers)

Builders covered

Reeve
Lovable, Bolt, v0, Replit, Base44
Symbiotic Security
Lovable, V0, Bolt.new, Replit, Windsurf

Who ran it

Reeve
Reeve (sells app monitoring and backups; free scanner)
Symbiotic Security
Symbiotic Security (sells security tools)

Is my app one of them? The two-minute check

Open your own Supabase project and look. No outside scan can do this as well, because only you know which tables are meant to be public. Three ways, quickest first:

  1. Supabase Security Advisor. In your Supabase dashboard, open the Security Advisor (it sits next to the Health and Performance advisors). A table in the public schema with Row Level Security off shows as lint 0013, level ERROR, "Table publicly accessible". Supabase's own description of that error: "Anyone with your project URL can read, edit, and delete all data in this table because Row-Level Security is not enabled."
  2. One SQL query. In the SQL editor, this lists every table in the public schema and whether RLS is on. Any row with rowsecurity = false is a table the anon key can reach.
  3. If you built on Lovable, its docs say a Quick scan "runs automatically every time you publish" and checks "your database access rules". Read what it found before you dismiss it. Lovable also says these tools "cannot guarantee complete security."
-- Which tables in the public schema have Row Level Security off?
select tablename, rowsecurity
from pg_tables
where schemaname = 'public'
order by rowsecurity, tablename;
Screenshot of Supabase's Database Advisors documentation for lint 0013: Level ERROR, Summary Table publicly accessible, Ramification: Anyone with your project URL can read, edit, and delete all data in this table because Row-Level Security is not enabled
The error to look for in your own Security Advisor, from Supabase's docs (supabase.com/docs, lint 0013), read November 3, 2026. · Screenshot of supabase.com by aliteq

Two other advisor messages are worth knowing. "Security policy not enforced" (lint 0007) means you wrote a policy but never turned RLS on, so the policy does nothing. "No access rules defined" (lint 0008) means RLS is on with no policies, so nothing can be read or written through the API. That's safe, and it's also why your app may suddenly show empty lists. Both are INFO level in Supabase's list.

If you find a table with RLS off, turn it on and then write the policy that lets the right people in. Supabase's docs put the rule plainly: "Enable RLS on every table in an exposed schema." Once it's on, "no data is accessible through the API when using a publishable key, until you create policies." The error you'll likely hit next is explained in new row violates row-level security policy. Don't switch RLS off to make that error go away.

alter table public.your_table enable row level security;

What did the 30,998-app scan actually measure?

Whether a stranger could read a table, without reading any data. The report is The State of Vibe-Coded App Security 2026 from Reeve. Its method: "We looked for live apps built with Lovable, Bolt, v0, Replit or Base44," then ran each through the same nine checks (security headers, cross-site sharing, source maps, database access, exposed secrets, storage buckets, domain renewal, SSL certificate and private files). For the database check it says "The check never reads a row." The scan ran Aug 12 to 14, 2026 and was published Aug 19. Reeve also notes "The sample leans towards newer apps."

What is the 57% a percentage of?

The Supabase apps the scan could reach, not all vibe-coded apps. This is the part the headline drops. Of the 30,998 apps, 8,429 name a Supabase project. The database check got an answer from 3,680 of them. In Reeve's words: "The rest sit behind backends we do not follow, so we leave them out." And: "Fewer than half the apps that name a Supabase project can be checked at all." Of the 3,680, 2,096 had at least one readable table. That's the 57%.

Screenshot of Reeve's report: 57%, 2,096 of 3,680. 8,429 apps in this sweep name a Supabase project. The check got an answer from 3,680 of them. Below: 1,702 apps expose tables with generic or technical names; 394 apps expose tables named like personal data
Where the 57% comes from: 2,096 of 3,680 checkable Supabase apps (reeve.page, read November 3, 2026). · Screenshot of reeve.page by aliteq

Reeve's builder table shows who was measurable. On default publish domains, Lovable had 18,554 apps, 35% used Supabase, and 57% of 3,553 checkable Supabase apps had a readable database. Bolt's figure was 77% of just 35 apps. Base44, Replit and v0 had too few checkable apps for a figure; Base44 sends database traffic through its own backend, which an outside check can't follow. So the headline is mostly a number about Lovable apps that talk straight to Supabase. That's about who could be measured, not a safety ranking of the tools, and Reeve says of the gaps to "draw no conclusion about how safe those apps are."

Screenshot of Reeve's builder table: Lovable 18,554 apps, 35% use Supabase, readable database 57% of 3,553; Base44 5,438 apps, dash; Replit 3,042, dash; v0 1,790, dash; Bolt 1,123 apps, 24% use Supabase, 77% of 35
Reeve's split by builder, default publish domains only. A dash means too few checkable apps (reeve.page, read November 3, 2026). · Screenshot of reeve.page by aliteq

Does a readable table mean my users' data leaked?

Not necessarily. "Open" here means at least one table could be read without logging in. Reeve splits the 2,096 apps in two: 1,702 exposed "tables with generic or technical names: settings, content, logs," and 394 exposed "tables named like personal data: users, profiles, orders, messages." Reeve's own gloss: "A readable table called settings or content is a mistake. A readable table called users, profiles or orders is other people's personal data on the open internet, and whoever built the app almost certainly believes it is private."

There's one limit no outside scan removes, and Reeve states it: "No host can tell which of your tables should be public, or which key belongs on a server." A readable content table might be a blog you meant to publish. That's why the fix is a decision, not a setting.

Are the scarier numbers in the report as bad as they sound?

Mostly not, and Reeve says so itself. From the same page:

  • "99% of the 30,998 apps we scanned had at least one finding," but "nearly all of them are missing browser security headers," a hosting default rather than a mistake the builder made.
  • 1,332 apps shipped a key, which sounds alarming. Reeve's breakdown: 1,142 ship a Google API key, "a browser key, meant to be public," and 52 ship "a key that can spend money or read the whole database" (OpenAI, AWS, Anthropic, a Stripe secret key, a Supabase service_role). "Only 3 of them shipped the master database key. That is rarer than the usual panic implies."
  • A publishable key in the page is fine. Reeve counts these as OK: "A publishable key in the frontend is supposed to be there." That matches what we say about the Supabase anon key.

Some numbers are better than you'd guess: 96% ship no secret of any kind in their public code, and 97% of the file storage it could check was locked to outsiders. Reeve's summary of where the serious failures sit: "The settings only the person who built the app can change fail far less often," and they are the ones that put somebody's data on the open internet.

Why did a second scan find far fewer open databases?

Different samples, dates and definitions, and neither report explains the gap. Symbiotic Security published its scan on June 2, 2026: 1,072 Supabase apps built with Lovable, V0, Bolt.new, Replit and Windsurf. Its headline is "98% of vibe coded applications have at least one security flaw," but the most common finding was a missing Content Security Policy header (1,039 sites). The serious end: 173 sites (16%) had a critical vulnerability, "172 sites allow anyone to delete records from the database without any authentication," 172 exposed endpoints that let anyone modify records, and "39 sites have tables fully readable by anyone who holds the public Supabase key".

Screenshot of Symbiotic Security's report: Data reading without authentication. 39 sites have tables fully readable by anyone who holds the public Supabase key (which is exposed in the page's JavaScript). All user data, payments, and private messages are accessible
Symbiotic's readable-table finding, 39 of 1,072 sites (symbioticsec.ai, published June 2, 2026, read November 3, 2026). · Screenshot of symbioticsec.ai by aliteq

39 of 1,072 against Reeve's 2,096 of 3,680 is a huge gap, and we won't pretend to explain it. Note that Symbiotic counts 172 sites where records could be deleted without authentication, far more than its 39 readable ones, so "readable" is not the only way a table is open. Symbiotic also rates the Supabase anon key exposed in JavaScript as a High-severity finding (308 sites), while Reeve counts it as correct. Scanners differ in what they flag. The key was never the protection; Row Level Security is.

What should I do if I'm about to share my app?

None of this requires trusting a percentage. Three habits cover what both reports found:

  1. Row Level Security on every table, then a policy for each one that lets the right people in. Check the Security Advisor again after you add a table.
  2. Decide which tables are public, on purpose. Anything named like users, profiles, orders or messages should never be on that list.
  3. Keep real secrets out of the browser. A publishable key is fine; a service_role key, a Stripe secret key or an OpenAI key is not. The checklist is in the six checks before you share a vibe-coded app, and the wider habit is in everything to check before real people use your app.

If you want an outside view, Reeve says its nine checks are "the same nine checks anybody can run free on the Reeve home page." We haven't used it, and Reeve itself says "An automated external check is not an audit. Absence of findings is not a guarantee." An outside scan also can't see tables behind a backend it can't follow, so a clean result doesn't replace the Security Advisor check above.

Quick answers

Are most vibe-coded apps leaving their database open?
No. In Reeve's scan of 30,998 apps (Aug 12-14, 2026), 57% of the 3,680 Supabase-backed apps it could check had at least one table readable without logging in. That's 2,096 apps, out of 8,429 that name a Supabase project. Apps it couldn't check aren't counted either way.
How do I know if my Supabase database is open?
Open Security Advisor in your Supabase dashboard. A public table without Row Level Security shows as the error "Table publicly accessible" (lint 0013). You can also run a query on pg_tables in the SQL editor: any public table with rowsecurity false can be reached with the anon key.
Does a readable table mean personal data leaked?
Not necessarily. Of the 2,096 apps, 1,702 exposed generically named tables like settings or content, and 394 exposed tables named like personal data. A scan can't know which tables you meant to be public; you do.
Is my Supabase anon key in the page a problem?
Not by itself. Reeve counts a publishable key in the frontend as correct, because the protection is the rules behind it. What matters is whether Row Level Security is on for every table it can reach.
Are Lovable apps less safe than Bolt or Replit apps?
The scan can't say. Most checkable Supabase apps were built on Lovable (3,553 of 3,680), and Base44, Replit and v0 had too few checkable apps for a figure. Reeve says to draw no conclusion about how safe the unmeasured apps are.
Which scan should I believe, Reeve's or Symbiotic's?
Neither as a census. They used different samples, dates and definitions, and their readable-table counts differ widely (2,096 of 3,680 vs 39 of 1,072). Both come from companies that sell security tools. Treat them as evidence the problem is real, then check your own database.

This page has no affiliate links or sponsored placements. Both reports come from security vendors and were read on their own pages on October 3 and again on November 3, 2026; the Supabase and Lovable documentation was read on November 3, 2026. We left out a circulating claim that AI-assisted code has 4.4 times more flaws, because it traces to a press release we couldn't match to a primary report. Neither scan names an app.

Found this useful? Share it

Share

Aliteq

Aliteq Team

Aliteq started in 2019 as a PC hardware shop and is now a US-based publication. We build the VRAM and cost calculators on this site, track live cloud-GPU prices, and write guides with AI-assisted drafting that we check against primary sources before publishing.

The Aliteq brief

The tech worth knowing — hardware, AI, gaming, deals. No spam, unsubscribe anytime.

Keep reading