How to tell which key you shipped
• An old-style key is a JWT. Decode its middle part: "role":"anon" is the public one, "role":"service_role" is the secret one.
• New keys say it in the name: sb_publishable_ is public, sb_secret_ is not.
• Check every VITE_, NEXT_PUBLIC_ or REACT_APP_ variable. Vite's docs: VITE_ variables "will be exposed in client-side source code after Vite bundling."
• Need admin access? Use an Edge Function: SUPABASE_SERVICE_ROLE_KEY is already there by default.