Skip to content

accessibilityRole="tabbar" throws "Invalid accessibility role value: tabbar" on Android #57890

Description

@serhiihusachenko-epam

Description

tabbar is a valid value of the public AccessibilityRole union in both Flow and TypeScript, with nothing marking it iOS-only.
On iOS it maps to UIAccessibilityTraitTabBar;
on Android the AccessibilityRole enum has no TABBAR entry, so fromValue() throws during createViewInstance and the app crashes on mount.

It is the only value in the union Android fails to resolve, and it is inconsistent with iOS, where
roles UIKit has no trait for (e.g. tablist) fall back to UIAccessibilityTraitNone instead of raising.

Expected: unsupported roles are ignored on Android rather than throwing — or tabbar is typed as iOS-only.

Steps to reproduce

  1. Create an app from the community template on the latest stable React Native.
  2. Render any view with accessibilityRole="tabbar":
    <View accessibilityRole="tabbar">
      <Text>hello</Text>
    </View>

Run on Android with yarn android.
Notice the crash on mount: Invalid accessibility role value: tabbar.
Run the same code on iOS — it renders fine and applies UIAccessibilityTraitTabBar.

React Native Version

0.86.2

Affected Platforms

Runtime - Android

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

System:
  OS: macOS 15.7.7
  CPU: (12) arm64 Apple M4 Pro
  Memory: 193.80 MB / 24.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.22.3
    path: /Users/serhii_husachenko/.nvm/versions/node/v22.22.3/bin/node
  Yarn:
    version: 1.22.22
    path: /Users/serhii_husachenko/.nvm/versions/node/v22.22.3/bin/yarn
  npm:
    version: 10.9.8
    path: /Users/serhii_husachenko/.nvm/versions/node/v22.22.3/bin/npm
  Watchman:
    version: 2025.10.13.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.2
      - iOS 26.2
      - macOS 26.2
      - tvOS 26.2
      - visionOS 26.2
      - watchOS 26.2
  Android SDK:
    API Levels:
      - "34"
      - "35"
      - "36"
    Build Tools:
      - 34.0.0
      - 35.0.0
      - 36.0.0
      - 36.1.0
    System Images:
      - android-34 | Google APIs ARM 64 v8a
      - android-36 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2025.1 AI-251.26094.121.2512.13840223
  Xcode:
    version: 26.3/17C529
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.16
    path: /usr/bin/javac
  Ruby:
    version: 3.1.4
    path: /Users/serhii_husachenko/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react: Not Found
  react-native: Not Found
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs

Error while updating prop accessibilityRole
                                                                                                    java.lang.reflect.InvocationTargetException
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:93)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.kt:155)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$GenericViewManagerDelegate.setProperty(ViewManagerPropertyUpdater.kt:188)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:102)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createViewInstance(ViewManager.java:229)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:147)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createViewUnsafe(SurfaceMountingManager.kt:613)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createView$ReactAndroid_debug(SurfaceMountingManager.kt:564)
                                                                                                    	at com.facebook.react.fabric.mounting.mountitems.IntBufferBatchMountItem.execute(IntBufferBatchMountItem.kt:109)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.executeOrEnqueue(MountItemDispatcher.kt:379)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems$lambda$7$lambda$6(MountItemDispatcher.kt:269)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.$r8$lambda$4xp_oXLXKRRjXh_WfqmwhGWbzaM(Unknown Source:0)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher$$ExternalSyntheticLambda4.invoke(D8$$SyntheticClass:0)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:46)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:35)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems(MountItemDispatcher.kt:250)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.tryDispatchMountItems(MountItemDispatcher.kt:94)
                                                                                                    	at com.facebook.react.fabric.FabricUIManager$DispatchUIFrameCallback.doFrameGuarded(FabricUIManager.java:1624)
                                                                                                    	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.kt:42)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.frameCallback$lambda$1(ReactChoreographer.kt:58)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.$r8$lambda$nSkFhrr5T7rop_XKwzlLov4NLLw(Unknown Source:0)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer$$ExternalSyntheticLambda0.doFrame(D8$$SyntheticClass:0)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1568)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
                                                                                                    	at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
                                                                                                    	at android.view.Choreographer.doFrame(Choreographer.java:1104)
                                                                                                    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:995)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:248)
                                                                                                    	at android.os.Looper.loop(Looper.java:338)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:9067)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
                                                                                                    Caused by: java.lang.IllegalArgumentException: Invalid accessibility role value: tabbar
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole$Companion.fromValue(ReactAccessibilityDelegate.kt:511)
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole.fromValue(Unknown Source:2)
                                                                                                    	at com.facebook.react.uimanager.BaseViewManager.setAccessibilityRole(BaseViewManager.java:347)
                                                                                                    	... 36 more
