Fix Not here page after resetting domain#89965
Conversation
|
@ShridharGoel 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] |
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Makes sense!
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-05-19.at.11.35.44.AM.movAndroid: mWeb ChromeScreen.Recording.2026-05-16.at.2.56.38.AM.moviOS: HybridAppiOS: mWeb SafariScreen.Recording.2026-05-16.at.2.51.37.AM.movMacOS: Chrome / SafariScreen.Recording.2026-05-16.at.2.26.19.AM.mov |
|
🚧 @MonilBhavsar has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
✋ 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.3.78-0 🚀
Bundle Size Analysis (Sentry): |
|
No help site changes are required for this PR. This is a bug fix that changes how domain reset handles optimistic Onyx updates to prevent a "Not here" page from briefly appearing during navigation. No user-facing features, workflows, terminology, or UI labels were added or changed — the domain reset functionality works the same way from the user's perspective. I reviewed the existing domain-related help site articles under |
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.3.78-1 🚀
|
Explanation of Change
This PR fixes the domain reset flow so the domain is not optimistically removed from Onyx before navigation finishes.
Previously,
resetDomain()optimistically set the domain entry tonull. Because domain screens are still mounted during the reset flow, subscribers could immediately render their!domainnot-found state and show the “Not here” page.Now the optimistic update marks the domain with
pendingAction: DELETEand keeps the domain object available while navigation completes. The domain is set tonullonly insuccessDataafter the delete succeeds. On failure, we only clear the pending action and show the existing remove-domain error.Fixed Issues
$ #89258
PROPOSAL: #89258 (comment)
Tests
Offline tests
Same as tests.
QA Steps
Same as tests.
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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-native-domain-fix.mov
Android: mWeb Chrome
android-web-domain-fix.mov
iOS: Native
ios-native-domain-fix.mov
iOS: mWeb Safari
ios-web-domain-fix.mov
MacOS: Chrome / Safari
macos-domain-fix.mov