Conversation
This reverts commit 4c28035.
|
@shubham1206agra @abzokhattab 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] |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-07-24.at.3.38.37.PM.mp4 |
mountiny
left a comment
There was a problem hiding this comment.
This is a v2 of the pr and the regressions were addressed, I will move it ahead to avoid conflicts
|
🚧 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! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.4.45-0 🚀
|
|
🤖 Help site review — no changes required I reviewed the changes in this PR and no updates to Expensify's help site files under Why: This PR is a purely internal performance optimization — it coalesces
There are no user-facing changes here — no new or modified features, UI labels, tabs, settings, buttons, or product copy. The help site documents user-facing product behavior, and nothing in that layer changes as a result of this PR (the deploy-blocker fixes restore correct behavior rather than introduce new documented behavior). Since no help site changes are needed, I did not create a draft docs PR. If you believe a specific user-facing behavior changed and should be documented, let me know which one and I'll draft the update. |
|
Deploy Blocker #97250 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.45-14 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Re-lands the OnyxDerived recompute coalescing (originally #95287, reverted in #95715), with the
derived-value flush moved from a macrotask to a microtask (
queueMicrotask, inlined insrc/libs/actions/OnyxDerived/index.ts).Coalescing batches the multiple dependency changes delivered in one synchronous Onyx broadcast burst
into a single recompute — preserving the startup/send perf win (send latency ~177ms → ~84ms, ~53%
faster; derived recomputes 51 → 20;
reportAttributescomputes 11 → 5). Flushing on a microtask(instead of the previously-reverted macrotask) drains the recompute at the end of the current task,
before React's next render/paint, so raw Onyx data and derived data stay consistent within a
render. That closes the stale-frame / stale-read window that caused the five deploy blockers below.
Also merges latest
mainand reconcilesreportAttributes/visibleReportActionswith thecoalescing engine's
triggeredKeyscontract (includingmain'sRECOMPUTE_ALLnarrowing andsession/whisper
currentUserAccountIDtargeting).Fixed Issues
$ #95301
$ #95696
$ #95698
$ #95700
$ #95721
$ #95753
PROPOSAL: N/A
Tests
Deploy Blockers
Misc
Offline tests
N/A
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
Screen.Recording.2026-07-22.at.20.16.42-compressed.mov
Screen.Recording.2026-07-22.at.21.40.40-compressed.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-07-22.at.17.04.22-compressed.mov
Screen.Recording.2026-07-22.at.17.17.13-compressed.mov