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-08-19] Dedupe getTransactionsForReport lookups in Search row Action column #97975
useLiveRowCapabilities runs once per Search list row, and for report rows it called getTransactionsForReport(data, reportID) twice per render — once inside getActions and again inside getPrimaryAction. Each of those calls scans every key of the search snapshot, so fast-scrolling the expenses list burned significant JS time re-deriving the same transaction list for every visible row, and produced blank rows.
Solution
Add getTransactionsByReportID(data) to SearchUIUtils, which groups the snapshot's transactions by reportID in a single pass using the same grouping rule processTransactionEntry already applies inside classifyAndPreprocess. SearchResultsProvider computes it once per snapshot and exposes currentSearchTransactionsByReportID on the existing SearchResultsContext, where the React Compiler memoizes it on data identity so it recomputes only when the snapshot changes. The hook then looks up its own report's transactions and passes them into getActions (through the already-present but previously unused precomputedTransactionsForReport param) and into getPrimaryAction (a new optional param of the same name), with getTransactionsForReport kept as the fallback when no precomputed array is supplied. Behavior is unchanged: all three call sites already sourced snapshotData from the same context, transaction rows never hit this lookup, and every other caller of getTransactionsForReport is untouched.
changed the title [-]Dedupe getTransactionsForReport lookups in Search row Action column[/-][+][Due for payment 2026-08-19] Dedupe getTransactionsForReport lookups in Search row Action column[/+]on Aug 12, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.52-11 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-08-19. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero 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
[-]Dedupe getTransactionsForReport lookups in Search row Action column[/-][+][Due for payment 2026-08-19] Dedupe getTransactionsForReport lookups in Search row Action column[/+]melvin-bot commentedon Aug 12, 2026
@parasharrajat
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.4.52-11 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-08-19. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero 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]
melvin-bot commentedon Aug 13, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)parasharrajat commentedon Aug 13, 2026
No checklist needed here. It was speed optimization.
melvin-bot commentedon Aug 18, 2026
Payment Summary
Resolving PRs:
Dedupe getTransactionsForReport lookups in Search row Action column #97877
Contributor: @TMisiukiewicz does not require payment (Contractor)
Reviewer: @parasharrajat owed $250 via NewDot
BugZero Checklist (@mallenexpensify)
melvin-bot commentedon Aug 18, 2026
@mallenexpensify Eep! 4 days overdue now. Issues have feelings too...
mallenexpensify commentedon Aug 20, 2026
Payment Summary
Contributor+: @parasharrajat due $250 via NewDot