Proxy Mail QA

Testing sign-up and login emails in apps built with v0

v0 builds a Next.js app and deploys it to Vercel. Ask it for accounts and it usually connects Supabase for login, sometimes Clerk. Their emails only work for real users once a couple of settings match where your app actually runs.

Updated

Your login options in v0 apps

Sign-in option Emails your users get Test with Proxy Mail QA
Email and password, with Supabase Confirmation, password reset, email change Yes
Magic links or codes, with Supabase A link or code to sign in Yes
Email and password, with Clerk A verification code, password reset codes Yes
Google, GitHub and other buttons None to sign in No: use an account you own

Not sure which your app uses? Ask v0: “Which authentication does this app use, and which emails does it send?” Login methods explained covers what each option does.

Test every login email in five minutes

  1. Deploy, then open your production address, not the preview inside v0.
  2. Create an address in Proxy Mail QA, with a generated persona if your form asks for a name.
  3. Sign up and use the link or code from the row. A confirmation link gets Open link and Copy link buttons; codes get a Copy button.
  4. Then test the rest: sign out, reset the password, sign in with the new one, and save it on the row.
  5. Repeat once on a preview deployment if your team checks changes there before they go live.

Supabase: three settings to check

1. Site URL and Redirect URLs. In your Supabase project, open Authentication → URL Configuration. Set Site URL to your production domain, and add your custom domain and https://*-your-team.vercel.app/** (with your Vercel team’s name) under Redirect URLs, so preview deployments work too. Proxy Mail QA flags links that go to localhost, including hosted Supabase links that only redirect there after verifying. Full guide.

2. The redirect in the code. Sign-up, magic links and password reset should ask Supabase to send people back to your site’s real address, from an environment variable or the current page’s address, never a hard-coded localhost.

3. The email sender. Supabase’s built-in sender is for development: it sends only 2 emails an hour, and only to members of your Supabase project’s team, so mail to a test address never leaves Supabase. Set up custom SMTP with a provider such as Resend before you test with outside addresses or launch. Other reasons email doesn’t arrive.

Clerk: development and production

Clerk starts your app on a development instance with its own users. Before launch you create a production instance and connect your domain with the DNS records Clerk lists, and accounts made in development don’t carry over. Sign up again on production with a fresh address, and check the verification code arrives and works.

Copy-paste prompts for v0

Prompt
List every email this app sends: sign-up confirmation, verification code, magic link, password reset, invite and email change. For each, tell me what triggers it, which URL its link points to, and how long its link or code stays valid. Flag anything that uses localhost.
Prompt
Build every redirect in sign-up, magic link and password reset emails from an environment variable for the site's public URL, falling back to the current page's address. Never hard-code localhost.
Prompt
Add a Forgot password flow: a page to request the email, and a page to choose a new password that then signs the user in. Show a clear message when the link has expired or was already used, with a button to send a new one.

Try it on your next sign-up test

Free plan, no credit card. Create an address and watch the code or link arrive.

Create a free accountOpen the app

Questions

Why does my confirmation link go to localhost:3000?

Supabase builds the link from your Site URL, which starts as http://localhost:3000, unless your sign-up code asks for a redirect address that's on the Redirect URLs list. Set the Site URL to your production domain and add your other addresses under Redirect URLs.

Sign-up works on my production domain but not on preview deployments. Why?

Each Vercel preview deployment gets its own address. Add a wildcard such as https://*-your-team.vercel.app/** to Supabase's Redirect URLs, so links sent from a preview come back to it.

Can I test login in v0's preview?

Test it on your deployed app. The preview inside v0 runs on its own address, which usually isn't on Supabase's Redirect URLs list, so links in login emails fall back to the Site URL instead of returning to the preview.

See every email testing problem we solve

v0 and Vercel are trademarks of Vercel, Inc. Supabase is a trademark of Supabase, Inc. Clerk is a trademark of Clerk, Inc. Proxy Mail QA is independent and isn't affiliated with or endorsed by them.