Repository navigation
[CP Staging] Fix pre-mount teardown under Share modal and offline not-found flash for pending reports - #100826
Conversation
…for pending reports
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 364f8dcde6
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9b4cd7f89a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
|
@MelvinBot review |
|
🤖 Code review — the direction of both fixes is right, but I found 3 issues worth addressing before merge, plus 2 nits. The asymmetry diagnosis in the PR body is correct and confirmed against 1. 🔴
|
… flag grace period
|
@MelvinBot I've Addressed 1 (route gated to SCREENS.REPORT), 3 (grace period now 15s, well past the 2s transition cap, and isPendingCreation added to the not-found log) and the canNativeSwipeDismissRHP comment. On 2: the deferral lifts on focus, and a never-focused screen is the pre-mounted case where we do not want expiry, so no change. Insert gate tightening is a fair follow-up but out of scope for a deploy blocker. Please re-review. |
|
🤖 Re-review of
1 — 2 — you're right, I'm withdrawing this one. I re-checked and the expiry effect is itself gated on 3 — 15s against a ~2s transition cap is a comfortable margin, and the reasoning is now recorded in the comment. Two small follow-ups, neither blockingThe new log field can't actually show No test covers the route gate. Verification performed
🤖 Web test steps verification results: ✅ passCreating an expense to a brand-new recipient while offline opens the new chat with the pending expense immediately, survives 22+ seconds offline without the not-found page ever appearing, and syncs cleanly once back online.
Caveat on what this proves: the web build's manual flow is a single-page form with no separate confirm page, so I can't confirm the run went through the same pre-mount code path that sets view run · no recording available |
|
@marufsharifi Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
PR doesn’t need product input as a performance refactor PR. Unassigning and unsubscribing myself. |
|
🚧 mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-09-10.at.9.29.37.PM.mp4Android: mWeb ChromeiOS: HybridAppScreen.Recording.2026-09-10.at.8.11.21.PM.moviOS: mWeb SafariMacOS: Chrome / Safari |
mountiny
left a comment
There was a problem hiding this comment.
That's for a quick work on this
|
✋ 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. |
…mount-deploy-blockers (cherry picked from commit 2547ac9) (cherry-picked to staging by mountiny)
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Cherry-picked to staging by https://github.com/mountiny in version: 9.4.75-3 🚀
|
|
🤖 No help site changes are required for this PR. No draft docs PR was created. Why: This PR fixes two navigation regressions. Both restore the behavior the help site already describes — neither changes a documented feature, setting, label, or user-facing flow. Review detailsWhat changed (all internal):
Both fixes are corrections to broken behavior, not new behavior:
Help site search: I searched No copy changes: The diff adds no user-facing strings and touches no
view run · no recording available |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.75-3 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Cherry-picked to staging by https://github.com/mountiny in version: 9.4.76-0 🚀
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.75-3 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.76-1 🚀
Bundle Size Analysis (Sentry): |






Explanation of Change
Fixes two regressions from #97874:
RIGHT_MODAL_NAVIGATOR, while insert also acceptedSHARE_MODAL_NAVIGATOR. Backing out of the Share > Submit confirm page left a stale buffer and tab route that later overwrote the Share destination. AddedisPreMountBufferHostNameand used it inpreMountBuffer.tsandhandleRemoveFullscreenUnderRHP.ReportNotFoundGuardignored theisPendingCreationroute param, so offline the pre-mounted destination flashed "Not here" before the optimistic report landed. The guard now suppresses not-found while the param is set.Fixed Issues
$ #100767
$ #100785
PROPOSAL: N/A
Tests
Test 1 (#100767): Native share - wrong destination after backing out of the Submit tab (Android and iOS native only)
Test 2 (#100785): "Not here" flash when submitting to a new contact offline (narrow layout)
Offline tests
Covered by Test 2 above
QA Steps
Same as tests
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
Android: Native
Android.mov
Android: mWeb Chrome
iOS: Native
iOS.mov
iOS: mWeb Safari
MacOS: Chrome / Safari