The best frontend work never shows up in a demo. Here's why founders should care anyway.
The frontend work I'm proudest of is invisible. No one screenshots it. But without it, users quietly disappear — and you never find out why. That work happens in the seams: between two screens, between two browser tabs, between your backend's contract and a real, impatient human.
Here are three examples. Each is a handful of lines. Each solves a problem that, ignored, costs real customers.
1. When correct credentials show an error
Users entered the right password and saw a failure. Meanwhile the backend was logging them in perfectly. The screen was lying.
The cause: the frontend decided "success" by reading a status field. But the backend's real signal was the access token itself — it could return status: null right next to a valid token. Real login, rendered as a rejection.
The fix was one shift in judgment: success is signalled by an issued token, not a status string.
The lesson stuck with me — the frontend is where an API contract meets a human. A field that's merely ambiguous in a spec becomes a locked door in someone's face.
2. The verification link that opens in the wrong tab
A user waits on a "please verify your email" screen, clicks the link in their inbox — which opens a new tab — verifies there, then switches back to the original tab, still waiting forever.
Polling won't work: the waiting tab is unauthenticated. It has no token to ask the server anything. That's the whole reason we're verifying.
The browser already ships the answer, and almost no one uses it: the storage event. When one tab writes to localStorage, every other tab gets notified instantly — a free, zero-latency, cross-tab message bus.
localStorage.setItem(KEY, JSON.stringify({ email, at: new Date().toISOString() }));
The timestamp matters: the event only fires when the value changes, so stamping each write guarantees it always fires. The moment the signal lands, the waiting tab advances on its own. Feels like magic. It's just knowing how the browser already works.
- The cooldown that survives a refresh "You can resend in 30 seconds" — stored in component state, it resets to zero on refresh. Now users spam resend by mashing F5, and your email bill notices.
The fix is a change of mind: don't store the countdown, store the deadline.
localStorage.setItem(key, String(Date.now() + seconds * 1000)); // absolute expiry
Persist the moment it ends, and the remaining seconds are always recomputed — after a refresh, a remount, an hour later. No fragile state to lose. Impossible to reset with a reload.
Why a founder should care
None of these are visible. But look at what each defends:
- The login fix protects activation — the most important moment in a user's relationship with your product.
- The cross-tab signal protects conversion — it removes a silent dead-end from onboarding.
- The cooldown protects cost and abuse surface — a real line on a real invoice.
Great frontend engineering isn't just making the happy path pretty. It's obsessing over the seams, because that's where trust is either earned or quietly lost. And none of these fixes were large — ten to fifty lines each. The value was in noticing the problem, and fixing it at the right layer.
That's the work I care about most.
Top comments (0)