Problem
On heavy money-request reports, the transactions list in the RHP was rendered via a plain .map() inside the parent FlatList's ListHeaderComponent. Because ListHeaderComponent is not virtualised, every transaction rendered synchronously, pushing report open time to roughly 20–30 seconds for reports with ~1,600 expenses.
Solution
Merged the inner transactions list and the outer report-actions list into a single virtualised list. MoneyRequestReportTransactionList now exposes its items, renderer, and chrome JSX via a render-prop controller; MoneyRequestReportActionsList builds one unified data array ([transactions, footer, reportActions]) with a discriminated-union renderItem so only visible rows mount.
PR
#91422
Issue Owner
Current Issue Owner: @aimane-chnaif
Problem
On heavy money-request reports, the transactions list in the RHP was rendered via a plain
.map()inside the parent FlatList'sListHeaderComponent. BecauseListHeaderComponentis not virtualised, every transaction rendered synchronously, pushing report open time to roughly 20–30 seconds for reports with ~1,600 expenses.Solution
Merged the inner transactions list and the outer report-actions list into a single virtualised list.
MoneyRequestReportTransactionListnow exposes its items, renderer, and chrome JSX via a render-prop controller;MoneyRequestReportActionsListbuilds one unified data array ([transactions, footer, reportActions]) with a discriminated-unionrenderItemso only visible rows mount.PR
#91422
Issue Owner
Current Issue Owner: @aimane-chnaif