Repository navigation
Freeze Home tab in the background on web - #104078
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@MelvinBot test this pr |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-10-20.at.11.17.10.movAndroid: mWeb ChromeScreen.Recording.2026-10-20.at.11.20.41.moviOS: HybridAppScreen.Recording.2026-10-20.at.11.19.45.moviOS: mWeb Safari104078_ios_native.movMacOS: Chrome / Safari104078_web_chrome.mov |
mountiny
left a comment
There was a problem hiding this comment.
Thanks! Gonna move this ahead while Rodrigo is out today
|
🚧 mountiny 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/mountiny in version: 9.5.16-0 🚀
|
|
No help site update needed. This PR only stops the Home tab from re-rendering in the background on web, so it's a performance fix with no change to any feature, label, or workflow an article describes. |
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.5.18-0 🚀
|
|
No help site update needed. This PR is a web performance fix that stops the Home tab from re-rendering in the background, so what users see and do on Home stays the same. |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.5.18-1 🚀
Bundle Size Analysis (Sentry): |
| <FreezeWrapper> | ||
| <HomePageWithSuspense /> | ||
| </FreezeWrapper> |
There was a problem hiding this comment.
cc @adhorodyski
@nkdengineer is this fixed after your PR?





Explanation of Change
On web, the Home tab kept rendering while you were on another tab. Tabs are supposed to be frozen in the background (
freezeOnBlur: true), but on web that option only hides the tab withdisplay: noneand doesn't stop React from rendering it. Home's sections (For You, Your Spend, Upcoming Travel) subscribe to whole Onyx collections like reports, transactions and report actions. Opening a report writes to those collections, so all three sections re-rendered in the background every time you opened a report, for example from Spend. On a large account on Windows, this adds about 100ms to opening a report.This PR wraps the Home tab in the existing web
FreezeWrapper, the same one the Search tab already uses. While another tab is focused, Home doesn't render at all. When you come back, it catches up in a single render. Native doesn't change, becausefreezeOnBluralready freezes tabs there.Fixed Issues
$ #104081
PROPOSAL:
Tests
/search), then click the Home tab. Verify the loading spinner shows briefly and Home loads normally.Offline tests
Same as tests, but with the network connection turned off. Verify the app behaves the same and no errors appear.
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)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
🤖 Generated with Claude Code