Skip to content

fix(ui-modal): voiceOver in Chrome treats scrollable modal body as single interactive object preventing line-by-line navigation#2405

Merged
matyasf merged 1 commit intomasterfrom
add_modal_scroll_aria
Feb 18, 2026
Merged

fix(ui-modal): voiceOver in Chrome treats scrollable modal body as single interactive object preventing line-by-line navigation#2405
matyasf merged 1 commit intomasterfrom
add_modal_scroll_aria

Conversation

@matyasf
Copy link
Collaborator

@matyasf matyasf commented Feb 13, 2026

VoiceOver in Chrome treats scrollable modal body as a single interactive object, preventing line-by-line navigation in browse mode. This commit adds an aria-label to this to the Modal's body when it has a scrollbar fixing the issue.

To test:

  1. Create a modal dialog with vertically scrollable content
  2. Open modal in Chrome
  3. Use VoiceOver browse mode (Control + Option + arrow keys)
  4. Attempt to navigate line-by-line within modal body

Fixes INSTUI-4900

…ngle interactive object preventing line-by-line navigation

VoiceOver in Chrome treats scrollable modal body as a single interactive object, preventing
line-by-line navigation in browse mode. This commit adds an aria-label to this to the Modal's body
when it has a scrollbar fixing the issue.

To test:
1. Create a modal dialog with vertically scrollable content
2. Open modal in Chrome
3. Use VoiceOver browse mode (Control + Option + arrow keys)
4. Attempt to navigate line-by-line within modal body

Fixes INSTUI-4900
@matyasf matyasf self-assigned this Feb 13, 2026
@github-actions
Copy link

github-actions bot commented Feb 13, 2026

PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-02-18 10:29 UTC

Copy link
Contributor

@joyenjoyer joyenjoyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Despite being a hack, this is a great solution. I like it, it worked well in Chrome for me.

Copy link
Contributor

@balzss balzss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

works

css={this.props.styles?.modalBody}
padding={padding}
// check if there is a scrollbar, if so, the element has to be tabbable
{...(hasScrollbar
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick but this section could have also been extracted for cleaner jsx

const hasScrollbar = ...
const tabbable = hasScrollbar ? { ...
...
<View
  {...tabbable}
...

@matyasf matyasf merged commit 0be3fb1 into master Feb 18, 2026
10 of 11 checks passed
@matyasf matyasf deleted the add_modal_scroll_aria branch February 18, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments