If your React auth flow sends invite, magic-link, or verification emails, the fragile part usually is not the SMTP step. It is the gap between UI state and the message that actually lands. A lot of teams verify the inbox too early, or they assert the wrong thing in the UI and then wonder why tests feel random. This post shows a simple TypeScript-friendly pattern I keep recommending for teams that want cleaner checks with a temp mailbox and less guesswork.

Why React auth email tests drift out of sync

The most common issue is timing, but not only timing. In React apps, state drift also comes from mixed responsibilities:

the UI decides whether a request "worked"

the API enqueues an email later