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
- Create an app from the community template on the latest stable React Native.
- 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

Description
tabbaris a valid value of the publicAccessibilityRoleunion in both Flow and TypeScript, with nothing marking it iOS-only.On iOS it maps to
UIAccessibilityTraitTabBar;on Android the
AccessibilityRoleenum has noTABBARentry, sofromValue()throws duringcreateViewInstanceand 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 toUIAccessibilityTraitNoneinstead of raising.Expected: unsupported roles are ignored on Android rather than throwing — or
tabbaris typed as iOS-only.Steps to reproduce
accessibilityRole="tabbar":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 infoStacktrace or Logs
MANDATORY Reproducer
https://github.com/serhiihusachenko-epam/rn-Issue-tabbar
Screenshots and Videos