Good visual design can still produce a frustrating product if keyboard users cannot move through it cleanly.
That is why accessibility issues around focus, dialogs, menus, and hidden content often feel worse in practice than teams expect. The page may "look fine" in design review while still being difficult or impossible to use with a keyboard or assistive technology.
This is the practical audit path I would use first.
What usually breaks first
Most real-world keyboard failures fall into one of these buckets:
- focus disappears or becomes hard to see,
- a modal opens but focus does not move into it,
- focus gets trapped with no clean way back out,
- hidden or collapsed UI starts receiving focus,
- dismissible components remove the focused element and leave the user stranded.
These are not niche issues. They affect checkout flows, account settings, support forms, and navigation menus all the time.
The fastest manual audit
Start with a clean keyboard-only pass:
- Reload the page.
- Use
Tab,Shift+Tab,Enter,Space, andEsc. - Never touch the mouse.
- Note every place where focus disappears, jumps unexpectedly, or lands on something hidden.
If the page is hard to use this way, the issue is usually real enough to justify fixing before debating edge cases.
Dialogs are the most common failure point
Dialogs are where polished products often fall apart.
For a modal dialog to work properly:
- focus should move into the dialog when it opens,
- background content should stop being interactive,
Escshould close the modal unless there is a very good reason not to,- there should be a visible close or cancel control,
- focus should return to the thing that opened the dialog when the modal closes.
If you are building a real modal, the native <dialog> element plus showModal() is now the simplest strong baseline in modern browsers because the browser handles focus movement and inert background behavior for you.
If you are using a custom dialog, you need to recreate all of that behavior yourself.
Focus needs to be visible, not just technically present
A technically focusable page can still fail real users if the focus ring is too faint, clipped, or hidden behind sticky UI.
Check this specifically:
- Can you always see where focus is?
- Does the indicator survive dark backgrounds and branded buttons?
- Does sticky nav or cookie UI cover the focused control?
If the answer is "sometimes", treat that as a production bug.
Hidden content should stay out of the tab order
A common frontend mistake is leaving collapsed accordions, flyouts, or off-canvas panels focusable before they are opened.
Symptoms:
Tabsuddenly enters content that is not visible,- a menu expands just because focus touched it,
- keyboard users have to tab through hidden or off-screen controls to continue.
That is one of the quickest ways to make a modern UI feel broken.
A practical remediation order
Do not try to fix everything at once. Work in this order:
1. Navigation and skip paths
- Make sure the main navigation can be entered and exited cleanly.
- Ensure skip links work and stay visible when focused.
2. Modal and drawer components
- Fix dialogs, slideovers, and account menus next.
- These usually cause the biggest usability failures.
3. Forms and validation
- Confirm labels, field order, error summaries, and submit states all work with keyboard only.
4. Reusable component library
- Patch the shared components, not just the single page where the problem was reported.
What to ask engineering for
If you are handing this over to a developer, ask for:
- one focused keyboard-only walkthrough on the affected flow,
- a fix for focus movement and return behavior,
- visible
:focus-visiblestyling that survives all branded surfaces, - hidden content removed from the tab order until it is intentionally opened,
- one regression test or QA checklist item for the component.
That is much more useful than asking for "an accessibility review".
Owner checklist
- [ ] Every modal has correct open, trap, close, and focus-return behavior.
- [ ] Focus is visible on links, buttons, fields, and custom controls.
- [ ] Collapsed or hidden UI is not reachable by keyboard.
- [ ] Keyboard users can complete the primary journey without touching a mouse.
Where Scavo helps
Scavo checks keyboard-adjacent UX through rendered accessibility evidence, including tap-target and structure issues that often travel with focus problems.
Use that as a fast warning layer, then validate the real journey manually with a keyboard-only pass.
Sources
- W3C: Technique H102 for modal dialogs with the HTML dialog element
- W3C: Understanding Focus Not Obscured (Minimum)
- MDN:
<dialog>element - MDN:
showModal() - MDN:
:focus-visible
What to do next in Scavo
- Run a fresh scan on your main domain.
- Open the matching help guide in
/help, assign an owner, and ship the smallest safe fix. - Re-scan after deployment and confirm the trend is moving in the right direction.