Fix unresponsive app after Home Recently added View all expenses#94435
Conversation
…isses Co-authored-by: Yauheni Horbach <ZhenjaHorbach@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, run: Then you can close this PR and open a new one from your fork. |
|
@MelvinBot |
|
@DylanDylann 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] |
|
🤖 Completed the author checklist and marked this PR ready for review. What I checked off (verifiable from the diff/body):
Left unchecked — these need you (the human co-author), since they require real on-device testing I can't perform:
Please record the Screenshots/Videos and tick the remaining platform boxes before a reviewer signs off. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp2026-06-24.11.44.36.movAndroid: mWeb Chrome2026-06-24.11.44.08.moviOS: HybridApp2026-06-24.11.44.36.moviOS: mWeb Safari2026-06-24.11.44.08.movMacOS: Chrome / Safari2026-06-24.11.45.51.mov |
|
@MelvinBot PR Author Checklist
Screenshots/VideosAndroid: NativeAndroid: mWeb ChromeiOS: NativeiOS: mWeb SafariMacOS: Chrome / Safari |
| // Defer navigation until the popover modal has fully dismissed. On native the popover is a | ||
| // full-screen Modal with a backdrop; navigating to another tab synchronously races the | ||
| // dismissal and can leave the backdrop mounted on top of the destination, blocking all taps. |
There was a problem hiding this comment.
@ZhenjaHorbach @MelvinBot please remove this comment
|
@MelvinBot |
Co-authored-by: Yauheni Horbach <ZhenjaHorbach@users.noreply.github.com>
|
🤖 Removed the explanatory comments from the |
|
@cretadn22 @grgia One of you needs to 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] |
|
🚧 blimpich 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! 🧪🧪
|
…iewAllUnresponsive Fix unresponsive app after Home Recently added View all expenses (cherry picked from commit e319170) (cherry-picked to staging by blimpich)
|
🚀 Cherry-picked to staging by https://github.com/blimpich in version: 9.4.18-2 🚀
Bundle Size Analysis (Sentry): |
|
🤖 No help site changes required. This PR is a native-only behavioral bug fix — it adds The documented user-facing behavior is unchanged: tapping View all expenses in the Home "Recently added" section still navigates to the same place — it just no longer freezes the app on native. There's no new feature, UI element, label, setting, or workflow to document. I searched Because no changes are needed, I did not create a docs draft PR. @ZhenjaHorbach, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.4.18-2 🚀
|
|
🚀 Cherry-picked to staging by https://github.com/blimpich in version: 9.4.19-1 🚀
Bundle Size Analysis (Sentry): |
|
🤖 No help site changes required. I reviewed the change in this PR against This is purely an internal behavior/timing fix:
The help site documents what features do, not modal-dismissal internals, and nothing documented changes here. Accordingly, I did not create a docs PR — so there's no linked help site PR to review.
|
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.4.19-5 🚀
|
Explanation of Change
The Home "Recently added" overflow menu's View all expenses item navigated to the Spend tab synchronously inside the
PopoverMenuitem'sonSelected, while the popover was still open. On native the popover is a full-screenModalwith a touch-capturing backdrop, and the Home tab stays mounted when switching tabs — so theNavigation.navigate(SEARCH_ROOT)raced the modal's slide-out dismissal and could leave the backdrop layered on top of the Spend tab, swallowing every tap and making the app appear unresponsive.This adds
shouldCallAfterModalHide: trueto the menu item so the navigation is deferred (viaModal.close()) until the popover has fully hidden, matching the established pattern used by the FAB menu items (e.g.CreateReportMenuItem/ExpenseMenuItem) and the workspace three-dots menus. With the backdrop gone before navigation, no overlay can block touches on the destination tab.Fixed Issues
$ #94410
PROPOSAL: #94410 (comment)
Tests
// TODO: The human co-author must fill out the tests you ran before marking this PR as "ready for review"
// Please describe what tests you performed that validates your changed worked.
Offline tests
Same as Tests.
QA Steps
// TODO: The human co-author must fill out the QA tests you ran before marking this PR as "ready for review".
// Please describe what QA needs to do to validate your changes and what areas do they need to test for regressions.
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
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari