Repository navigation
Bump @react-navigation/bottom-tabs to 7.18.16 and @react-navigation/native to 7.3.16 - #103346
Conversation
…3.16, port the native patches and the history test to the new go() rejection
|
|
…popstate timeout patch can go
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. |
|
I suppose it's better to merge this PR after this? |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-10-09.at.17.43.34.movAndroid: mWeb ChromeUploading Screen Recording 2026-10-09 at 17.43.34.mov… iOS: HybridAppScreen.Recording.2026-10-09.at.17.35.30.moviOS: mWeb SafariScreen.Recording.2026-10-09.at.17.32.08.movMacOS: Chrome / SafariScreen.Recording.2026-10-09.at.17.30.05.mov |
|
Changes look good! |
|
🚧 grgia 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! 🧪🧪
|
Explanation of Change
Extracted from #101339, as suggested in #101339 (comment), so the dependency bump lands and can be reverted separately from the native tab bar.
@react-navigation/bottom-tabs7.15.5 → 7.18.16 and@react-navigation/native7.1.33 → 7.3.16. These are the newest versions that still work with@react-navigation/core7.21.12. Fromcore7.21.13,getRootState()is typed asNavigationState | undefined, which needs about 40 call-site changes across the app. That belongs to the full React Navigation upgrade in Upgrade react-navigation to 7.11.2 #101715.@react-navigation/elementsis pinned to 2.9.38 inoverrides. Without the pin,bottom-tabs7.18.16 installs a nestedelements2.9.44 that requiresnative^7.5.0, which leaves two copies ofelementsin the tree.native001 (browser history) is ported to the newcreateMemoryHistoryanduseLinkingcode. The logic is unchanged.native7.2,history.go()rejects when the browser does not land on the target entry, for example after the fallback timeout. Upstream wraps its ownawait history.go()calls intry/catch. The patch now does the same in its stale-history branch, so an interrupted traversal skips thepushinstead of logging an error.native003 (popstate fallback timeout) is still needed on 7.3.16, where the timeout is still 100ms. Upstream raised it to 1000ms in 7.5.0, as noted indetails.md.fix-failing-jest-by-disabling-esmodulepatches forbottom-tabs,nativeandelementsare only renamed.createMemoryHistoryTestis updated to the newgo()behavior. A traversal that lands resolves, and one that times out without landing rejects. Both cases still check that only external popstates reach listeners.Fixed Issues
$ #101169
PROPOSAL: N/A
Tests
Web (Chrome and Firefox), covering the browser history patches:
iOS and Android:
Offline tests
Same as tests, with the network turned off. Navigation does not depend on the network.
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
iOS: mWeb Safari
MacOS: Chrome / Safari