Skip to content

[Due for payment 2026-06-16] [Search Decomp M1-A] Drop screen-level live merge: reportActions/allReportMetadata + row capabilities #92080

Description

@mountiny

Part of

Tracking: Search screen decomposition — eliminate parallel double-merge (perf)

What needs to be done

This is the first PR in the Search screen decomposition (Milestone 1, Wave A):

  • Drop reportActions, exportReportActions, allReportMetadata, reportAttributesDerivedValue from <Search> and getSections — these were the highest-churn parallel merge inputs
  • Replace array-valued allActions field on row items with four primitive capability booleans (canPay / canApprove / canSubmit / canChangeApprover) for React Compiler-stable value tracking
  • Introduce useLiveRowCapabilities hook: row-level live recompute so primary action buttons reflect real Onyx state, not snapshot-stale values
  • Replace applySelectionToItem with useRowSelection per-row selection reads; delete the screen-level selection dep on renderItem

Expected outcome

  • SPAN_OPEN_REPORT P90 improved
  • Row-tap no longer reconciles all visible rows in the same frame
  • Measured: -20.5% total commit duration, -20.7% components rendered on row-tap

PR

#91438

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

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions