When a user scans a receipt from the expenses page, the newly scanning expense gets a default date of "00:00:00 UTC today", which causes it to appear buried beneath other expenses created later that day. Users expect the scanning receipt to appear at the top of the list so they can easily track it.
Proposed Solution
Show "Scanning" instead of the date for scanning receipts, and sort them to the top of the expenses list. No backend changes needed — the display and sort are purely frontend concerns.
1. Show "Scanning" instead of the date
There's already a precedent — the merchant column does exactly this at TransactionItemRow/index.tsx:159-161:
if (isScanning(transactionItem) && shouldShowMerchant) {
merchant = translate('iou.receiptStatusTitle');
}
Apply the same pattern for the date column at the two DateCell call sites:
DateCell.tsx would need a small tweak to skip date formatting when the value isn't a real date (or accept a displayText override prop).
2. Sort scanning receipts to top
Add scanning-priority logic in the two sort locations, before the normal compareValues call:
3. No backend changes needed
The created date stays as today's date (no fake future dates). isScanning already detects the scanning state from receipt.state, and once SmartScan completes, isScanning returns false and the expense reverts to normal date display + sort position automatically.
Parent issue: https://github.com/Expensify/Expensify/issues/630432
Upwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~022052481085379087969
- Upwork Job ID: 2052481085379087969
- Last Price Increase: 2026-05-07
When a user scans a receipt from the expenses page, the newly scanning expense gets a default date of "00:00:00 UTC today", which causes it to appear buried beneath other expenses created later that day. Users expect the scanning receipt to appear at the top of the list so they can easily track it.
Proposed Solution
Show "Scanning" instead of the date for scanning receipts, and sort them to the top of the expenses list. No backend changes needed — the display and sort are purely frontend concerns.
1. Show "Scanning" instead of the date
There's already a precedent — the merchant column does exactly this at
TransactionItemRow/index.tsx:159-161:Apply the same pattern for the date column at the two
DateCellcall sites:TransactionItemRow/index.tsx:326— passtranslate('iou.receiptStatusTitle')instead ofcreatedAtwhenisScanning(transactionItem)is trueTransactionItemRow/index.tsx:736— same changeDateCell.tsxwould need a small tweak to skip date formatting when the value isn't a real date (or accept adisplayTextoverride prop).2. Sort scanning receipts to top
Add scanning-priority logic in the two sort locations, before the normal
compareValuescall:SearchUIUtils.ts(getSortedTransactionData) — inside the.sort()callback, checkisScanning(a)/isScanning(b)first. If one is scanning and the other isn't, return the scanning one first (regardless of sort direction).MoneyRequestReportTransactionList.tsx:286— same wrapper logic aroundcompareValues.3. No backend changes needed
The
createddate stays as today's date (no fake future dates).isScanningalready detects the scanning state fromreceipt.state, and once SmartScan completes,isScanningreturns false and the expense reverts to normal date display + sort position automatically.Parent issue: https://github.com/Expensify/Expensify/issues/630432
Upwork Automation - Do Not Edit