From 31556bfed6a32815fd39cfb98073e08528c109a6 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Mon, 3 Nov 2025 18:10:51 +0800 Subject: [PATCH] Fix race condition that prevents bottom tab bar from showing (#9246) --- app/screens/navigation.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/screens/navigation.ts b/app/screens/navigation.ts index 212c74166..23c7b592f 100644 --- a/app/screens/navigation.ts +++ b/app/screens/navigation.ts @@ -54,6 +54,12 @@ function setNavigationBarColor(screen: AvailableScreens, th?: Theme) { } } +function showBottomTabsIfNeeded(screen: AvailableScreens) { + if (screen === Screens.HOME) { + DeviceEventEmitter.emit(Events.TAB_BAR_VISIBLE, true); + } +} + export function registerNavigationListeners() { subscriptions?.forEach((v) => v.remove()); subscriptions = [ @@ -107,10 +113,7 @@ function onCommandListener(name: string, params: any) { } const screen = NavigationStore.getVisibleScreen(); - if (screen === Screens.HOME) { - DeviceEventEmitter.emit(Events.TAB_BAR_VISIBLE, true); - } - + showBottomTabsIfNeeded(screen); setNavigationBarColor(screen); } @@ -118,13 +121,15 @@ function onPoppedListener({componentId}: ScreenPoppedEvent) { // screen pop does not trigger registerCommandListener, but does trigger screenPoppedListener const screen = componentId as AvailableScreens; NavigationStore.removeScreenFromStack(screen); + + // If we pop to home, we need to show the tab bar + showBottomTabsIfNeeded(NavigationStore.getVisibleScreen()); + setNavigationBarColor(screen); } function onScreenWillAppear(event: ComponentWillAppearEvent) { - if (event.componentId === Screens.HOME) { - DeviceEventEmitter.emit(Events.TAB_BAR_VISIBLE, true); - } + showBottomTabsIfNeeded(event.componentId as AvailableScreens); } export const loginAnimationOptions = () => {