Fix: restore Wallet background for missing personal details RHP after reload#95363
Conversation
…eload Co-authored-by: DylanDylann <DylanDylann@users.noreply.github.com>
|
I created this PR from an upstream branch since I don't have push access to your fork. To take ownership of this branch and be able to push updates from your fork, run: Then you can close this PR and open a new one from your fork. Otherwise, feel free to push directly to this upstream branch if you have access. |
|
The only failing check is It fails because the checklist section of the PR body is incomplete (the workflow reports Everything else is green or still running:
No code change is warranted here, so I haven't pushed anything. If the pending jobs above actually fail once they finish, re-tag me and I'll dig into those specifically. |
|
@MelvinBot Mark the PR ready |
|
🤖 Done — PR #95363 is now marked as Ready for review. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d289cb1d12
ℹ️ 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".
| SCREENS.MISSING_PERSONAL_DETAILS, | ||
| SCREENS.MISSING_PERSONAL_DETAILS_CONFIRM_MAGIC_CODE, |
There was a problem hiding this comment.
Keep home-launched details flows on Home after reload
When the missing-personal-details RHP is opened from the Home time-sensitive card or issue card (AddVirtualCardPersonalDetails.tsx:31, IssueCardMessage.tsx:63), the URL still has no backTo parameter, so after a browser reload getMatchingFullScreenRoute() will now hit this new RHP_TO_SETTINGS entry and rebuild Settings > Wallet behind the RHP instead of preserving Home. This fixes the Wallet entry point but regresses the existing Home-launched flow; the mapping needs a way to distinguish Wallet launches from Home/default launches rather than assigning this screen globally to Wallet.
Useful? React with 👍 / 👎.
|
Re-checked — nothing to fix in the code. The two remaining
I'm not permitted to tick either of those on a human's behalf, so they clear through the normal review flow, not a code push. Every other check (tests, typecheck, builds, lint, etc.) is now green, so I haven't pushed any changes. |
|
@DylanDylann do I need to review this? |
|
Let's wait until @chuckdries responds to my comment in the issue: #95362 (comment) |
|
Thank you for your prompt attention @Pujan92, but this is a tiny change, so we'll be fine if Dylann checklists and I'll do the final approval |
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Good for product.
|
There's no code to fix here — every automated check (tests, typecheck, ESLint, Oxfmt, builds, perf) is passing. The only two red checks are human-only checklists, which I'm not permitted to complete on anyone's behalf:
Per the thread, |
Reviewer Checklist
Screenshots/VideosMacOS: Chrome / SafariScreen.Recording.2026-07-07.at.12.43.55.mov |
| SCREENS.MISSING_PERSONAL_DETAILS, | ||
| SCREENS.MISSING_PERSONAL_DETAILS_CONFIRM_MAGIC_CODE, |
|
@chuckdries All yours |
|
🚧 chuckdries has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/chuckdries in version: 9.4.32-0 🚀
|
|
🤖 No help site changes required. I reviewed the changes in this PR against Expensify's help site files under This PR is a navigation-linking config fix — it adds There is no user-facing change here:
This purely corrects internal navigation-state restoration, which is not documented in If you believe a specific help article should be updated anyway, let me know which flow/article and I'll take another pass. |
|
Deploy Blocker #95720 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.4.32-3 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Deploy blocker fix for #95362.
When the missing-personal-details flow is opened as an RHP from the Wallet (e.g. Settings → Wallet → virtual card → Reveal, introduced in #91634), reloading the browser while the RHP is open changed the background page from Wallet to the Inbox.
Root cause: on reload the navigation state is rebuilt from the URL.
getMatchingFullScreenRoutedetermines which full-screen page belongs behind an RHP by looking the RHP screen up in theRHP_TO_*relation maps (derived from the*_TO_RHPmaps).SCREENS.MISSING_PERSONAL_DETAILS/SCREENS.MISSING_PERSONAL_DETAILS_CONFIRM_MAGIC_CODEwere not present in any of those maps and the route carries nobackToparam, so the lookup returnedundefinedand the background fell back to the defaultHOME(Inbox).Fix: register both screens under
SCREENS.SETTINGS.WALLET.ROOTinSETTINGS_TO_RHP.ts, matching every other Wallet-launched RHP (e.g.DOMAIN_CARD,REPORT_VIRTUAL_CARD_FRAUD).RHP_TO_SETTINGSis the inverse of this map, so the Wallet page is now correctly restored as the background after reload.Fixed Issues
$ #95362
PROPOSAL: #95362 (comment)
Tests
Automated checks run by MelvinBot on this change:
npm run typecheck-tsgo— passedoxfmt(npm run fmt) — cleantests/navigation+DeeplinkRouteNormalizationTest) — 429 passedOffline tests
Same as Tests (navigation/linking behavior is not network-dependent).
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, 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
N/A — navigation linking config change; behavior verified via the navigation unit-test suite.