Repository navigation
Unpin the contact method child screens from the profile - #100780
Conversation
The contact methods list was unpinned so its background follows the base path, but the details and new contact method screens hanging off it stayed pinned to the profile root. getMatchingFullScreenRoute checks the relation maps before the dynamic base-path branch, so on a fresh load of a URL whose base is itself an RHP the pinned entry wins and the background jumps to Account > Profile. In-app navigation never hit this because linkTo skips the full-screen matching block while an RHP is already on top, so the jump only showed on refresh. All three hang off CONTACT_METHODS, which declares entryScreens: ['*'], so they can sit over any base path and none of them should name a central pane.
The pinned relations only bite on a cold load, because linkTo skips full screen matching while an RHP is already on top. A test that walks the app would never have caught it, so assert the resolved background straight from the URL instead, including the bases that are themselves RHP routes.
Reviewer Checklist
Screenshots/Videoschrome.mp4 |
|
🚧 roryabraham 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/roryabraham in version: 9.4.76-0 🚀
|
|
No help site changes are required for this PR, so I did not create a docs PR. This change is internal navigation config only. It removes three contact method screens from the Why the help site is unaffectedThe help site documents what users do, not which page renders behind an overlay. This PR changes neither:
Per @mukhrr, if you believe a user-facing behavior did change here that the help site should describe, reply with the specific article and behavior and I'll draft the docs PR. view run · no recording available |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.76-1 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
#100292 unpinned the contact methods list from
SETTINGS.PROFILE.ROOTso its background follows the base path, but left the three screens that hang off it pinned:DYNAMIC_CONTACT_METHOD_DETAILS,DYNAMIC_NEW_CONTACT_METHODandDYNAMIC_NEW_CONTACT_METHOD_CONFIRM_VALIDATE_CODE.getMatchingFullScreenRoutechecks the relation maps before the dynamic base-path branch, so on a fresh load of a URL whose base is itself an RHP (/e/:reportID,/search/r/:reportID,/search/view/:reportID) the pinned entry wins and the background resolves to Account > Profile.In-app navigation never hit this, because
linkToskips the full-screen matching block while an RHP is already on top. That is why the background only jumps on refresh, and why #100292 looked complete.All three hang off
CONTACT_METHODS, which declaresentryScreens: ['*'], so they can sit over any base path and none of them should name a central pane. Deep links under/settings/profile/contact-methodsstill resolve the settings split, since the base path itself resolves it.Fixed Issues
$ #100765
PROPOSAL:
Tests
Use an account with no phone number contact method, so the "Add your number" link is rendered.
Offline tests
The change only affects which full screen is resolved under the right hand panel on a fresh load, so it has no network surface. Going offline before step 1 and repeating the flow gives the same result, and the background still matches step 3 after each refresh.
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: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
REC-20260910115108.mp4