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-10-14] Scan - Split details page does not show the new UI when scan expense is split offline #102491
Version Number: 9.4.95-0 Reproducible in staging?: Yes Reproducible in production?: N/A - new feature, doesn't exist in prod If this was caught during regression testing, add the test name, ID and link from BrowserStack:#101301 Email or phone of affected tester (no customers):jsdoijnodsdisojo@gmail.com Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Mac 26.5 / Chrome App Component: Money Requests
Action Performed:
Go to staging.new.expensify.com
Open 1:1 DM with any user.
Go offline.
Create a split scan expense.
Open the split preview.
Click Show more.
Enter Amount and click Split expense.
Open the split preview.
Click Show more.
Go online.
Expected Result:
In Step 9, split details page will show the new UI when scan expense is split offline.
Actual Result:
In Step 9, split details page does not show the new UI when scan expense is split offline.
In Step 10, after returning online, it shows the new UI.
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
Identify the pull request that introduced this issue and revert it.
Root cause: The PR turned on the new dropdown-row layout only for manual, distance, and time footers. The scan footer still uses the old rows. When you split a scan offline, the transaction keeps iouRequestType: scan until the server responds. So the split details page renders the scan layout (old UI). After you go online, the server data has no scan marker, and the page switches to the manual layout (new UI).
Recommendation: Roll forward or demote rather than revert. The feature is new (not in production), the issue is cosmetic and offline-only, and it fixes itself on reconnect. Reverting a 47-file PR is not worth it.
Suggested fix: In completeSplitBill's optimistic transaction merge, add iouRequestType: CONST.IOU.REQUEST_TYPE.MANUAL next to receipt: {state: OPEN} (Split.ts#L946-L950). The existing failure data already restores the original transaction. Before landing, confirm nothing else relies on isScanRequest for completed splits.
Investigation details
Creating the split offline marks the transaction as a scan because it has a receipt: Split.ts#L569.
completeSplitBill sets the receipt state to OPEN but keeps the scan marker: Split.ts#L942-L951.
shouldUseDropdownRows defaults to false (ExpenseFormLayoutContext.ts#L26). Only footers that call useAddReceiptLayout turn it on (useAddReceiptLayout.tsx#L30): Manual, DistanceManual, DistanceOdometer, and Time. ScanFooter.tsx does not.
Before this PR, the scan and manual layouts looked the same, so this offline/online mismatch existed but was invisible. Splits created online come back from the server without the scan marker, so they already show the new UI.
An alternative, narrower fix: in DynamicSplitBillDetailsPage, when the page is read-only, pass the transaction with iouRequestType overridden to manual.
Activity
applause-bot commentedon Sep 29, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/d097c36bf2a65187c018c5082c4921defba867e9beabba94740b1a7300b70666
melvin-bot commentedon Sep 29, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #101301
melvin-bot commentedon Sep 29, 2026
@puneetlath @ikevin127 you have been assigned to this deploy blocker because you reviewed the offending PR: #101301
melvin-bot commentedon Sep 29, 2026
@thelullabyy you have been assigned to this deploy blocker because you authored the offending PR: #101301
melvin-bot commentedon Sep 29, 2026
💬 A slack conversation has been started in #expensify-open-source
github-actions commentedon Sep 29, 2026
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
MelvinBot commentedon Sep 29, 2026
Deploy Blocker Analysis
Causing PR: [CFI] Update the Manual create expense form to use dropdown-style rows and a compact add-receipt button
Root cause: The PR turned on the new dropdown-row layout only for manual, distance, and time footers. The scan footer still uses the old rows. When you split a scan offline, the transaction keeps
iouRequestType: scanuntil the server responds. So the split details page renders the scan layout (old UI). After you go online, the server data has no scan marker, and the page switches to the manual layout (new UI).Recommendation: Roll forward or demote rather than revert. The feature is new (not in production), the issue is cosmetic and offline-only, and it fixes itself on reconnect. Reverting a 47-file PR is not worth it.
Suggested fix: In
completeSplitBill's optimistic transaction merge, addiouRequestType: CONST.IOU.REQUEST_TYPE.MANUALnext toreceipt: {state: OPEN}(Split.ts#L946-L950). The existing failure data already restores the original transaction. Before landing, confirm nothing else relies onisScanRequestfor completed splits.Investigation details
completeSplitBillsets the receipt state toOPENbut keeps the scan marker: Split.ts#L942-L951.ScanConfirmationList: MoneyRequestConfirmationList/index.tsx#L38-L39.shouldUseDropdownRowsdefaults tofalse(ExpenseFormLayoutContext.ts#L26). Only footers that calluseAddReceiptLayoutturn it on (useAddReceiptLayout.tsx#L30): Manual, DistanceManual, DistanceOdometer, and Time.ScanFooter.tsxdoes not.Before this PR, the scan and manual layouts looked the same, so this offline/online mismatch existed but was invisible. Splits created online come back from the server without the scan marker, so they already show the new UI.
An alternative, narrower fix: in
DynamicSplitBillDetailsPage, when the page is read-only, pass the transaction withiouRequestTypeoverridden tomanual.view run
24 remaining items
ikevin127 commentedon Oct 16, 2026
Note
No payment due here as this was a regression follow-up from the main issue.
melvin-bot commentedon Oct 16, 2026
Current assignee @mallenexpensify is eligible for the Awaiting Payment assigner, not assigning anyone new.