If your signup form still stores email validation as a loose pile of booleans, that field is probably lying to your UI from time to time. I keep seeing the same combo in production React apps: isChecking, isAvailable, error, maybe hasBlurred, and then one slow request arrives late and the screen says something that is no longer true. It looks fine in demos, but under real typing speed it gets messy fast.
Lately I have been treating email checks as one workflow with one state shape. That change is not flashy, but it makes forms easier to reason about, easier to test, and way less twitchy for users.
Why email checks drift out of sync
The problem is not email syntax. The problem is everything wrapped around it:
local format validation






