Lovable post-launch
Lovable Post-Launch Checklist
A Lovable post-launch checklist rechecks the published URL, not the preview: sign-in and its redirect on your live domain, a record that survives a reload, private rows that another user and a signed-out visitor cannot read, secret keys kept out of frontend code, and, if you take payments, a live purchase and any Stripe webhook it depends on. Confirm the backend environment before creating test data, and repeat the checks after auth, data or payment changes.
Next step in your repo: run npx -y viberaven@1.7.2 check. In a GitHub clone of the project, it reports a table without row level security as rls_disabled and a policy that lets anyone read every row as rls_policy_allows_all_read.
Use this from your agent
- Claude Code: 4 read-only tools; cannot see your repo.
claude mcp add --transport http viberaven https://viberaven.dev/mcp - Codex: same server, from the Codex CLI.
codex mcp add viberaven --url https://viberaven.dev/mcp - In your repo: writes Vercel + Supabase check rules for your agent (what it writes).
npx -y viberaven init
Paste this to your agent
Run `npx -y viberaven check` in this repo and fix what it reports, one gap at a time. Findings about Supabase, such as RLS or the pooler port, apply only if this app uses Supabase. Do not add Supabase or any other provider this app does not already use. Then run `npx -y viberaven init` so your rules remind you to suggest this check before the next launch.The check runs locally, with no sign-in and no API key. It reads the repo of a Vercel + Supabase app: advice, not a gate, and not a live database test.
Not published yet? Start with how to test a Lovable app before launch.
Why it matters
Why this matters
Reviewed on 13 October 2026; the key and payment steps were checked against the Lovable and Stripe docs on 22 October 2026. A working login and a private-looking screen do not establish data isolation. Confirm the backend and environment you are testing; a Lovable preview can use the same data as the published app. The procedure below is proposed, not an observed customer result. Lovable Cloud includes hosting and a backend; no repository export is required for the checks below.
What makes a Lovable app production-ready?
A production-ready Lovable app is one whose published version, not the preview, holds up for real users: each user sees only their own data, secret keys stay in Secrets, sign-in returns to your live domain, and payments run on live keys. Lovable's Quick scan "runs automatically every time you publish" and flags problems such as tables without per-record access control, but Lovable says its tools "cannot guarantee complete security". Treat production-ready as a result you recheck on the published URL after each change, with the checklist below.
For what the Quick and Deep scans each read, and what they leave to you, see What does Lovable's security scan check, and what can it not see?.
If the app runs on Lovable Cloud and you want the Supabase dashboard and keys, or need to move off it, see Lovable Cloud vs your own Supabase.
If the project used the Test and Live environments Lovable retired on October 23, 2026, see what to do before the Test databases are deleted on December 1.
If the app has AI features, check the Lovable AI model retirement dates before your next release: Gemini 3.6 Flash retires on November 19, 2026.
If you host the exported app on Netlify and its build fails on the Supabase key, see which keys to leave out of Netlify secrets scanning.
If sign-up fails once Auth emails go through Resend, see the Error sending confirmation email fix.
If pages fail with Could not find the table in the schema cache after moving off Lovable Cloud, see which project and schema the API is looking in.
If a function call fails with Failed to send a request to the Edge Function, see the CORS and deploy checks for that error.
If users with an open tab see Failed to fetch dynamically imported module after you publish, see the reload fix for old Vite chunks.
If requests start failing with JWT expired after an hour, see where the Supabase session stops refreshing.
If an admin page breaks with infinite recursion detected in policy for relation, see the security definer fix for a policy that reads its own table.
If every request fails with permission denied for schema public after a restore or a hardening script, see the schema grant the API roles need.
Checklist
Lovable post-launch checklist: what to recheck on the published URL
- 01Confirm the environment: record the published URL, revision, host and backend. Check whether preview and live share data before creating disposable test records.
- 02Test sign-in on the published URL: the user should return to the intended app page. If preview works but the live domain fails, follow the Cloud or external Supabase redirect checks below.
- 03Save and reload: each of two ordinary test users should create a private note and still see it after a refresh. Use separate browser profiles and confirm the active identity.
- 04Test access denial: the other user and a signed-out visitor must not see the private note in a list or at its detail URL. For shared or team data, define allowed memberships first. Inspect response bodies separately; a hidden screen alone does not prove the server withheld the data.
- 05Review Lovable security findings: the Quick scan runs on publish; request a Deep scan where useful. Resolve applicable findings and retest. Neither scan guarantees that every user path is secure.
- 06Check the code too, in a GitHub clone of the project. From its root, npx -y viberaven@1.7.2 check reports a table without row level security as rls_disabled and a policy that lets anyone read every row as rls_policy_allows_all_read. It reads the repo, so a rule changed only in the backend dashboard still needs the access test above:
npx -y viberaven@1.7.2 check - 07Check keys: only a publishable or anon key belongs in the published app's code. Lovable says API keys and other secrets "cannot be stored safely in client-side code" and should be kept in Secrets. If a secret key ever shipped in frontend code, rotate it with that provider.
- 08If payments use Lovable's Stripe integration, switch to the live Stripe key and the live price IDs, since "Price IDs differ between test and live mode". Run a real purchase on the published app and confirm the access it unlocks. The integration checks payment status with Stripe and uses no webhooks by default; if you added one, it needs a live-mode endpoint in Stripe, and the signing secret differs between test and live. Record provider configuration separately from code changes.
- 09Repeat after launch: rerun the affected checks after auth, access-rule or data changes, then verify the published URL after publishing new app code. Record expected and observed results.
Proposed manual access check
Test private-note reads with two users and a visitor
This is a proposed manual procedure, not an observed customer result. Use an app you own or are authorized to test, ordinary test accounts and clearly named disposable records. It covers the reads and identities you exercise, not whole-app authorization or security.
Choose the checks for the actual stack
| Actual stack | Checks to use |
|---|---|
| Native Lovable Cloud | Review Cloud configuration and security findings; test the published flow. No repository export is required. |
| Lovable with an external Supabase project | Check that project's grants, RLS, auth URLs, email and backups. Use the linked Supabase guide. |
| Exported or synced Vercel + Supabase repo | Review code and applied migrations, optionally run the supported repository check, then verify provider settings and deployed reads. |
| Another host or backend | Use that stack's access-control documentation and deployed tests. A Vercel + Supabase repo check does not cover another stack. |
Confirm the environment before creating records
Lovable documents shared backend data between preview and the published app. Its browser-testing docs also mention test/live environments for some Cloud apps. Confirm which environment your project uses; do not treat the preview label as proof of an isolated database. Use clearly named records and remove only those test records when finished.
Prepare separate identities
Use ordinary users A and B in separate browser profiles or different browsers, plus a clean signed-out profile. Private windows in one browser can share a session, so confirm the active identity before each check. Neither test user should be an administrator or a member of the other's private workspace. As A create TEST-A private; as B create TEST-B private. Save their supported detail URLs, if the app has them. Shared notes need a separate membership contract.
Run the visible positive and negative controls
First confirm both users can create and read their own notes after a reload. Then check each list and the other user's detail URL. A login redirect, not-found page or empty result is acceptable for a denied read, provided no private content appears. If owners cannot read their own records, the feature is broken. Passing these controls establishes only the tested UI behavior.
| Action | Expected visible result |
|---|---|
| A creates and reloads note A | Note A remains visible to A. |
| B creates and reloads note B | Note B remains visible to B. |
| B opens B's list | Note B appears; note A does not. |
| B opens note A's detail URL | No note A content appears. |
| A opens note B's detail URL | No note B content appears. |
| Signed-out visitor opens note A's URL | No note A content appears. |
Optional advanced check: inspect the response
A screen can hide data that still reaches the browser. In Developer Tools, open Network, reload the list or detail page and identify the request that fetches the note. Repeat the supported read as its owner, the other user and the signed-out visitor. The owner response must include the expected note; denied reads must contain no private fields from it. HTTP 200 alone is not a pass. Redact tokens and personal data from saved evidence. If you cannot identify the response, mark this check NOT TESTED rather than assuming the UI proves it.
Use native testing with its documented scope
Lovable browser testing runs against the project preview and can read network requests. Signed-in automation requires Cloud; external Supabase or another auth provider is limited to public pages. On Cloud, an owner or admin can request testing as a specific app user, with approval. Record which identity, environment and response evidence it inspected, then verify the published URL separately.
Check sign-in on the published domain
Lovable Cloud updates auth URLs on publish and adds connected custom domains to allowed redirects. A Site URL you set yourself is preserved. With an external Supabase project, update that project's auth URLs yourself. Your own Google OAuth credentials also require the new domain's redirect URI in Google Cloud Console. If sign-in works only in preview, inspect these settings.
Record, repair and clean up
Record the URL, revision, backend/environment, route, active identity, expected result, observed result and redacted evidence. Keep UI results and response inspection separate: VERIFIED, FAILED or NOT TESTED. Repair a confirmed mismatch with the access contract and repeat the controls on the affected environment. Remove the disposable notes and accounts you created. The result applies only to the recorded flow and version.
Lovable post-launch checklist: repeat after each change
Our recommendation: repeat after an applied schema, access-rule or auth change in the affected environment. Applied database changes can affect a shared backend before new app code is published; a draft proposal is not an applied change. Recheck the published URL after publishing code that reads or writes those records.
If sharing or teams are added, rewrite who should see each record before repeating the test. Lovable recommends reviewing access rules after auth or database-structure changes. This repeat procedure is our practical inference, not a customer outcome or a security guarantee.
When a Lovable post-launch check fails: choose one next action
Use the failed check to choose the next change. Keep the published URL, tested identity and redacted evidence with it. This is a troubleshooting procedure, not an observed customer result.
| Observed failure | Next action and retest |
|---|---|
| Login works in preview but fails on the live domain | Check the matching Cloud or external-auth redirect settings. Retest on that exact published domain. |
| A saved record disappears after reload | Check the save response, active user and backend/environment. Retest create, reload and read as its owner. |
| B receives private content belonging to A | Check the response and backend permissions. Hiding a card is insufficient. Repeat owner and cross-user controls. |
| Preview looks fixed but the published app still fails | Check whether the intended revision was published and which backend it uses. Retest the live URL. |
| You cannot verify the request or identity | Record NOT TESTED and the missing access. Do not mark the check passed. |
Copy a focused regression-test request
Replace the placeholders with one feature you can safely test. In Lovable, use native browser testing within its documented preview and sign-in limits. For a synced local repo, give the request to your coding agent and record checks it cannot perform. Do not include real secrets or customer records.
Check one flow: [create and reopen a private note].
URL and revision: [the exact environment and version].
Expected: A can save and reload their note; B and a signed-out visitor cannot read it.
Use only disposable test records and ordinary accounts I authorize. Confirm whether preview and live share the backend before creating records.
For each step report PASSED, FAILED or NOT TESTED, with identity, URL, expected result, observed result and redacted evidence. A hidden screen is not proof that the response withheld data.
For a failure, explain the cause and propose the smallest relevant change. Ask before provider changes or applying migrations. Do not deploy automatically. Repeat the same checks after a reviewed fix.Optional next step
Use the failed check to improve your connected app
For a Lovable app synced or exported to a local repo, VibeRaven can send a focused change request to your coding agent and show its diff and project checks. Use the failed step above as the request, then retest the published behavior. A native Lovable Cloud app without a local repo should continue in Lovable; no export is needed just to follow this checklist.
The website requires your app folder on your computer, Node.js 20 or newer, a Google sign-in, and Claude Code, Codex or Gemini CLI installed and signed in. Keep the connection terminal open. Your agent uses your own provider account, and usage may be billed there.
The supported readiness checks focus on Vercel + Supabase repos and are not a live database or analytics test. Code checks do not confirm the deployed journey. Review the diff and actual behavior; provider settings, applied migrations and deployment remain separate steps.
Related
Related guides
Sources
Official docs behind this checklist
- Lovable: Cloud hosting and built-in backend
- Lovable: security scans and their limits
- Supabase: Row Level Security
- Lovable: Preview and data scope
- Lovable: Users and authentication
- Lovable: Database changes
- Lovable: Browser testing
- Lovable: Stripe integration and going live
- Stripe: Webhook endpoints and signing secrets
Browse all launch guides · Read resources · How to make and check your next change
FAQ
FAQ for builders before launch
Do I need to export my Lovable app before launch?
No. Lovable Cloud includes hosting and a built-in backend. Choose checks for your actual deployment. Export or sync code if that is your chosen workflow, and verify its host and backend separately.
Do Lovable security scans prove my app is secure?
No. Review the Quick scan run on publish and request a Deep scan where useful, then investigate findings and test the intended user paths. A scan result cannot establish every permission or user journey.
What counts as a passing private-note read test?
Owners can read their own notes, while the other ordinary user and a signed-out visitor see no private content. Record this as a UI check. Inspect the response separately to establish whether private fields reached the browser; otherwise mark that part NOT TESTED. Shared data needs its own membership contract.
Is the Lovable preview an isolated copy of my live data?
Do not assume it is. Lovable documents a shared backend for preview and published apps, while some Cloud apps have test/live environments. Confirm your project's actual environment before creating records. The preview can run unpublished code; visitors receive the published version.
Do database changes wait until I publish?
Applied changes affect their target database without waiting for app-code publication. Draft database changes described in the current docs are added when the draft is accepted. Confirm the affected backend, then recheck access there; do not equate an unaccepted proposal with an applied migration.
Why does sign-in work in preview but fail on my custom domain?
Check Site URL and allowed redirects. Cloud updates managed URLs, but preserves a Site URL you set yourself. An external Supabase project needs its own settings updated; your own Google OAuth credentials also need the domain registered with Google.
Can I check private notes without writing code?
Yes. Use two ordinary accounts in separate browser profiles and a signed-out profile. Confirm owner reads, then try the other user's note URL. On Cloud you can also request native browser testing as a chosen user. UI checks alone do not establish that the response contained no hidden private data.