Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Android] TalkBack announces the last text element of a Modal before the first #49796

Open
JoaoMosmann opened this issue Mar 3, 2025 · 1 comment

Comments

@JoaoMosmann
Copy link

JoaoMosmann commented Mar 3, 2025

Description

When a Modal is opened while TalkBack is enabled, the last text element inside of a modal is announced before the first which is currently focused.

As in the Reproducer example, when this modal gets opened

<Modal>
  <View>
    <Text role="heading">Title</Text>
    <Text>Body description</Text>
    <Text>Body description 2</Text>
    <Text>Body description 3</Text>
    <Button title="Close Modal" />
  </View>
</Modal>

The announcer will say Close Modal, title heading while the focus is on the Title.
The expected behavior would be it to say only title heading

Initially I found the bug on the version 0.74.5. However it's slightly different. On 0.74.5, the behavior is a bit flaky, but most of the time the first text item is announced instead, but ignoring its role. And the focus goes to the second element. So instead of TalkBack announcing title heading, it announces title, body description. So something changed between these versions, but neither have the expected behavior.

Steps to reproduce

  1. Install dependencies with yarn
  2. Run metro server with yarn start
  3. Run android app yarn android
  4. Enable TalkBack on the emulators settings or by running adb shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService on the terminal
  5. Press the Open Modal button

React Native Version

0.78.0

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info

System:
  OS: macOS 15.2
  CPU: (12) arm64 Apple M3 Pro
  Memory: 88.69 MB / 18.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.8.0
    path: /opt/homebrew/bin/node
  Yarn: Not Found
  npm:
    version: 10.8.2
    path: /opt/homebrew/bin/npm
  Watchman:
    version: 2024.09.09.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.0
      - iOS 18.0
      - macOS 15.0
      - tvOS 18.0
      - visionOS 2.0
      - watchOS 11.0
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.18034.62.2412.12266719
  Xcode:
    version: 16.0/16A242d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.12
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.0.1
    wanted: 15.0.1
  react:
    installed: 19.0.0
    wanted: 19.0.0
  react-native:
    installed: 0.78.0
    wanted: 0.78.0
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: false

Stacktrace or Logs

N/A

Reproducer

https://github.com/JoaoMosmann/ReactNativeModalTalkBackBugReproducer

Screenshots and Videos

React Native 0.78.0 (Last text element is announced first)
https://github.com/user-attachments/assets/34c8161f-8b81-4d11-adc2-c3df52732978

React Native 0.74.5 (First element is announced, by without its role, but focus goes to second element instead)
https://github.com/user-attachments/assets/0047d323-d113-4293-b256-c5c6617e2ba2

@cipolleschi
Copy link
Contributor

@JoaoMosmann Thanks for opening the issue. I forwarded it internally to people handling accessibility for Android.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants