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
- Deploy, then open your production address, not the preview inside v0.
- Create an address in Proxy Mail QA, with a generated persona if your form asks for a name.
- 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.
- Then test the rest: sign out, reset the password, sign in with the new one, and save it on the row.
- 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
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.
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.
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.