You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-10-30] [Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta #104274
Version Number: 9.5.13-1 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): N/A Issue reported by: Applause Internal Team Bug source: Pull Request QA execution Device used: Android 16 / Samsung Galaxy A06 App Component: User Settings
Action Performed:
Open Expensify app
Turn on insightbeta from Account -Troubleshoot - Betta overrides
Expected Result:
Account is only shown on top bar
Actual Result:
Account is shown on both top and bottom bar, when the bottom bar is tapped app flashes Account page then returns to previous page.
👋 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:
Identify the pull request that introduced this issue and revert it.
Recommendation: Fix forward, or demote if a relaunch clears it (see below). A revert is costly: the PR is a ~90-file navigation rewrite with [CP Staging] Fix liquid glass bottom tab bar issues already on top. Account still opens from the top-bar avatar.
Root cause: Turning the beta on swaps which tab is hidden from Insights to Account (getTabWithoutBarItem.ts#L8-L10). The bottom-tabs patch then renders null for Account's native tab (hidden-tab-items.patch#L67-L70). On Android, removing a child from the native tabs host never reaches the tab bar, so Account's item stays.
Fix options:
On Android, keep the hidden tab mounted and hide only its menu item.
Or remount Tabs.Host when tabWithoutBarItem changes, for example by adding it to the host's key.
Please check before demoting: Force-close and relaunch with the beta already on.
If the bug clears, only a mid-session toggle triggers it, and demoting is reasonable.
If it persists, it hits every Insights-beta Android user and should be fixed before deploy.
Why the item stays (Android only): Inside react-native 0.86 Fabric, SurfaceMountingManager.removeViewAt checks the child with getChildAt. TabsHostViewManager doesn't override it, and tab screens live inside fragments. Fabric logs "view already removed from parent!" and returns early. TabsContainer.removeTabsScreenAt never runs. iOS removes the tab normally.
Why Account shows twice: The top-bar avatar also shows, because isAccountAvatarShown (useNativeTabNavigator.ts#L123) follows the beta.
Why tapping flashes Account and bounces back: The tap selects Account natively. JS then navigates to Account, which is now a hidden route. The patch tells native to select the last visible tab instead (hidden-tab-items.patch#L25-L29, #L50-L60).
Why it might persist after relaunch:isBetaEnabled returns false while betas load (src/hooks/usePermissions.ts). If the tab bar renders before betas load, the same flip happens on every launch.
Not verified: Nobody tested this on a device. The Android native mechanism comes from reading the react-native and react-native-screens source.
Next Steps: Reply with @MelvinBot <your feedback> to refine this analysis.
changed the title [-]101339 - Android - Account is displayed on bottom and top bar on insightbeta[/-][+][Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/+]on Oct 19, 2026
changed the title [-][Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/-][+][Due for payment 2026-10-30] [Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/+]on Oct 23, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.18-1 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-10-30. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]
Activity
applause-bot commentedon Oct 16, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/44439e9e99282588366df236086e9313a4dd698fe918e6cd6797fc35535c262e
melvin-bot commentedon Oct 16, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #101339
melvin-bot commentedon Oct 16, 2026
@grgia @ZhenjaHorbach you have been assigned to this deploy blocker because you reviewed the offending PR: #101339
melvin-bot commentedon Oct 16, 2026
@sumo-slonik you have been assigned to this deploy blocker because you authored the offending PR: #101339
melvin-bot commentedon Oct 16, 2026
💬 A slack conversation has been started in #expensify-open-source
github-actions commentedon Oct 16, 2026
👋 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:
MelvinBot commentedon Oct 16, 2026
Deploy Blocker Analysis
Causing PR: Add liquid glass bottom tab bar to iOS, Android and mWeb (high confidence). This is a real bug, not the intended design. The PR's own description says Account moves to the top bar under the Insights beta.
Recommendation: Fix forward, or demote if a relaunch clears it (see below). A revert is costly: the PR is a ~90-file navigation rewrite with [CP Staging] Fix liquid glass bottom tab bar issues already on top. Account still opens from the top-bar avatar.
Root cause: Turning the beta on swaps which tab is hidden from Insights to Account (getTabWithoutBarItem.ts#L8-L10). The bottom-tabs patch then renders
nullfor Account's native tab (hidden-tab-items.patch#L67-L70). On Android, removing a child from the native tabs host never reaches the tab bar, so Account's item stays.Fix options:
Tabs.HostwhentabWithoutBarItemchanges, for example by adding it to the host's key.Please check before demoting: Force-close and relaunch with the beta already on.
Investigation details
SurfaceMountingManager.removeViewAtchecks the child withgetChildAt.TabsHostViewManagerdoesn't override it, and tab screens live inside fragments. Fabric logs "view already removed from parent!" and returns early.TabsContainer.removeTabsScreenAtnever runs. iOS removes the tab normally.isAccountAvatarShown(useNativeTabNavigator.ts#L123) follows the beta.isBetaEnabledreturnsfalsewhile betas load (src/hooks/usePermissions.ts). If the tab bar renders before betas load, the same flip happens on every launch.Next Steps: Reply with
@MelvinBot <your feedback>to refine this analysis.view run
9 remaining items
[-]101339 - Android - Account is displayed on bottom and top bar on insightbeta[/-][+][Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/+][-][Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/-][+][Due for payment 2026-10-30] [Requires Insights Beta] 101339 - Android - Account is displayed on bottom and top bar on insightbeta[/+]melvin-bot commentedon Oct 23, 2026
@ZhenjaHorbach
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.18-1 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
Insightsbeta is on #104368If no regressions arise, payment will be issued on 2026-10-30. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]
ZhenjaHorbach commentedon Oct 26, 2026
@grgia
I think we can close this!