Auth provider
Every verified stack secured with Supabase Auth.
Supabase Auth — hosted identity (GoTrue) via the @supabase/ssr cookie client; email+password + OAuth.
Why Supabase Auth, specifically
note
Hosted: Supabase owns identity in its managed auth.users. This stack emits a LOCAL `user` mirror (db/auth-schema.ts) so app-type schemas can foreign-key `user` directly — keep it in sync with a Supabase trigger on auth.users (insert/update → public.user). The drizzle migration only owns the mirror table's shape, not the trigger.
note
Sessions are cookie-based (@supabase/ssr): the proxy refreshes them on every request; Server Components read the user via supabase.auth.getUser().
What Supabase Auth pulls in
bun add @supabase/ssr @supabase/supabase-jsNEXT_PUBLIC_SUPABASE_URLNext: your Supabase project URL (RR: VITE_SUPABASE_URL · Nuxt: NUXT_PUBLIC_SUPABASE_URL)NEXT_PUBLIC_SUPABASE_ANON_KEYNext: the project's anon/public key (RR: VITE_SUPABASE_ANON_KEY · Nuxt: NUXT_PUBLIC_SUPABASE_ANON_KEY)SUPABASE_URLReact Router server-side (loaders): same project URL, read off process.env — never inlined into the client bundleSUPABASE_ANON_KEYReact Router server-side: same anon key240 verified stacks
✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · MySQL 8✓
Next.js 16 (App Router) · Postgres (Neon)✓
Next.js 16 (App Router) · Postgres (Neon)✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · MySQL 8✓
Nuxt 4 · Postgres (Neon)✓
Nuxt 4 · Postgres (Neon)✓
React Router v8 · MySQL 8✓
React Router v8 · MySQL 8✓
React Router v8 · Postgres (Neon)✓
React Router v8 · Postgres (Neon)