From 4fd045b7ab5a6309dcc3d21374c2159166185e75 Mon Sep 17 00:00:00 2001 From: Pixel Perfect Date: Sat, 24 Oct 2026 19:17:05 -0700 Subject: [PATCH 1/2] fix(ios): hide workspace tabs when opening a thread --- .../createWorkspaceStackNavigator.ios.tsx | 12 ++--- .../src/native/createV5StackNavigator.ios.tsx | 12 +++-- .../native/workspace-stack-projection.test.ts | 44 +++++++++++++++++++ .../src/native/workspace-stack-projection.ts | 5 +++ 4 files changed, 64 insertions(+), 9 deletions(-) diff --git a/apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx b/apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx index e94a5ea9296eb..a8e3b7a451df8 100644 --- a/apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx +++ b/apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx @@ -59,6 +59,7 @@ import { collapsedSplitTransition, nativeWorkspacePopAction, projectWorkspaceStack, + workspaceDetailHidesTabs, partitionStackPresentations, reconcileStackScreens, type CollapsedSplitColumn, @@ -443,9 +444,9 @@ function WorkspaceColumns( function WorkspaceStackView(props: ViewProps & { readonly nativeColumns: boolean }) { const { layout } = useAdaptiveWorkspaceLayout(); const workspace = useWorkspaceTabs()!; - // Native dismiss commits the route pop after the transition. Restore the dock - // when the primary screen starts appearing, including interactive back gestures. - const [primaryVisible, setPrimaryVisible] = useState(false); + // Native Back reveals Home before the router pops. Scope that exception to its + // outgoing route so a new selection hides the dock before native callbacks arrive. + const [returningFrom, setReturningFrom] = useState(null); const metrics = useNativeLayoutMetrics(); const projection = projectWorkspaceStack(props.state, (route) => { const presentation = props.descriptors[route.key]?.options.presentation; @@ -469,8 +470,7 @@ function WorkspaceStackView(props: ViewProps & { readonly nativeColumns: boolean