Skip to content

[Due for payment 2026-06-24] Search live-merge: remove policies/violations from getSections #93671

Description

@mountiny

Problem

getSections performs a parallel double-merge of live Onyx data (policies, allTransactionViolations) that the Search row layer already self-hydrates. That redundant screen-level merge cascades into Search jank by widening useMemo dependencies and triggering unnecessary section recomputation.

Solution

Removed policies and allTransactionViolations from getSections / getReportSections, since rows already resolve this data locally. ExpenseReportListItem now recomputes the violations badge at the row using live policy, transactions, and a scoped per-row violations selector (with snapshot fallback before hydration). Report avatars in getReportSections now derive from snapshot policy instead of live-merged policies — the one accepted staleness tradeoff, aligned with other getSections callers.

PR

#93271

Issue OwnerCurrent Issue Owner: @mallenexpensify

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2InternalRequires API changes or must be handled by Expensify staffTask

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions