Repository navigation
[Onyx bump] Bump react-native-onyx from 3.0.101 to 3.0.102 - #97857
roryabraham merged 2 commits into
Conversation
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. |
5d3d70b to
841964c
Compare
…-updatesnapshots-keyless
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-09-01.at.21.58.47.mp4Android: mWeb ChromeScreen.Recording.2026-09-01.at.21.56.50.mp4iOS: HybridAppScreen.Recording.2026-09-01.at.22.03.57.mp4iOS: mWeb SafariScreen.Recording.2026-09-01.at.22.02.03.mp4MacOS: Chrome / SafariScreen.Recording.2026-09-01.at.21.51.21.mp4 |
|
🚧 roryabraham 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/roryabraham in version: 9.4.66-0 🚀
|
|
🚀 Deployed to staging by https://github.com/roryabraham in version: 9.4.68-0 🚀
|
|
🚀 Deployed to production by https://github.com/francoisl in version: 9.4.68-1 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
This PR bumps Onyx from 3.0.101 to 3.0.102 (diff), which includes the following change:
updateSnapshotsinstead of crashing.Onyx.updateskips update entries with non-string keys (and intentionally allows keylessclear/multisetentries), but it passed the unfiltered updates array toupdateSnapshots, which crashed onkey.startsWithwhenever asnapshot_collection entry was cached. This is Sentry issue APP-6NT —TypeError: Cannot read properties of undefined (reading 'startsWith')— ~94 production events / ~35 affected users since 2026-03-01 across groupings APP-6NT / APP-ED8 / APP-961 / APP-JT0 / APP-H8X, all on web and mostly on 2FA pages. In App it surfaced as an unhandled rejection fromQueuedOnyxUpdates.flushQueue. A regression test was added in onyxtests/unit/onyxTest.ts("should skip update entries without a key when updating Snapshots instead of rejecting"). Related to [Due for payment 2026-09-09] [Onyx] Web crash: Cannot read properties of undefined (reading 'startsWith') in updateSnapshots when Onyx.update receives keyless entries #98438 (companion App PR: this one, which previously pinned the Onyx PR head for CI).Kept deliberately to a single Onyx version so it can be reverted in isolation if it causes a regression. #99436 (3.0.102 → 3.0.109) is on hold behind this one.
Fixed Issues
$ #98438
PROPOSAL:
Tests
On Android / iOS (native or mWeb) against staging:
Expected: no crash and no stuck/undelivered updates in any step. (Before this fix, a malformed keyless entry in any server update batch would crash the app with a
startsWithTypeError whenever a search had previously been run — steps 2–5 keep that code path continuously active.)Deterministic developer repro (web console)
snapshot_collection entry is cached.Onyx.update([{onyxMethod: 'merge', key: 'session', value: {}}, {onyxMethod: 'merge', value: {}}]).TypeError: Cannot read properties of undefined (reading 'startsWith')fromupdateSnapshots.Offline tests
Covered by step 5 of the
Testssection: with airplane mode on, make 2–3 changes (add a comment, rename a report, edit an expense), then go back online and verify the queued updates sync, the app stays responsive, and nostartsWitherror appears.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
N/A — non-UI library fix, covered by the unit regression test.
Android: mWeb Chrome
N/A — non-UI library fix, covered by the unit regression test.
iOS: Native
Simulator.Screen.Recording.-.iPhone.17.-.2026-08-13.at.14.49.42.mov
iOS: mWeb Safari
N/A — non-UI library fix, covered by the unit regression test.
MacOS: Chrome / Safari
N/A — non-UI library fix, covered by the unit regression test.