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
Expense- When bulk selecting two expenses and deleting one of them, selection mode is cleared #104657
Version Number: 9.5.16-0 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:#103703 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
Go to workspace chat.
Create an expense.
Open the report.
Click More > Switch to table view.
Create two more expenses.
Bulk select all expenses.
Open any expense and delete it.
→ Selection mode persists.
Open any expense and delete it.
→ Selection mode is clear when there is still one expense in table view.
Expected Result:
When bulk selecting two expenses and deleting one of them, selection mode will persist.
Actual Result:
When bulk selecting two expenses and deleting one of them, selection mode is cleared.
👋 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: On wide layouts, MoneyReportHeaderActions clears the selection whenever transactionThreadReportID becomes set (index.tsx:65-71). When the report drops from 2 expenses to 1, that ID changes from undefined to a real ID, so the effect wipes the selection. The PR made a single expense a selectable row in table view and updated isTransactionThread on line 63, but it didn't update this effect.
Recommendation: Roll forward with a one-line fix. Revert the PR only if the fix can't land quickly.
This matches the repro. Going from 3 expenses to 2 (step 8) leaves the ID undefined, so the selection survives. Going from 2 to 1 (step 9) sets the ID and clears the selection.
The PR already keeps the selection for this case on narrow layouts (MoneyReportHeader.tsx:147-156). That explains why the bug was reported on desktop Chrome and Safari.
A remount doesn't explain it. MoneyRequestReportView keeps rendering MoneyRequestReportActionsList at 1 expense because shouldUseTableViewForSingleExpense stays true.
The fix adds shouldUseTableViewForSingleExpense to the dependency list, so switching back to expense view still clears the selection. Another option is to read effectiveTransactionThreadReportID here instead.
Add a test next to tests/ui/components/MoneyReportHeaderActionsSingleExpenseTableViewTest.tsx that goes from 2 selected expenses to 1 in table view.
Other PRs in the StagingDeployCash checklist were ruled out. None of them change how the selection is cleared or how the transaction-thread ID is worked out.
Production isn't affected, because table view for single-expense reports is new in this PR.
Next Steps: Reply with @MelvinBot implement this to create a draft PR, or @MelvinBot <your feedback> to refine this analysis.
Activity
applause-bot commentedon Oct 21, 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/5f27633080f2b506fc8098c5f850caaa6259c4f83e89a50e2b4e1c27a8636005
melvin-bot commentedon Oct 21, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #103703
melvin-bot commentedon Oct 21, 2026
@Beamanator @mountiny @lakchote @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #103703
github-actions commentedon Oct 21, 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 21, 2026
💬 A slack conversation has been started in #expensify-open-source
MelvinBot commentedon Oct 21, 2026
Deploy Blocker Analysis
Causing PR: Reapply "Add a More menu option to switch single-expense reports between expense view and table view" (high confidence). The auto-assignment is correct.
Root cause: On wide layouts,
MoneyReportHeaderActionsclears the selection whenevertransactionThreadReportIDbecomes set (index.tsx:65-71). When the report drops from 2 expenses to 1, that ID changes fromundefinedto a real ID, so the effect wipes the selection. The PR made a single expense a selectable row in table view and updatedisTransactionThreadon line 63, but it didn't update this effect.Recommendation: Roll forward with a one-line fix. Revert the PR only if the fix can't land quickly.
Investigation details
transactionThreadReportIDcomes fromuseMoneyReportTransactionThread(). That context passes the raw ID, not the table-view-awareeffectiveTransactionThreadReportID(MoneyReportTransactionThreadContext.tsx:43-56, useTransactionThreadReportID.ts:31-39).undefined, so the selection survives. Going from 2 to 1 (step 9) sets the ID and clears the selection.MoneyRequestReportViewkeeps renderingMoneyRequestReportActionsListat 1 expense becauseshouldUseTableViewForSingleExpensestays true.shouldUseTableViewForSingleExpenseto the dependency list, so switching back to expense view still clears the selection. Another option is to readeffectiveTransactionThreadReportIDhere instead.tests/ui/components/MoneyReportHeaderActionsSingleExpenseTableViewTest.tsxthat goes from 2 selected expenses to 1 in table view.Next Steps: Reply with
@MelvinBot implement thisto create a draft PR, or@MelvinBot <your feedback>to refine this analysis.view run
m-natarajan commentedon Oct 22, 2026
Chrome / v9.5.16-1
No Switch to table view option
bandicam.2026-10-22.16-03-03-619.mp4
Beamanator commentedon Oct 22, 2026
groovy, closing!