Skip to content

iOS - Bottom tab bar appears after delay after swiping back from workspace settings #104257

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: 9.5.13-0
Reproducible in staging?: Yes
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #101339
Email or phone of affected tester (no customers): [email protected]
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: iPhone 17 Pro Max / iOS 27.0.1
App Component: Workspace Settings

Action Performed:

  1. Launch Expensify app.
  2. Go to Workspaces.
  3. Open any workspace.
  4. Open any settings.
  5. Swipe back to previous page.

Expected Result:

Bottom tab bar will be shown immediately after swiping back from workspace settings.

Actual Result:

Bottom tab bar appears after delay after swiping back from workspace settings.

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

To be added by Applause Leads

Bug7288098_1792153567793.ScreenRecording_10-16-2026_20-23-19_1.1.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Chandana Kiran
Bug ID: 7288098

Activity

  1. applause-bot commented on Oct 16, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/e9dba6b81899cb3b9ed659e6d4e9562e872b94a7fa6bdc6dfb4a670277b01599

  2. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 16, 2026
  3. melvin-bot commented on Oct 16, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #101339

  4. melvin-bot commented on Oct 16, 2026

    @melvin-bot

    @grgia @ZhenjaHorbach you have been assigned to this deploy blocker because you reviewed the offending PR: #101339

  5. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  6. melvin-bot commented on Oct 16, 2026

    @melvin-bot

    @sumo-slonik you have been assigned to this deploy blocker because you authored the offending PR: #101339

  7. melvin-bot commented on Oct 16, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  8. added and removed
    DeployBlockerCashThis issue or pull request should block deployment
    on Oct 16, 2026
  9. MelvinBot commented on Oct 16, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Analysis

    Causing PR: Add liquid glass bottom tab bar to iOS, Android and mWeb (high confidence).

    Recommendation: Fix forward in a follow-up. Don't revert. This is a cosmetic timing issue on a large feature that already has staging fixes cherry-picked on top. grgia has already removed DeployBlockerCash and closed this issue, and these findings support that.

    Why it happens: On iOS, the tab-root pages no longer draw their own tab bar. Only the native tab bar is left, and it shows only after the swipe-back pop is committed to navigation state. A patch then animates it in, which adds more delay.

    Investigation details

    Why this PR

    Mechanism

    1. Before this PR, each tab-root page drew its own tab bar through bottomContent. When you swiped back, the uncovered page already showed a bar.
    2. Now WorkspaceInitialPage.tsx:261-264 uses useTabRootScreenWrapperProps. On iOS, that hook returns no bottomContent (index.ios.tsx:27-30).
    3. shouldShowNativeTabBar depends on isTabRouteAtRoot(activeTabRoute) (useNativeTabNavigator.ts:62-66). It becomes tabBarStyle.display (index.ios.ts:60). The native stack only commits the pop after the swipe animation ends, so the bar stays hidden during the whole swipe.
    4. The PR's react-native-screens+4.28.0+002+animate-hiding-the-native-tab-bar.patch calls setTabBarHidden:animated:YES. After the pop, UIKit slides the bar in, which adds more delay.

    This likely affects swiping back to any tab root, not just Workspaces.

    Suggested fix

    • Add a hook to the tab-root pages that listens to the native stack's transitionStart event. When closing === false, set a shared "tab root appearing" flag. Clear it on closing === true (including a cancelled swipe) or transitionEnd. ScreenLayout.tsx:49-55 already subscribes to these events.
    • In useNativeTabNavigator, show the bar when isTabRouteAtRoot(activeTabRoute) || isTabRootAppearing.
    • Cheaper partial fix: in the patch, animate only when hiding (animated:(_tabBarHidden && ...)). This removes the slide-in but not the wait for the pop.

    I did not test this on a device, because the bug needs native iOS swipe-back.


    Next Steps: Reply with @MelvinBot implement this to create a draft PR, or @MelvinBot <your feedback> to refine this analysis.


    view run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions