Unpin the contact method child screens from the profile - #100780
Open
mukhrr wants to merge 2 commits into
Open
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.
melvin-bot
Bot
requested review from
JmillsExpensify and
dmkt9
and removed request for
a team
September 10, 2026 03:07
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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