Enviera

Is my AI-built app safe to launch?

A working demo is a starting point. Before launch, check who can read and change your data, which credentials reach the browser, and whether access rules hold when someone goes straight to a private page or endpoint. Supabase's production checklist calls for authentication tests, protected API endpoints and database access checks. [1]

Built with Lovable, Bolt, Replit or a similar builder? Start with the checks below. The database steps apply if your app uses Supabase.

Request a free launch-safety check

Send your app URL and email. We answer requests by hand with a short written finding. Nothing is scanned automatically. This is not a certificate of safety.

Check Supabase row level security

Row Level Security, or RLS, controls which database rows a user can access. Table grants control which operations a role can attempt. A table in an exposed schema without RLS can be read or changed by roles with the corresponding grants. Review both the grants and the policies. [2]

Start with tables that hold private user data:

Use test accounts and test records in your own app. Sign in as different users and confirm each can access only the records intended for them. For shared records, check both a member who should have access and a non-member who should not. Supabase documents allow-and-deny database tests for these cases. [2]

What the Lovable CVE does and does not tell you

The public CVE-2025-48757 record describes insufficient RLS in Lovable through April 15, 2025, allowing unauthenticated access to read or write database tables on generated sites. The record is disputed by Lovable: its stated objection is that customers accept responsibility for protecting their applications' data. [4]

That record is not a diagnosis of your app. Use it as a reason to inspect the actual grants and policies, rather than assume the builder's name tells you who can access your data. [2][4]

Tell public API keys from secrets

Finding a Supabase key in browser code does not automatically mean a secret leaked. Supabase distinguishes keys intended for public clients from keys with elevated access. [3]

KeyWhere it belongsWhat to check
Publishable key or legacy anon keyPublic client codeReview the RLS policies and grants that control access to data.
Secret key or legacy service_role keyBackend codeKeep it out of browser code. These keys have elevated access and bypass RLS.

Source: Supabase API key documentation. [3]

Open your browser's developer tools and inspect the code and network requests your app sends. Look for credentials that should stay on the server. Moving a secret into an environment variable is not enough if the value still ends up in the browser's bundle. Supabase treats source code and build artifacts shipped to users as public. [1][3]

If a secret key or service_role key has leaked, follow Supabase's rotation procedure: fix the source of the leak, replace the compromised key, confirm the app uses its replacement, and retire the old key. Removing it from the visible code alone does not revoke it. [3]

Check access beyond the login screen

Try opening a private page directly while logged out. Then test with accounts for each role your app supports, such as a member and an administrator. Confirm that each role sees only what it should. [1]

Also check the endpoints behind those screens. An API key identifies an application component, not an individual user. Supabase recommends using elevated keys only on servers that run their own authorization checks. Do not rely on the browser to decide who may use them. [3]

For each sensitive action, have your developer check that the server verifies the caller and their permission to perform that action. Repeat the request as a signed-out visitor and as a user without that permission, using test data in your own app. This combines Supabase's role-testing guidance with its recommendation to use secret keys only on servers that run their own authorization checks. [1][3]

A short self-check before launch

Keep a written list of what was checked and patched, and what still needs investigation. Completing this list does not guarantee safety.

Request a free launch-safety check

Unsure what to check next? Send your app URL and email. We review requests by hand and reply with a short written finding.

Request a free launch-safety check

Share your app URL and email. We review requests by hand and reply with a short written finding.

Use a link to an app you own or are authorized to share. Do not include passwords or secret keys in the URL.

We'll send the written finding to this address.

We store the submission date, app URL and email to answer your request; nothing is scanned automatically.

Need a fuller assessment?

The $500 Production Readiness Audit, credited 100% toward the build. [5]

See the linked page for the full audit scope and terms.

For broader Lovable problems, read our Lovable app troubleshooting guide.

Questions founders ask

Does an exposed Supabase anon key mean my database is exposed?

Not by itself. The legacy anon key is intended for public components, like the newer publishable key. Check the table grants and RLS policies to understand what requests using it can access. [2][3]

Is enabling RLS enough?

You also need policies and grants that match your app's intended access. Test both allowed and denied operations for the relevant users and roles. The switch alone does not demonstrate that private records are isolated correctly. [2]

Does having a login page protect every endpoint?

Check separately. Supabase distinguishes identifying the application from identifying the user, and recommends using secret keys only on servers that run their own authorization checks. Test private pages and role restrictions as well. [1][3]

Is the free launch-safety check an automated scan?

No. You submit your app URL and email, and we reply by hand with a short written finding. Nothing is scanned automatically, and the response does not certify the app for launch.