A Lovable app is ready for real users when four things hold: every table has a Row Level Security policy you have tested with two accounts, the Supabase service_role key never reaches the browser, the migrations and a tested backup exist outside the Lovable editor, and the synced GitHub repo builds and runs on its own. The eight checks below are the same ones every AI builder needs; the platform-specific notes are what Lovable does differently.

If you want these checks run on your actual code, the free teardown does exactly that, recorded, within 72 hours.

What Lovable gives you

FrontendReact, Vite, Tailwind, shadcn/ui
BackendSupabase Edge Functions
AuthSupabase Auth
DatabaseSupabase Postgres
HostingLovable hosting, or exported to Vercel, Netlify
Code exportFull GitHub sync, two-way
Docshttps://docs.lovable.dev

The eight checks

1

Authentication and session handling

Log in as two users in two browsers. Confirm a logged-out request to any data route gets 401, and tokens are not in localStorage or URLs.

2

Per-user data isolation

As user A, request user B's record by id through the API. It must fail. Repeat for every table that has an owner.

On Lovable: Lovable apps read and write Supabase directly from the browser with the anon key, so Row Level Security policies are the only thing separating one user's data from another's. CVE-2025-48757 (May 2025) covered exactly this class of failure. source (checked 2026-08-28)

3

Secrets out of the client bundle

Build the app and grep the output for service keys, API keys and database URLs. Anything found is public.

On Lovable: The Supabase anon key is meant to be public. The service_role key is not, and must never appear in the Vite bundle or in an Edge Function that the client can call without auth. source (checked 2026-08-28)

4

Database rules, migrations and backups

Find the migration files, run a restore from the last backup into a scratch project, and time it.

On Lovable: Lovable manages the Supabase schema through its own migration flow; confirm the SQL migrations exist in the synced GitHub repo and that Point in Time Recovery is enabled on the Supabase project (it is off on the free tier). source (checked 2026-08-28)

5

Payments and webhooks

Replay the same webhook event twice. The ledger must change once.

6

Errors, logs and alerts

Throw a deliberate error on a staging route. Someone must be paged, and the log must carry the user and request id.

7

Environments, deploys and rollback

Deploy a visible change to staging first, then production, then roll it back. Time each step.

8

Code ownership, export and the trail

Export the repository, build it outside the platform, and hand the architecture map to someone who has never seen it.

On Lovable: Two-way GitHub sync means the exported repo is the real thing. Build it locally with `npm run build` and run it against a second Supabase project to prove the app is not tied to the Lovable editor. source (checked 2026-08-28)

What has already gone wrong on Lovable

DateIncident
2025-05CVE-2025-48757: Lovable-generated apps shipped with missing or misconfigured Supabase Row Level Security, exposing user data

Read next