isAccessibilityFocusable

@Json(name = "isAccessibilityFocusable")
val isAccessibilityFocusable: Boolean

Determines whether this element receives individual TalkBack focus, or gets absorbed by an ancestor.

Based on TalkBack's shouldFocusNode() logic, which combines two concepts:

  • isActionable: clickable/longClickable/focusable or has those actions

  • isSpeakingNode: has text/contentDescription, or has non-focusable speaking descendants

Actionable nodes always get focus. Speaking-but-not-actionable nodes get focus only if no speaking ancestor above them would absorb their content. Scrollable containers never get focus themselves.

TalkBack reference: https://github.com/google/talkback/blob/26a27dc009d5b3605e744222541f045a3c24e038/utils/src/main/java/com/google/android/accessibility/utils/AccessibilityNodeInfoUtils.java#L779 TalkBack reference 2: https://github.com/google/talkback/blob/26a27dc009d5b3605e744222541f045a3c24e038/utils/src/main/java/com/google/android/accessibility/utils/AccessibilityNodeInfoUtils.java#L755 React Native reference: https://github.com/OlimpiaZurek/react-native/commit/e6d01aee