From 8c5a423459b0e6c3854123900eef6439522e1258 Mon Sep 17 00:00:00 2001 From: Krzysztof Ligarski Date: Wed, 26 Nov 2025 11:36:19 +0100 Subject: [PATCH 1/3] delay setting navigation bar visibility --- ios/RNSScreenStackHeaderConfig.mm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ios/RNSScreenStackHeaderConfig.mm b/ios/RNSScreenStackHeaderConfig.mm index 83ec903ea9..0d3b4d9ad3 100644 --- a/ios/RNSScreenStackHeaderConfig.mm +++ b/ios/RNSScreenStackHeaderConfig.mm @@ -575,12 +575,13 @@ + (void)updateViewController:(UIViewController *)vc vc.edgesForExtendedLayout = UIRectEdgeAll; } - [navctr setNavigationBarHidden:shouldHide animated:animated]; - [config applySemanticContentAttributeIfNeededToNavCtrl:navctr]; if (shouldHide) { navitem.title = config.title; + + // Setting navigation bar visibility is split to mitigate iOS 26 bug with bar button items. + [navctr setNavigationBarHidden:shouldHide animated:animated]; return; } @@ -724,6 +725,10 @@ + (void)updateViewController:(UIViewController *)vc navitem.rightBarButtonItems = [config barButtonItemsFromConfigs:config.headerRightBarButtonItems withCurrentItems:navitem.rightBarButtonItems]; + // Setting navigation bar visibility is split to mitigate iOS 26 bug with bar button items + // (setting nav bar visibility should be done after `navitem.*BarButtonItems`). + [navctr setNavigationBarHidden:shouldHide animated:animated]; + if (animated && vc.transitionCoordinator != nil && vc.transitionCoordinator.presentationStyle == UIModalPresentationNone && !wasHidden) { // when there is an ongoing transition we may need to update navbar setting in animation block From bf737062685316043cc6c3f0edfb159c7fb21023 Mon Sep 17 00:00:00 2001 From: Krzysztof Ligarski Date: Wed, 26 Nov 2025 11:51:09 +0100 Subject: [PATCH 2/3] add test screen --- apps/src/tests/Test3422.tsx | 108 ++++++++++++++++++++++++++++++++++++ apps/src/tests/index.ts | 1 + 2 files changed, 109 insertions(+) create mode 100644 apps/src/tests/Test3422.tsx diff --git a/apps/src/tests/Test3422.tsx b/apps/src/tests/Test3422.tsx new file mode 100644 index 0000000000..9b18c15afc --- /dev/null +++ b/apps/src/tests/Test3422.tsx @@ -0,0 +1,108 @@ +import React from 'react'; +import { + DarkTheme, + DefaultTheme, + NavigationContainer, + ParamListBase, +} from '@react-navigation/native'; +import { + NativeStackNavigationProp, + createNativeStackNavigator, +} from '@react-navigation/native-stack'; +import { Button, Image, ScrollView, Text, useColorScheme } from 'react-native'; +import { HeaderBackButton } from '@react-navigation/elements'; + +type RouteParamList = { + Screen1: undefined; + Screen2: undefined; + Screen3: undefined; +}; + +type NavigationProp = { + navigation: NativeStackNavigationProp; +}; + +type StackNavigationProp = NavigationProp; + +const Stack = createNativeStackNavigator(); + +function Screen1({ navigation }: StackNavigationProp) { + return ( + +