A View Live Region With Only Layout Styles Is Flattened Away
A View with aria-live or accessibilityLiveRegion and no style (or only
layout styles) is removed from the native tree by view flattening in React
Native 0.88, so the live region does not exist and TalkBack announces nothing.
collapsable={false} keeps the view and the live region works.
- Checked: 21 October 2026
- Versions: React Native 0.88.0, Expo SDK 58 (development build)
- Devices: Samsung phone (SM-A276B), Android 16, TalkBack
- Upstream:
react/react-native#59329,
fix #59335: landed in
main
How It Was Checked
The announcements case of Memo Lab:
counters in live regions, each changed by its own button; activate a button and
wait for the announcement. Later the
reproducer (plain React
Native CLI, counters that change by themselves) showed the same, and was used to
check the fix with React Native built from source.
<>
{/* Silent: the View is flattened */}
<View aria-live="polite">
<Text>Cart: {count} items</Text>
</View>
{/* Announced */}
<View aria-live="polite" collapsable={false}>
<Text>Cart: {count} items</Text>
</View>
</>
Result
- Without
collapsable={false}the counter is not announced, with it it is.Viewconvertsaria-livetoaccessibilityLiveRegion, so aViewwithaccessibilityLiveRegionis flattened the same way (read from the code). - The cause: Fabric keeps a host view for
accessibilityViewIsModal,accessibilityElementsHiddenandimportantForAccessibility, but not for a live region. A live region is announced without the view beingaccessible, so it needs a view of its own. - A
Viewwith a background color, a border,opacity, atransform,testIDornativeIDis kept anyway, which is why a quick test often does not show the problem. Layout styles such aspaddingorflexDirectiondo not keep it.
Upstream
react/react-native#59335
keeps a View that is a live region. It landed in main on 23 October 2026; on
27 October 2026 it is not in a release (0.88.1 does not include it).