Usernames are one of those things that feel trivial when you’re starting a product.
You add a unique constraint, maybe block admin, and move on.
But across multiple projects, I kept running into the same issues later on:
Someone grabs admin, support, or system
Brand or impersonation-prone usernames slip through
Short or premium handles get taken early
Internal “reserved username” lists keep growing and become hard to reason about
What started as a small array in code slowly turned into tech debt. Every new edge case added another exception, another rule, another place things could break.
That pattern is what led me to start working on username.dev.
The idea is simple: treat username governance as a first-class concern instead of an afterthought. Rather than every team reinventing their own rules and lists, I wanted to explore whether this could be handled cleanly through a small, focused API from day one.
Right now, I’m still early:
validating assumptions
talking to builders
learning where this actually helps vs where it doesn’t
I’m curious:
When did usernames stop being “just a field” for you?
What broke first?
Did you regret early decisions around usernames later on?
Would love to learn from others who’ve dealt with this at scale (or been burned by it).