[iOS][New Architecture] onAccessibilityAction with "activate" does not reliably fire VoiceOver double-tap without onAccessibilityTap

Ouverte
#58,630 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
react-native

Piste de recherche

Start with the mandatory reproducer and compare VoiceOver activation under the Old and New Architectures on a physical iOS device. Trace the accessibility action handling involved in the reported React Native example; done means the standard double-tap reliably invokes onAccessibilityAction without requiring onAccessibilityTap.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Needs: Triage :mag: Platform: iOS Type: New Architecture
Description

There appears to be a regression in the iOS accessibility activation behavior when enabling the React Native New Architecture.

With the Old Architecture, onAccessibilityAction with the activate action was sufficient to handle VoiceOver's standard double-tap gesture.

After enabling the New Architecture on iOS, the same implementation no longer reliably triggers onAccessibilityAction when the user performs the standard VoiceOver double-tap gesture.

Adding onAccessibilityTap makes the interaction work again.

Expected behavior

VoiceOver double-tap should trigger the activate accessibility action and invoke onAccessibilityAction.

<View
accessible={true}
accessibilityRole="switch"
accessibilityActions={[{name: 'activate'}]}
onAccessibilityAction={handleAccessibilityAction}
/>
Actual behavior

With the New Architecture enabled on iOS, VoiceOver can focus the element correctly, but performing the standard double-tap does not reliably invoke:

onAccessibilityAction

Adding:

onAccessibilityTap={handleAccessibilityAction}

causes the double-tap interaction to work.

Steps to reproduce

Steps to reproduce

  1. Create a new React Native project.
  2. Enable the New Architecture.
  3. Run the application on a physical iOS device.
  4. Enable VoiceOver.
  5. Focus the accessible switch.
  6. Perform the standard VoiceOver double-tap gesture.
  7. Observe whether onAccessibilityAction is invoked.
  8. Add onAccessibilityTap.
  9. Repeat the double-tap.
  10. Observe that the action is now triggered.
React Native Version

0.86.3

Affected Platforms

Runtime - iOS

Areas

Fabric - The New Renderer

Output of npx @react-native-community/cli info
System:
  OS: Windows 11 10.0.26200
  CPU: "(16) x64 AMD Ryzen 7 5800H with Radeon Graphics         "
  Memory: 862.17 MB / 5.86 GB
Binaries:
  Node:
    version: 24.15.0
    path: C:\Program Files\nodejs\node.EXE
  Yarn:
    version: 1.22.19
    path: C:\Users\Ola Abaza\AppData\Roaming\npm\yarn.CMD
  npm:
    version: 11.12.1
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK: Not Found
  Windows SDK: Not Found
IDEs:
  Android Studio: AI-212.5712.43.2112.8815526
  Visual Studio: Not Found
Languages:
  Java: Not Found
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli":
    installed: 20.1.0
    wanted: 20.1.0
  react:
    installed: 19.2.3
    wanted: 19.2.3
  react-native:
    installed: 0.86.3
    wanted: 0.86.3
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found
Stacktrace or Logs
.
MANDATORY Reproducer

https://github.com/OlaAbaza/rn-accessibility-reproducer

Screenshots and Videos

No response

Langage dominant
C++
Étoiles
127k
Forks
25.3k
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de react/react-native

Toutes les issues de react/react-native

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.