Matt Turley, Continuum. Updated November 5, 2026.
Which keys may sit in the browser, which must never, and what to do if one already did.
Only keys designed to be public, such as a Supabase anon key or a Stripe publishable key. Never a secret key, a service role key, or an AI provider key: anything in the browser code is visible to every visitor. Secret keys belong on a server, and a leaked one must be replaced.
A browser app is code that every visitor downloads and can read. So the rule is not about hiding a key well; it is about whether the key is designed to be seen.
When a generated app needs to call a paid service, the quickest working version calls it straight from the browser, key included. It runs on the first try, so nothing prompts anyone to move it behind a server. Our post on why the key ends up in the bundle shows how it happens and how to catch it.
Check your own app by opening the live site, viewing the page source and the loaded script files, and searching for the names of your providers. The free Leak Check automates part of that search for common key patterns.
Paste your live URL and seven automated checks run in about a minute with no signup: reachability, SSL, sign-in, the payment path, secrets in the browser code, broken links and speed. It is a surface scan, not a full audit.
Run the free Leak Check. Or book a call and talk it through.