You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the app has a specific combination of bottom tabs, nested stack navigators and headerLeft, it can freeze and stop responding to input. The Xcode debugger shows 100% CPU usage while the app is frozen.
This only reproduces on iOS < 26. I've verified the issue on simulators with iOS 18.6 and 17.5.
Screen.Recording.2026-04-24.at.23.59.32.mov
Steps to reproduce
Run the code below. ⚠️ Important: run on iOS < 26 to reproduce the bug.
Press "Navigate to Form screen", then "Navigate to Detail screen", then "Go back".
Repeat step 2 a few times for good measure. Often doing it once is enough.
Press on "TabB".
Observe that the app no longer responds to touches. Observe high CPU usage and an eventual crash.
import{useLayoutEffect}from'react';import{Button,ScrollView,Text,TouchableOpacity}from'react-native';import{NavigationContainer}from'@react-navigation/native';import{createNativeStackNavigator}from'@react-navigation/native-stack';import{createBottomTabNavigator}from'@react-navigation/bottom-tabs';constMainScreen=({ navigation })=>(<Buttontitle="Navigate to Form screen"onPress={()=>navigation.navigate('Form')}/>);constScrollInnerScreen=()=>(<ScrollView>{Array.from({length: 50},(_,i)=>(<Textkey={i}>{i}</Text>))}</ScrollView>);constnestedStack=createNativeStackNavigator();constScrollScreen=()=>(<nestedStack.Navigator><nestedStack.Screenname="ScrollContent"component={ScrollInnerScreen}/></nestedStack.Navigator>);constbottomTabs=createBottomTabNavigator();constBottomTabsScreen=()=>(<bottomTabs.NavigatorinitialRouteName="TabA"><bottomTabs.Screenname="TabA"component={MainScreen}/><bottomTabs.Screenname="TabB"component={ScrollScreen}/></bottomTabs.Navigator>);constDetailOverviewScreen=({ navigation })=>{// Does not reproduce if I remove thisuseLayoutEffect(()=>{navigation.setOptions({headerLeft: ()=><TouchableOpacity/>});},[navigation]);return<Buttontitle="Go back"onPress={()=>navigation.goBack()}/>;};constdetailStack=createNativeStackNavigator();constDetailScreen=()=>(<detailStack.Navigator><detailStack.Screenname="DetailOverview"component={DetailOverviewScreen}/></detailStack.Navigator>);constFormScreen=({ navigation })=>(<Buttontitle="Navigate to Detail screen"onPress={()=>navigation.replace('Detail')}/>);constrootStack=createNativeStackNavigator();constApp=()=>(<NavigationContainer><rootStack.Navigator><rootStack.Screenname="Main"component={BottomTabsScreen}/><rootStack.Screenname="Detail"component={DetailScreen}/><rootStack.Screenname="Form"component={FormScreen}/></rootStack.Navigator></NavigationContainer>);exportdefaultApp;
I couldn't manage to reduce the repro further (e.g. remove bottom tabs) — seems that everything in the above code contributes to the freeze in some way.
Description
When the app has a specific combination of bottom tabs, nested stack navigators and
headerLeft, it can freeze and stop responding to input. The Xcode debugger shows 100% CPU usage while the app is frozen.This only reproduces on iOS < 26. I've verified the issue on simulators with iOS 18.6 and 17.5.
Screen.Recording.2026-04-24.at.23.59.32.mov
Steps to reproduce
I couldn't manage to reduce the repro further (e.g. remove bottom tabs) — seems that everything in the above code contributes to the freeze in some way.
Snack or a link to a repository
https://github.com/SimpleCreations/SEE_REPRO_ABOVE_sorry_bot
Screens version
4.24.0
React Native version
0.85.2
Platforms
iOS
JavaScript runtime
Hermes
Workflow
React Native (without Expo)
Architecture
Fabric (New Architecture)
Build type
Debug mode
Device
iOS simulator
Device model
iOS 18.6 simulator
Acknowledgements
Yes