In a benefits application, document actions appear only on pointer hover; why does that fail across input modalities, and what would you do instead?
answer
- not every input can hover
- focus is not hover
- voice needs a visible name
- nothing signals hidden actions
- one universal path, then accelerators
basics
~20 sHover-only actions never appear for touch users, stay hidden from keyboard and voice users unless focus reveals them, and are undiscoverable for everyone. Show the actions persistently, or behind one visible 'more actions' control that works with every input.
solid answer
~50 sPointer hover is one modality's convenience, not a universal event. On a **touchscreen** there is no hover before contact, so the actions stay hidden or appear on a first tap that people read as broken. **Keyboard** users reach a row by focus, not hover, so unless focus reveals the actions too they are unreachable. **Voice-control** users activate controls by speaking their visible names, so a hidden 'Replace' cannot be spoken. Even mouse users must guess that anything is there, because nothing signals it. In a benefits application, where replacing a wrong document is a key recovery path, I would show 'Replace' and 'Remove' persistently on each document row, or put them behind one visible 'more actions' control that opens on tap, click, key press or spoken name. Hover can still add a highlight, but never be the only path.
go deeper
Recall that touch has no hover, keyboards move focus rather than hovering, and voice users need visible names, so hover-only actions hide from many people.
Explain how each modality targets controls and why the fix is a visible primary path with hover, gestures and shortcuts added as accelerators.
Show that you would audit an interface for single-modality dependencies, choose between persistent actions and an overflow control, and know the WCAG floors that apply.
Set a cross-platform rule for the design system: every action has a universal path, and hover or gesture behaviour is specified as an optional enhancement per platform.
## Input modalities differ in what they can do An **input modality** is a way of operating an interface: a mouse or trackpad pointer, a finger on a touchscreen, a stylus, a keyboard, voice control, or a switch device. A design that relies on something only one modality can do works only for that modality. Pointer hover is the classic case. | Modality | Has a hover phase? | How it targets a control | What happens to hover-only actions | |---|---|---|---| | Mouse or trackpad | Yes | Moves a pointer, then clicks | Visible, but only once the pointer crosses the row | | Touch | No | Touches the control directly | Hidden; may appear only after a first tap, which feels broken | | Keyboard | No, it has focus instead | Moves focus, then activates | Hidden unless focus reveals them too | | Voice control | No | Speaks the visible name of a control | Cannot be spoken, because no control with that name is shown | | Switch access | No | Steps through controls in sequence | Unreachable unless they join the sequence | Some styluses report hover and some touch environments emulate it on a first tap, but neither can be relied on. ## Why hover-only actions fail In a benefits application, each uploaded document row shows 'Replace' and 'Remove' only while the pointer is over it. That fails in four ways: 1. **Touch users** see a row with no actions. Replacing a blurred payslip, a key recovery path, looks impossible. 2. **Keyboard users** can reach the row, but unless focus reveals the same actions, they cannot reach them. 3. **Voice-control users** cannot say 'click Replace', because nothing on screen carries that name. 4. **Everyone** has a discoverability problem: nothing signals that actions exist until the pointer happens to cross the row. The usual argument for hover-reveal, a cleaner-looking list, rarely outweighs these costs on a task where replacing the wrong document is common. ## Better patterns - **Persistent, labelled actions** on each row: the most robust choice when rows have one or two actions. - **One visible 'more actions' control** per row, opening a menu on tap, click, key press or spoken name: good when there are several actions. - **Row activation opens a detail view** holding the actions, when each document has enough detail to deserve its own view. - **Reveal on focus as well as hover**, if a hover reveal is kept for density. This is a minimum for keyboard users, but it does nothing for touch or voice. Hover can still **enhance**: a highlight showing which row the pointer is on is helpful. It just cannot be the **only** way to find or reach an action. ## The general rule: one universal path, then accelerators Design each action with a **primary path** that any modality can use: a visible, named control operated by a single activation. Then add modality-specific **accelerators** for people who benefit from them: - hover highlights and contextual menus for pointers; - swipe or long-press gestures on touch; - keyboard shortcuts; - drag and drop, alongside a way to do the same thing without dragging. Native mobile platforms face exactly the same trade-off. A swipe-to-remove gesture on a document row is a hidden accelerator with no signifier; it is fine as long as a visible action exists too. A design system shared across web and native mobile should therefore specify hover behaviour as an enhancement that some platforms will simply not have. ## What the standards say Accessibility standards encode parts of this rule. Their detail belongs to accessibility practice, but an interaction designer should know they exist. Under WCAG 2.2: - **2.1.1 Keyboard** (Level A) requires all functionality to be operable through a keyboard interface, except where the underlying function depends on the path of the user's movement. - **2.5.1 Pointer Gestures** (Level A) requires functionality operated by multipoint or path-based gestures to be operable with a single pointer without such a gesture, unless the gesture is essential. - **2.5.7 Dragging Movements** (Level AA, new in 2.2) requires anything done by dragging to be achievable with a single pointer without dragging, with narrow exceptions. - **1.4.13 Content on Hover or Focus** (Level AA) applies when hover or focus reveals additional content: that content must be dismissible, hoverable and persistent. These are floors. Designing around a universal primary path meets them as a side effect, and it also serves people who never use assistive technology, such as someone holding a phone in one hand on a crowded bus.
- Is it enough to reveal hover-only row actions on keyboard focus as well?It fixes keyboard access but not touch, where there is neither hover nor focus before activation, and not voice control or discoverability, since nothing shows the actions until they appear. Revealing on focus is a minimum; persistent actions or one visible 'more actions' control are the robust fix.
- How do hidden gestures on native mobile, such as swipe to remove, relate to hover-only actions?They are the same pattern in another modality: a convenient accelerator with no signifier, invisible to anyone who does not already know it. Keep the gesture for experienced users, but make sure the same action is available as a visible, named control on the row or in its menu.
saying these in an interview costs you the question
- Touchscreens show hover states before a tap, so hover-only actions still work.
- Keyboard focus automatically triggers everything that pointer hover does.
- Hiding row actions until hover is fine because frequent users know they exist.
- Voice-control users can simply say the name of a control that is hidden.
- Hover-only actions are purely an accessibility issue, not a problem for other users.