Short answer
Change the Site URL in Supabase under Authentication, URL Configuration, from http://localhost:3000 to your live address. Supabase uses it when your code doesn’t pass a redirect URL. If your code does pass one, that exact URL must also be on the Redirect URLs allow list.
The three places to check
01
The Site URL is still localhost
The Site URL is the default address in auth emails when your code passes no redirect. Supabase’s docs say to change it from http://localhost:3000 to your production URL. Emails already sent keep their old link, so do this before launch.
02
The redirect URL isn’t on the allow list
When your code passes emailRedirectTo to signUp, or redirectTo to resetPasswordForEmail, that URL has to match an entry in the Redirect URLs allow list. Add your production URLs there. For Netlify or Vercel preview deploys, Supabase’s docs show wildcard entries; use exact paths for production. Also search your code for localhost: generated sign-up code often hardcodes it in emailRedirectTo or redirectTo.
await supabase.auth.signUp({ email, password, options: { emailRedirectTo: 'https://yourapp.com/welcome' }, });03
A custom email template uses {{ .SiteURL }}
If you edited the email templates and built the link from {{ .SiteURL }}, the email ignores the redirect your code passes. Use {{ .ConfirmationURL }}, which already carries your redirect. If you build a custom link, use {{ .RedirectTo }} for the destination together with {{ .TokenHash }} and a page that verifies it, as the email templates docs show.
Checked against the vendor’s docs on : Supabase docs: Redirect URLs; Supabase docs: Email templates; Supabase reference: signUp; Supabase reference: resetPasswordForEmail.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Supabase RLS fixes · Free Supabase RLS policy checker