[CP staging] prevent trial payment reminder modal flicker on login - #97212
Conversation
|
@shubham1206agra 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] |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-07-28.at.3.06.32.PM.mov |
|
@dukenv0307 are we CPing this? |
|
@grgia Yes |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 Valforte 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! 🧪🧪
|
[CP staging] prevent trial payment reminder modal flicker on login (cherry picked from commit 2c95456) (cherry-picked to staging by marcaaron)
|
🚀 Cherry-picked to staging by https://github.com/marcaaron in version: 9.4.45-5 🚀
|
|
🤖 No help site changes required. This PR ( It's an internal rendering-timing fix — it doesn't add, remove, or change any user-facing feature, setting, label, or behavior that's documented on the help site. The trial reminder modal and free-trial behavior themselves are unchanged. There is nothing to update under |
|
🚀 Cherry-picked to staging by https://github.com/marcaaron in version: 9.4.45-10 🚀
|
|
🤖 I reviewed the changes in this PR and no help site changes are required. Why: This is an internal timing/race-condition fix. It adds a guard requiring There is no change to any user-facing feature, workflow, UI label, setting, button, or documented behavior — the modal's intended behavior is unchanged; it just no longer flickers. Nothing in No draft docs PR was created. |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.45-14 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Cherry-picked to staging by https://github.com/marcaaron in version: 9.4.46-0 🚀
|
|
🤖 I reviewed the changes in this PR against the help site files under No help site changes are required, so I did not create a draft PR. This PR is an internal render-timing fix. It adds a There's no change to user-facing behavior, feature naming, settings, or workflows — the modal still appears and dismisses exactly as documented. Nothing in the help site describes this internal loading sequence, so there is nothing to update. @dukenv0307, since no help site changes were needed, there's no linked help site PR to review. If you believe a documentation update is warranted, reply with the details and I'll create a draft PR. |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.46-10 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
On login, trial-date NVPs (firstDayFreeTrial/lastDayFreeTrial) land in Onyx ~64ms before the dismissal NVP. In that gap an already-dismissed reminder looks eligible for one commit → modal opens then closes = flicker. hasLoadedApp is set last (queueFlushedData, after the whole OpenApp response flushes), so requiring it guarantees the dismissal value is present before the modal can show
Fixed Issues
$ #97179
PROPOSAL:
Tests
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
Screen.Recording.2026-07-28.at.4.24.20.PM.mov