Proxy Mail QA

Sign-up and login problems in vibe-coded apps, and how to fix them

An AI builder can add accounts to your app in one prompt, and it works when you try it. The trouble starts when someone else signs up: you’re on the email service’s team, already signed in and on the right domain, and they aren’t. These are the problems that show up then, and what to ask your builder to change.

Updated

Most AI-built apps sign people in with Supabase (Lovable, Bolt, v0 and many apps from Cursor or Claude Code), Firebase (Antigravity), Clerk, or the builder’s own login (Replit, Base44). The provider pages cover each in depth: Supabase problems, Firebase problems. This page covers what generated apps add on top.

It works for you, and no one else

You built the app, so you’re on the Supabase project’s team, you’re probably still signed in, and you test on the domain the builder showed you. A tester has none of those:

The email’s link is built from the app’s public address setting. If it was left at http://localhost:3000, or set to a preview link that changed on the next deploy, people land on a page that doesn’t open. On Lovable Cloud, Lovable sets it when you publish unless you’ve set one yourself; on your own Supabase project, it’s the Site URL. Set it to the published domain and list previews under Redirect URLs. More in why emails link to localhost. Proxy Mail QA flags these links on the address’s row.

The link brings a code back to your app, and a page has to swap it for a session. Generated apps often send the link to the home page, which ignores the code, so the person arrives signed out and assumes it failed. Ask for a page that finishes sign-in (often /auth/callback) and points the email’s link at it. With Supabase, testers should open the link in the browser they signed up in: why.

“Check your email”, whatever happened

Generated sign-up forms often show the same success message whatever the provider answered. Behind it:

Ask the builder to show the provider’s error when there is one, and to word the success message so it’s true either way.

The reset email has nowhere to go

A password reset link signs the person in, then the app has to show a “choose a new password” form. Generated apps often skip that page, so the person is signed in with their old password and no way to change it. Ask for a reset page that the link opens, and test it end to end: Test password reset emails.

Forms that turn away real people, or let bad data through

Confirmation was switched off while building

Builders sometimes turn off email confirmation so sign-up is quicker to try, and it stays off at launch. Then anyone can sign up with an address they don’t own, and you never see whether the confirmation email works. Switch it back on before you share the app, and test it with an address that receives mail.

The agent says it’s done

A coding agent checks that the form submits, not that the email arrives or its link works. Connect the Proxy Mail QA MCP server and ask it to sign up with a new address, wait for the code or link and finish the sign-up. It reads only the code or link, never the email’s text.

Copy-paste prompts for your builder

Prompt
Check our login setup: list every email the app sends (sign-up confirmation, magic link, password reset, email change), which service sends it, and the page each link opens. Flag any link built from localhost or a preview address, and any link that opens a page that doesn't finish signing in.
Prompt
Add a page that finishes sign-in when someone opens the link in a confirmation or magic-link email, and a page to choose a new password after a reset link. Point the email links at them.
Prompt
On sign-up, show the error the login service returns, if any. When it succeeds, say: "If that address is new, we've sent a link. Already signed up? Sign in or reset your password." Never say an email was sent when it wasn't.

Your builder’s guide

Each one covers its own login options and settings: Lovable, Bolt, v0, Replit, Base44, Antigravity, Cursor and Claude Code. Not sure which login yours uses? Login methods compared.

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 sign-up work for me but not for anyone else?

Usually because the app’s Supabase project still uses Supabase’s built-in email sender, which only emails members of your Supabase team, and you’re on it. Set up your own sender (custom SMTP, for example with Resend), then try again with an address that isn’t yours.

My app says "Check your email" but nothing arrives. Where do I start?

Sign up with a fresh Proxy Mail QA address. If nothing reaches its inbox, the email wasn’t sent: the address may already have had an account, email confirmation may be off, or the sender is refusing it. The app’s message is shown whatever happened, so it can’t tell you which.

Should I switch email confirmation off to make testing easier?

Not for an app other people will use. Without it, anyone can sign up with an address they don’t own. Keep it on and test it with addresses that receive mail.

What should I ask the builder to fix first?

The public address setting (Site URL), the sender, a page that finishes sign-in when the link is opened, and a page to choose a new password after a reset. The prompts below cover all four.

Built your app with an AI tool? Pick yours

Lovable, Bolt, v0, Replit, Base44, Cursor and Claude Code are products of their owners. Proxy Mail QA is independent and isn’t affiliated with or endorsed by them.