2026-08-10 22:47:43.935  5061-5061  unknown:Mo...Dispatcher com.rnissuerepro                     E  dispatchMountItems: caught exception, displaying mount state
                                                                                                    com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'accessibilityRole' of a view managed by: RCTView
                                                                                                    	at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:101)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.kt:155)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$GenericViewManagerDelegate.setProperty(ViewManagerPropertyUpdater.kt:188)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:102)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createViewInstance(ViewManager.java:229)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:147)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createViewUnsafe(SurfaceMountingManager.kt:613)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createView$ReactAndroid_debug(SurfaceMountingManager.kt:564)
                                                                                                    	at com.facebook.react.fabric.mounting.mountitems.IntBufferBatchMountItem.execute(IntBufferBatchMountItem.kt:109)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.executeOrEnqueue(MountItemDispatcher.kt:379)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems$lambda$7$lambda$6(MountItemDispatcher.kt:269)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.$r8$lambda$4xp_oXLXKRRjXh_WfqmwhGWbzaM(Unknown Source:0)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher$$ExternalSyntheticLambda4.invoke(D8$$SyntheticClass:0)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:46)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:35)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems(MountItemDispatcher.kt:250)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.tryDispatchMountItems(MountItemDispatcher.kt:94)
                                                                                                    	at com.facebook.react.fabric.FabricUIManager$DispatchUIFrameCallback.doFrameGuarded(FabricUIManager.java:1624)
                                                                                                    	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.kt:42)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.frameCallback$lambda$1(ReactChoreographer.kt:58)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.$r8$lambda$nSkFhrr5T7rop_XKwzlLov4NLLw(Unknown Source:0)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer$$ExternalSyntheticLambda0.doFrame(D8$$SyntheticClass:0)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1568)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
                                                                                                    	at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
                                                                                                    	at android.view.Choreographer.doFrame(Choreographer.java:1104)
                                                                                                    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:995)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:248)
                                                                                                    	at android.os.Looper.loop(Looper.java:338)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:9067)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
                                                                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:93)
                                                                                                    	... 34 more
                                                                                                    Caused by: java.lang.IllegalArgumentException: Invalid accessibility role value: tabbar
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole$Companion.fromValue(ReactAccessibilityDelegate.kt:511)
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole.fromValue(Unknown Source:2)
2026-08-10 22:47:43.935  5061-5061  unknown:Mo...Dispatcher com.rnissuerepro                     E  	at com.facebook.react.uimanager.BaseViewManager.setAccessibilityRole(BaseViewManager.java:347)
                                                                                                    	... 36 more
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  Views created for surface 1:
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  <null id=16 parentTag=null isRoot=false />
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  <RootView id=1 parentTag=16908290 isRoot=true />
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  <RNCSafeAreaProvider id=2 parentTag=1 isRoot=false />
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  <DebuggingOverlay id=6 parentTag=8 isRoot=false />
2026-08-10 22:47:43.935  5061-5061  unknown:Su...ingManager com.rnissuerepro                     E  <RCTView id=8 parentTag=1 isRoot=false />
2026-08-10 22:47:43.936  5061-5061  unknown:FabricUIManager com.rnissuerepro                     E  Exception thrown when executing UIFrameGuarded
                                                                                                    com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'accessibilityRole' of a view managed by: RCTView
                                                                                                    	at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:101)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.kt:155)
                                                                                                    	at com.facebook.react.uimanager.ViewManagerPropertyUpdater$GenericViewManagerDelegate.setProperty(ViewManagerPropertyUpdater.kt:188)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:102)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createViewInstance(ViewManager.java:229)
                                                                                                    	at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:147)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createViewUnsafe(SurfaceMountingManager.kt:613)
                                                                                                    	at com.facebook.react.fabric.mounting.SurfaceMountingManager.createView$ReactAndroid_debug(SurfaceMountingManager.kt:564)
                                                                                                    	at com.facebook.react.fabric.mounting.mountitems.IntBufferBatchMountItem.execute(IntBufferBatchMountItem.kt:109)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.executeOrEnqueue(MountItemDispatcher.kt:379)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems$lambda$7$lambda$6(MountItemDispatcher.kt:269)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.$r8$lambda$4xp_oXLXKRRjXh_WfqmwhGWbzaM(Unknown Source:0)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher$$ExternalSyntheticLambda4.invoke(D8$$SyntheticClass:0)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:46)
                                                                                                    	at com.facebook.react.internal.tracing.PerformanceTracer.trace(PerformanceTracer.kt:35)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.dispatchMountItems(MountItemDispatcher.kt:250)
                                                                                                    	at com.facebook.react.fabric.mounting.MountItemDispatcher.tryDispatchMountItems(MountItemDispatcher.kt:94)
                                                                                                    	at com.facebook.react.fabric.FabricUIManager$DispatchUIFrameCallback.doFrameGuarded(FabricUIManager.java:1624)
                                                                                                    	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.kt:42)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.frameCallback$lambda$1(ReactChoreographer.kt:58)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer.$r8$lambda$nSkFhrr5T7rop_XKwzlLov4NLLw(Unknown Source:0)
                                                                                                    	at com.facebook.react.modules.core.ReactChoreographer$$ExternalSyntheticLambda0.doFrame(D8$$SyntheticClass:0)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1568)
                                                                                                    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
                                                                                                    	at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
                                                                                                    	at android.view.Choreographer.doFrame(Choreographer.java:1104)
                                                                                                    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:995)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:248)
                                                                                                    	at android.os.Looper.loop(Looper.java:338)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:9067)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
                                                                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:93)
                                                                                                    	... 34 more
                                                                                                    Caused by: java.lang.IllegalArgumentException: Invalid accessibility role value: tabbar
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole$Companion.fromValue(ReactAccessibilityDelegate.kt:511)
                                                                                                    	at com.facebook.react.uimanager.ReactAccessibilityDelegate$AccessibilityRole.fromValue(Unknown Source:2)
2026-08-10 22:47:43.936  5061-5061  unknown:FabricUIManager com.rnissuerepro                     E  	at com.facebook.react.uimanager.BaseViewManager.setAccessibilityRole(BaseViewManager.java:347)
                                                                                                    	... 36 more

MANDATORY Reproducer

https://github.com/serhiihusachenko-epam/rn-Issue-tabbar

Screenshots and Videos

Image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions