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-12] mweb - Expense - Menu remains openeed after opening expense via growl #102857
Version Number: 9.5.1-1 Reproducible in staging?: Yes Reproducible in production?: N/A - new feature, doesn't exist in prod If this was caught during regression testing, add the test name, ID and link from BrowserStack:#100015 Email or phone of affected tester (no customers):jsoidjndoiniodnsjojd@gmail.com Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Samsung Galaxy S25 FE / Android 16 App Component: Money Requests
Action Performed:
Go to staging.new.expensify.com
Create an expense in workspace chat.
Go to Spend > Expenses.
Long tap on the expense > Select.
Tap dropdown button > Duplicate expense.
Tap on the expense to select it.
Open dropdown menu.
Tap View on Expense added growl.
Expected Result:
Menu will close after opening expense via growl.
Actual Result:
Menu remains openeed after opening expense via growl.
👋 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.
Root Cause: The PR moved the growl above every popover. Its "View" button then navigates without closing the open bulk-actions menu. So the menu stays open on top of the expense.
Recommendation: Revert. This bug is cosmetic. But the same PR has caused 6 other open deploy blockers today, so one revert clears them all.
Investigation details
The PR changed three things that together make this flow possible:
The growl now sits above every modal and popover. It renders into document.body through a new portal (GrowlNotificationPortal/index.tsx:10). Its z-index went from 2 to 10001, which is above popoverZIndex (10000) (variables.ts:307-309). Before, the menu backdrop covered the growl, so a tap there just closed the menu.
Duplicating on Spend now shows an "Expense added" growl with "View" (Duplicate.ts:1457).
Other PRs ruled out: None of the other 41 PRs in the 9.5.1-1 checklist touch the growl, Popover, Modal, ButtonWithDropdownMenu, or the Spend bulk-actions button.
Open question:Popover has a listener that should close it on route change (Popover/index.tsx:59-105). It doesn't catch this case, and I couldn't confirm why from code alone. This doesn't change the attribution, since the flow wasn't reachable before the PR.
Fix-forward option: If you prefer not to revert, close open modals before navigating in navigateToExpense (ExpenseAddedGrowl.tsx:152) using close() from src/libs/actions/Modal.ts:
changed the title [-]mweb - Expense - Menu remains openeed after opening expense via growl[/-][+][Due for payment 2026-10-12] mweb - Expense - Menu remains openeed after opening expense via growl[/+]on Oct 5, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.1-9 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-12. 🎊
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 2, 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/d42aa20ff0327a502f529719f5093438bff96127e8c27dbfb643f96ca5f78dde
melvin-bot commentedon Oct 2, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #100015
github-actions commentedon Oct 2, 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:
melvin-bot commentedon Oct 2, 2026
@mountiny @situchan you have been assigned to this deploy blocker because you reviewed the offending PR: #100015
melvin-bot commentedon Oct 2, 2026
@mhawryluk you have been assigned to this deploy blocker because you authored the offending PR: #100015
melvin-bot commentedon Oct 2, 2026
💬 A slack conversation has been started in #expensify-open-source
MelvinBot commentedon Oct 2, 2026
Deploy Blocker Analysis
Causing PR (high confidence): Confirm new expenses with a “View” toast instead of scrolling to and highlighting the row v2. Melvin-bot's attribution is correct.
Root Cause: The PR moved the growl above every popover. Its "View" button then navigates without closing the open bulk-actions menu. So the menu stays open on top of the expense.
Recommendation: Revert. This bug is cosmetic. But the same PR has caused 6 other open deploy blockers today, so one revert clears them all.
Investigation details
The PR changed three things that together make this flow possible:
document.bodythrough a new portal (GrowlNotificationPortal/index.tsx:10). Its z-index went from2to 10001, which is abovepopoverZIndex(10000) (variables.ts:307-309). Before, the menu backdrop covered the growl, so a tap there just closed the menu.action.onPress()(GrowlNotificationContent.tsx:167-168). That callsNavigation.navigatedirectly (ExpenseAddedGrowl.tsx:131-153, navigateToCreatedExpense.ts:57-60). The menu left open is the narrow-layout dropdown in SearchBulkActionsButton.tsx:239-261.Other PRs ruled out: None of the other 41 PRs in the 9.5.1-1 checklist touch the growl, Popover, Modal, ButtonWithDropdownMenu, or the Spend bulk-actions button.
Open question:
Popoverhas a listener that should close it on route change (Popover/index.tsx:59-105). It doesn't catch this case, and I couldn't confirm why from code alone. This doesn't change the attribution, since the flow wasn't reachable before the PR.Other open blockers from the same PR:
Fix-forward option: If you prefer not to revert, close open modals before navigating in
navigateToExpense(ExpenseAddedGrowl.tsx:152) usingclose()fromsrc/libs/actions/Modal.ts:I found this by reading the code. I did not reproduce it in the app.
Next Steps: Reply with
@MelvinBot <your feedback>to refine this analysis.view run
m-natarajan commentedon Oct 2, 2026
Xiaomi Redmi Note 10 / Android 12, mWeb 9.5.1-6, passed
Screenrecorder-2026-10-02-23-11-54-588.mp4
melvin-bot commentedon Oct 4, 2026
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
[-]mweb - Expense - Menu remains openeed after opening expense via growl[/-][+][Due for payment 2026-10-12] mweb - Expense - Menu remains openeed after opening expense via growl[/+]melvin-bot commentedon Oct 5, 2026
@situchan
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.1-9 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-12. 🎊
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]