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] Expense - Growl is shown after creating split distance expense from QAB #102831
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):[email protected] Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Mac 26.5 / Chrome App Component: Money Requests
Action Performed:
Go to staging.new.expensify.com
Open 1:1 DM with other user.
Split an expense with the user.
Open FAB > click Split Manual under Quick action > split an expense with the user.
Repeat Step 4 with Split scan and Split distance from QAB.
Expected Result:
No growl will be shown after creating split expense from QAB.
Actual Result:
Growl is shown after creating split distance expense from QAB.
Nothing happens after clicking View on the growl after splitting distance from QAB.
👋 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:createDistanceRequest sends the “Expense added” growl whenever isFromGlobalCreate is true, even when iouType is SPLIT (Split.ts:2381-2383). Manual and scan splits use other functions that never send the growl. That's why only distance splits show it.
Why “View” does nothing: for a split, the transaction ID is the split container, which lives under SPLIT_REPORT_ID ('-2'). The growl can't find a report or IOU action for it, so it can't open a transaction thread.
Recommendation: roll forward. Fix it with a one-line guard instead of reverting the 70-file PR:
In useExpenseSubmission.ts, distance requests go through createDistanceRequest for every iouType, including split. Manual split uses splitBillAndOpenReport (L1177-L1180), and scan split uses startSplitBill (L1068-L1108). Neither sends the growl.
Before the PR, this spot called highlightTransactionOnSearchRouteIfNeeded. A split container never appears in Search, so that call had no visible effect.
ExpenseAddedGrowl.tsx:115-120 hides the growl only when the focused report matches transaction.reportID. The user is on the 1:1 chat, not '-2', so the growl shows.
When the user clicks “View”, createTransactionThreadReport returns early without a report (Report/index.ts:2482-2484). The growl then logs Unable to resolve transaction thread reportID and doesn't navigate (ExpenseAddedGrowl.tsx:148-151).
Also affected: a distance split from FAB > Create expense > Distance should show the same bug.
Optional safety net: in ExpenseAddedGrowl.tsx, skip the growl when transaction.reportID === CONST.REPORT.SPLIT_REPORT_ID.
Suggested test: in tests/actions/IOUTest/SplitTest.ts, call createDistanceRequest with iouType: SPLIT and isFromGlobalCreate: true. Then assert that no growl transaction ID is set.
This finding comes from reading the code. I didn't reproduce it in the app.
changed the title [-]Expense - Growl is shown after creating split distance expense from QAB[/-][+][Due for payment 2026-10-12] Expense - Growl is shown after creating split distance expense from QAB[/+]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/964c0c48bf40732676913a965c6cb74fbf574aa72700fa895626016d0bc4a6d3
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: Confirm new expenses with a “View” toast instead of scrolling to and highlighting the row v2 (high confidence)
Root cause:
createDistanceRequestsends the “Expense added” growl wheneverisFromGlobalCreateis true, even wheniouTypeisSPLIT(Split.ts:2381-2383). Manual and scan splits use other functions that never send the growl. That's why only distance splits show it.Why “View” does nothing: for a split, the transaction ID is the split container, which lives under
SPLIT_REPORT_ID('-2'). The growl can't find a report or IOU action for it, so it can't open a transaction thread.Recommendation: roll forward. Fix it with a one-line guard instead of reverting the 70-file PR:
If a quick fix isn't possible, revert the PR.
Investigation details
isFromFloatingActionButton: true(QuickActionMenuItem.tsx:211), sogetIsFromGlobalCreatereturns true (TransactionUtils:1761-1763).createDistanceRequestfor everyiouType, including split. Manual split usessplitBillAndOpenReport(L1177-L1180), and scan split usesstartSplitBill(L1068-L1108). Neither sends the growl.highlightTransactionOnSearchRouteIfNeeded. A split container never appears in Search, so that call had no visible effect.transaction.reportID. The user is on the 1:1 chat, not'-2', so the growl shows.createTransactionThreadReportreturns early without a report (Report/index.ts:2482-2484). The growl then logsUnable to resolve transaction thread reportIDand doesn't navigate (ExpenseAddedGrowl.tsx:148-151).Also affected: a distance split from FAB > Create expense > Distance should show the same bug.
Optional safety net: in
ExpenseAddedGrowl.tsx, skip the growl whentransaction.reportID === CONST.REPORT.SPLIT_REPORT_ID.Suggested test: in
tests/actions/IOUTest/SplitTest.ts, callcreateDistanceRequestwithiouType: SPLITandisFromGlobalCreate: true. Then assert that no growl transaction ID is set.This finding comes from reading the code. I didn't reproduce it in the app.
view run
melvin-bot commentedon Oct 2, 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.
mhawryluk commentedon Oct 2, 2026
I will create a fix PR shortly
melvin-bot commentedon Oct 2, 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.
melvin-bot commentedon Oct 2, 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.
m-natarajan commentedon Oct 2, 2026
Chrome / v9.5.1-2
Not repro
bandicam.2026-10-02.15-39-00-813.mp4
[-]Expense - Growl is shown after creating split distance expense from QAB[/-][+][Due for payment 2026-10-12] Expense - Growl is shown after creating split distance expense from QAB[/+]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]