infinitered / infinitered/ignite

Screen reader issues

Open
#2,730 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug drawer
Dominant language
TypeScript
Stars
19.9k
Forks
1.5k
PR merge metrics
No merged PRs in 30d

Description

Describe the bug

I was testing screen readers with the react-native-keyboard-controller changes to ensure it still worked, and realized v10 itself has some accessibility issues we need to fix.

A lot of this comes from the swap from DrawerLayout from react-native-gesture-handler to Drawer from react-navigation in https://github.com/infinitered/ignite/pull/2528. We shouldn't swap back to DrawerLayout: according to https://github.com/software-mansion/react-native-gesture-handler/issues/2414, this component hasn't been maintained and will likely continue to have issues due to the use of setNativeProps.

This means we'll need to either patch Drawer or find/build a replacement. I noticed the Drawer component is either at v4 or v7, and we're using v4, which makes me wonder if there might be updates for v7 that would be relevant to us

If building a replacement, DrawerLayout will still be a useful reference for which accessibility traits need managing, even if they do need to be set differently.

Ideally, we could also add tests to ensure the accessibility traits for the drawer are set correctly in the future.

List of issues I found follows, may not be exhaustive:

iOS

  • Demo showroom issues
    • voiceover linear navigation goes through menu items when drawer isn’t open
    • once menu is open, can’t focus menu items without directly touching them, gets stuck on back button
    • can’t actually focus content on demoshowroom screen at all
  • Navigating from Community → Podcast does not appropriately refocus cursor at top of screen
  • podcast screen
    • double-tap and hold to favorite episode didn’t work
    • not all text content is read out on podcast cards

Android

  • Says menu icon on drawer is unlabeled
  • menu back button not focusable at all
  • date and time labels on podcasts are not read out
  • double-tap and hold does work here!

https://github.com/user-attachments/assets/29765bc9-09e6-4c21-be60-5968f8abf992

Ignite version

10

Additional info

n/a

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inspecting the current react-navigation Drawer usage and compare its accessibility behavior with the referenced react-native-gesture-handler DrawerLayout. Reproduce the listed VoiceOver and TalkBack issues in the demo showroom and podcast screens, then determine whether the drawer can be patched or needs replacement. Add accessibility-trait tests if the chosen approach makes that practical.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native
Domain
accessibility, mobile-dev
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.