Accessibility
Focus States Are Not Optional Decoration
Move with Design · August 24, 2026 · 6 min read
Somewhere in nearly every modern CSS reset sits a line that quietly disables one of the browser's few built-in accessibility features: outline: none, applied to every interactive element, inherited from a boilerplate stylesheet nobody on the current team wrote and few people ever question. It's one of the most copy-pasted lines in front-end development, and it exists almost entirely because the default focus ring — a blocky, often mismatched blue rectangle that clashes with whatever color and shape language the brand has settled on — looks like an accident rather than a design decision.
The instinct behind removing it is understandable. A designer reviewing a polished interface sees a chunky blue outline snap onto a rounded button or a carefully styled input and reads it as visual noise, an artifact of the browser rather than something the brand chose. Removing it makes screenshots look cleaner and demos look more finished. The reasoning rarely goes further than that, mostly because the person making the call is reviewing the interface with a mouse, clicking directly on what they want, and never once needs the thing they just deleted.
What that outline is actually doing, for anyone navigating by keyboard, is answering a single continuous question: where am I right now. There's no cursor arrow hovering over a button to signal intent. There's no visual highlight left behind from a click that already happened. The focus indicator is the entire mechanism by which someone tabbing through a page knows which element their next keystroke — Enter, Space, an arrow key — is about to act on. Remove it without a replacement, and that mechanism doesn't degrade gracefully. It disappears completely, and the interface becomes navigable in name only.
It's worth being precise about who this affects, because 'keyboard user' undersells how large and ordinary the group actually is. It includes people with motor impairments who use a keyboard or a switch device by necessity, but it also includes power users who tab through forms out of habit because it's faster than reaching for a trackpad, screen reader users who move through a page with a hybrid of keyboard commands and reading gestures, and anyone temporarily without a working pointing device — a trackpad that's acting up, a laptop plugged into a monitor with the mouse still packed away. None of this is a narrow edge case reserved for assistive technology. It's a normal way to use a computer that a huge portion of the population defaults to at least some of the time.
Picture a multi-step signup form with the outline removed and no replacement added. Someone tabbing through it hits the first field, types, hits tab, and has no idea whether focus landed on the second field, jumped past it to a checkbox, or looped back to the top of the form entirely. The only way to find out is to type and see what happens, or tab back and forth experimentally until behavior gives it away. Fields get skipped. Checkboxes get toggled by accident. What should be a fast, linear task turns into a guessing game conducted entirely through trial and error, and the person doing it has no way to know whether the form is broken or they're just missing something.
The fix that shows up most often isn't actually a fix. A team notices the missing focus state late, usually from a bug report or an audit, and adds back a faint one-pixel border in a color close to the background, technically present but barely visible against either the component or the page behind it. It satisfies whatever automated check flagged the absence in the first place, and it changes nothing about the actual experience, because a focus indicator that requires squinting to locate is functionally the same as no focus indicator at all for the person trying to track their position quickly while moving through a form.
The real fix is treating focus as a first-class visual state, designed with the same intention already given to hover, active, and disabled states in any competent design system. Nobody ships a button without deciding what it looks like when someone's cursor sits over it — that's considered baseline design work, not an accessibility add-on. Focus deserves exactly that same status: a deliberate, documented, on-brand treatment that gets designed once, alongside the other interaction states, rather than left to whatever the browser happens to supply or whatever gets bolted on afterward under pressure.
In practice this tends to look like an offset ring in a brand color rather than the browser default, a visible background or border shift on the focused element, or a bottom border that animates in on text links — any treatment distinct enough from the resting and hover states that someone moving quickly through the page can register it at a glance, and high-contrast enough against both the component itself and the surrounding background to actually meet visibility requirements rather than merely gesture at them. None of these need to look like a browser artifact. They need to look designed, because they are.
A reasonable pushback here is that a strong, boxy ring genuinely does clash with certain minimalist visual languages — that the requirement to be highly visible fights directly against a design system built around restraint and quiet detail. But the requirement is about visibility, not about a specific shape or weight. A thin colored underline, a subtle scale change combined with a color shift, a soft glow instead of a hard-edged box — plenty of minimal, restrained brands have shipped focus states that are unmistakably visible without looking like a departure from their visual language. The constraint narrows the solution space; it doesn't dictate a single ugly answer.
There's also a genuinely useful technical detail that removes the oldest excuse for deleting focus styles outright: the :focus-visible CSS pseudo-class, now supported broadly enough to rely on, which lets a focus style apply specifically when navigation happened by keyboard and stay out of the way when it happened by mouse click. The complaint that a visible ring looks messy every time someone clicks a button with a pointer is, at this point, solvable rather than a real trade-off — the ring can show up exactly when it's useful and stay invisible exactly when it isn't.
None of this is a case where accessibility and visual polish sit in tension, waiting for someone to compromise one for the other. A custom, deliberately designed focus state can look sharper and more on-brand than the default it replaces, while doing the actual job completely — and the only real failure mode is removing the default and stopping there, treating the deletion as the finished task instead of the first half of it. The browser default was never precious. Silence, in its place, is what actually costs something.