Guides / supabase-rls-checklist-before-launch
Supabase RLS checklist before you launch
Row Level Security mistakes are the #1 vibe-coding database breach pattern. Use this checklist before real users arrive.
The rule
The Supabase anon (publishable) key is meant to be public. Security depends on RLS. The service_role key bypasses RLS and must never ship in the browser.
Real-world reminder: Wiz’s write-up of Moltbook shows what happens when RLS is missing while the public API key is in client JavaScript (Wiz). Broad scans of vibe-coded Supabase apps continue to find open tables (SymbioticSec).
Checklist
- In Supabase → Authentication / Table editor: enable RLS on every table.
- Add policies that use
auth.uid()(or your real auth model). AvoidUSING (true)for private data. - Confirm service_role exists only in server/Edge secrets — search your repo and production JS for it.
- From an incognito window, call your REST endpoints with only the anon key and verify private rows are denied.
- Lock down Storage buckets with separate policies.
PreflightVibe’s free scan looks for privileged JWTs and common exposure patterns in your public bundle as a first pass before launch.
Run a free PreflightVibe launch check
Paste your live URL. Get an A–F grade. Unlock the full report for $29 when you are ready.
Free quick scan