NativeTabs hidden prop: no animation + no gesture tracking — request for hidesBottomBarWhenPushed equivalent
#46270
Replies: 1 comment
-
|
I can confirm this behavior and have run into the same limitation when building production apps with Expo Router NativeTabs. The current Observed issues:
Expected behavior:
This is especially important for apps that push full-screen detail views from tab-based navigation, such as:
Having an option such as: <Stack.Screen
options={{
hidesBottomBarWhenPushed: true,
}}
/>would provide a much more native user experience and eliminate the need for workarounds based on route segments or focus events. Thanks for opening this issue. I would also like to see support for a native implementation. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
When using
NativeTabswith thehiddenprop to hide the tab bar on specific screens (the approach documented in the official Expo Router docs viauseSegmentsor Context API), the result feels broken compared to native iOS behavior:No animation: the tab bar disappears/appears instantly. The underlying native call in
RNSTabsHostComponentView.mmis[_controller setTabBarHidden:_tabBarHidden animated:NO]— hardcodedanimated:NO.No gesture tracking: during an interactive swipe-back gesture,
useSegments(oruseFocusEffect) only updates after the gesture commits, not during it. So mid-swipe, the previous screen is visible underneath but the tab bar is hidden — it then pops in abruptly when the gesture completes. It is clearly visible and looks bad.The result is an app that feels janky and unpolished. For any serious app that wants to hide the tab bar on a pushed screen, this is a real blocker.
Expected behavior
This is exactly what UIKit's
hidesBottomBarWhenPushed = truedoes onUIViewController:What I have tried
useSegmentsin_layout.tsx→ hides correctly on push, but the return is abrupt and mid-swipe the tab bar is invisibleuseFocusEffect+ Context API → same mid-swipe issue, and on push the tab bar remains visible during the animationtransitionStart { closing: true }event → tab bar appears at gesture start (better than after commit), but instantly and not proportionallySwiftUI's
.toolbar(.hidden, for: .tabBar)does not apply here since react-native-screens usesUITabBarController(UIKit), notSwiftUI TabView.Request
Please expose
hidesBottomBarWhenPushedinStack.Screenoptions (or an equivalent), so that the tab bar hides and shows with full native animation and gesture tracking — exactly the way every native iOS app does it.Beta Was this translation helpful? Give feedback.
All reactions