Repository navigation
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@MelvinBot review |
|
🤖 Reviewed the split of One behavior change slipped in, plus two things worth deciding on before this leaves WIP. 🔴 1. The
|
|
@MelvinBot review |
|
🤖 Re-reviewed at
Both hoists are value-identical to the per-hook calls they replace ( 🟡 Bring back the comment above the restored guardThe ternary is back but its explanation isn't: const blockDistanceRequestIfNeeded = useBlockDistanceRequest({
policyID: isPolicyExpenseChat ? policy?.id : undefined,The original line above it read ↩️ Correction to my earlier note — don't hoist the restI listed Remaining nit and CI
Next Steps: Reply with |
|
@MelvinBot review |
|
@codex review |
|
🤖 Re-reviewed at That insertion is the restored
Two closing checks I hadn't run beforeThe hoist is complete. Grepping the whole Onyx surface is byte-identical to the pre-split file. The set of For a refactor whose main risk is a subscription silently appearing or vanishing, that's the check I'd want green before this leaves WIP — and it is. One cosmetic leftover, and CI
From my side this reads as behavior-preserving against base Next Steps: Reply with |
|
@situchan kind bump here ^^ |
|
@situchan any ETA on review? |
|
started reviewing |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safaritest1.mp4test2.mov |
|
Regression test completed. No blockers found |
|
🤖 Web test steps verification results: I found no regressions. On web, manual request, track, track → submit, distance, pay and invoice all created the expense on the right report with no failed submit calls. Scan and per diem need a file upload, which the test harness can't do, and the split run likely didn't exercise the split path. A code check of the 2026-09-29 main merge (
|
|
🤖 Code-quality review at Should fix
Nice to have
|
mountiny
left a comment
There was a problem hiding this comment.
Looks good to me, but I feel like we should create unit test files for the helper utils?
There was a problem hiding this comment.
Should we add unit test for this specifically?
There was a problem hiding this comment.
Same, shoule we make submission utils test file?
|
We will add the unit tests in follow up |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.5.4-0 🚀
|
|
No help site update needed. This PR only splits the internal |
|
🚀 Deployed to production by https://github.com/puneetlath in version: 9.5.4-3 🚀
Bundle Size Analysis (Sentry): |








Explanation of Change
useExpenseSubmissionwas a 1369-line hook that resolved which API command a confirmation submits through and implemented all seven of them. This splits it into one hook per submission path plus a pure resolver, so the page's submission layer can later fork per path along with the list and footer forks already landed in #99578 , #100041 and #101198.No behavior change.
New submission hooks:
The composer still mounts all seven hooks, so no subscription is saved yet. When
IOURequestStepConfirmationis split, each page variant will mount only its own submission hook (a distance variant getsuseDistanceSubmission, an invoice variantuseInvoiceSubmission, etc) instead of all seven. That is when the deduplicated reads actually shrink:useExpenseSubmission.tsis deleted, everyTEMP:param disappears, and each hook goes back to reading the Onyx keys it needs.Fixed Issues
$ #99449
PROPOSAL: N/A
Tests
This is a refactor with no intended behavior change, so testing is regression-focused: every submission path must work the same way as before.
Check next submission flows:
Offline tests
Same, as in Tests section
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same, as in Tests section
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Invoice
invoice-w-room.mp4
Pay
pay.mp4
Per diem
perdiem-wp.mp4
perdiem-selfdm.mp4
Distance
distance.mp4
Split
split.mp4
Track
track.mp4
Request money
scan-multi-scan.mp4
request-manual.mp4