useInteractionModality detects JAWS and NVDA as mouse in Chromium
#10.310 aberto em 7 de jul. de 2026
Métricas do repositório
- Stars
- (15.634 stars)
- Métricas de merge de PR
- (Métricas PR pendentes)
Description
Provide a general summary of the issue here
Scenario: useInteractionModality reports "mouse" when screen reader user interacts
GIVEN a user has started their screenreader (JAWS or NVDA) and a chromium browser (Chrome)
WHEN the user interacts with the page clicking a button
THEN the hook useInteractionModality reports the modality as "mouse"
🤔 Expected Behavior?
JAWS/NVDA + Chromium interactions are detected as virtual
😯 Current Behavior
JAWS/NVDA + Chromium interactions are detected as mouse
💁 Possible Solution
We created a very simple 'codepen' to log the event information for every browser and screen reader, to check if there is any difference in terms of the received information. https://es-d-95332884020260709-019f3c39-f927-7d3c-823e-4328eff26b40.codepen.dev/
We detected that the combination JAWS/NVDA + Chrome throws a clickevent and a pointerdown event after interacting with a button by pressing Enter. In addition, we receive pointerType as mouse.
JAWS/NVDA + Firefox and VoiceOver does not trigger a pointerdown event and the pointerType comes as an empty string, so we can detect the device is assistive technology.
We need another type of check for failing combinations to evaluate them as virtual interactions.
Test scenario
1- Navigate to https://codepen.io/editor/jesusgonzaleza/pen/019f3c39-f927-7d3c-823e-4328eff26b40 2- Start your screen reader 3- Interact with the "Simulate click" button 4- Check the reported data from the event
JAWS + Chrome
Insights: a pointerdown event is triggered and pointerType is mouse
JAWS + Firefox
Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string
VoiceOver + Firefox
Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string
VoiceOver + Chrome
Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string
🔦 Context
We detect if a user is a screen reader user in a SPA. In that case, we focus the title of the page in certain navigations so they are aware of changes.
We use useInteractionModality from @react-aria/interactions for some other component related complex accessibility logics.
🖥️ Steps to Reproduce
1- Start JAWS
2- Open Chrome
3- Interact with any button using the screen reader
4- Modality is reported as mouse
Version
3.28.1
What browsers are you seeing the problem on?
Chrome
If other, please specify.
No response
What operating system are you using?
Windows
🧢 Your Company/Team
No response
🕷 Tracking Issue
No response