Skip to main content

ActivityIndicator Ignores Its Label on iOS

On iOS, <ActivityIndicator accessibilityLabel="Loading orders" /> is exposed to VoiceOver with the label "In progress", the default label of the native indicator. The label goes to a wrapper view that is not an accessibility element. Android uses the label.

  • Checked: 22–23 October 2026
  • Versions: React Native 0.88.0
  • Devices: iOS 27.0 Simulator (Accessibility Inspector); Android 17 emulator
  • Upstream: react/react-native#59380, fix #59381: open

How It Was Checked​

The indicator D in the reproducer, read with Accessibility Inspector:

<ActivityIndicator accessibilityLabel="Loading D" />

Result​

VariantLabelValueElement
accessibilityLabel"In progress"1The native indicator
accessible + accessibilityLabel"Loading D"noneThe React Native wrapper view
  • With accessible the label is read, but the indicator's value is lost.
  • On Android 17 the label is used: content-desc="Loading D".
  • The cause: the accessibility props go to the wrapper view, VoiceOver skips it and reads the inner UIActivityIndicatorView. Switch solves the same case by exposing the inner native view as the accessibility element.

Upstream​

react/react-native#59380 is the issue, react/react-native#59381 the fix; it was checked on the Simulator with React Native built from source (the label is used and the value kept). Open on 27 October 2026.