Upgrade to React Native 0.85.3 / Expo SDK 56 (new architecture)#6064
Upgrade to React Native 0.85.3 / Expo SDK 56 (new architecture)#6064peachbits wants to merge 5 commits into
Conversation
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Android ran reanimated 3 via the local `r3-hack` package on the old architecture while iOS ran reanimated 4 on Fabric. Reanimated 4 requires the new architecture, so route both platforms through reanimated 4 / worklets and enable the new architecture on Android: - babel.config.js: always use react-native-worklets/plugin; add api.cache(true) now that the config is static (no platform branch configuring the cache). - metro.config.js: drop the r3-hack Android resolver. - react-native.config.js: drop the reanimated sourceDir override and the worklets Android disable. - package.json: remove the r3-hack dependency; delete scripts/r3-hack. - android/gradle.properties: newArchEnabled=true. - useCarouselGesture: unify the withSpring config to the reanimated-4 algorithm on both platforms (Android previously used the reanimated-3 damping). Also dedupe yaob to ^0.4.0, fixing the nativeIo collision that crashed ZEC/Pirate wallet creation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
f3dd774 to
0a46981
Compare
Move the app to React Native 0.85.3 / Expo SDK 56, with both platforms on reanimated v4 and the new architecture. Bumps the RN-ecosystem dependencies together and updates the jest preset, worklets resolver, and test snapshots. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Enable newArchEnabled, bump compile/target SDK 35->36, and rewrite settings.gradle for Expo SDK 56 autolinking. Unwrap MainApplication from the ReactNativeHostWrapper removed in SDK 56. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Expo autolinking + new-architecture Podfile (deployment target 16.4), the ExpoReactNativeFactory AppDelegate, and RCTNewArchEnabled in Info.plist. Includes the build fixes needed under Xcode 26. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
React Native 0.85.3 upstreamed the equivalent of our old react-native+0.79.2.patch — ShadowTree::commit() now caps optimistic retries at MAX_COMMIT_ATTEMPTS_BEFORE_LOCKING and falls back to an exclusive recursive lock (ReactCommon/react/renderer/mounting/ShadowTree.cpp) — but only behind the preventShadowTreeCommitExhaustion feature flag, which defaults to false. Enable the flag with a 1-line patch so the RN upgrade doesn't silently drop the crash protection. Delete this patch when upstream flips the default. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
History cleanup after a review question: commit 2 ("Upgrade to React Native 0.85.3") previously contained a spurious Audited the whole series for more of the same (blob-level revert detection across all commits + exact-line added-then-removed scan, lockfile excluded): this was the only instance. Final tree is bit-identical to the previously validated one, and all 5 commits re-passed the per-commit precommit gate (521/521 tests on commit 1's RN 0.79 base; 517/517 on 0.85). |
0a46981 to
30638ca
Compare
Summary
Upgrades edge-react-gui from React Native 0.79.2 → 0.85.3 (Expo SDK 53 → 56), moving both platforms to the new architecture and removing the reanimated v3/v4 platform split.
Android was previously pinned to reanimated 3 on the old architecture via a local
scripts/r3-hackcrutch (iOS already ran reanimated 4 on the new arch). This drops the crutch so the whole app runs reanimated v4 on the new architecture, and brings RN, Expo, and the RN-ecosystem dependencies up to current.Commits (each passes precommit independently)
scripts/r3-hackdeletion,newArchEnabled=true). Gated on the RN 0.79 dependency set: 521/521 tests.catchtyping, explicit empty-string checks) in files this diff touches — the TypeScript 5.0→5.8 bump surfaces them, and lint-staged holds commits touching those files responsible. All semantics-preserving.MainApplicationunwrap.ExpoReactNativeFactoryAppDelegate,RCTNewArchEnabled.react-native+0.79.2.patch(retry cap + recursive-lock fallback inShadowTree.cpp) but behindpreventShadowTreeCommitExhaustion, which defaults to false. A 1-line patch flips the default so the upgrade doesn't silently drop the crash fix. Delete when upstream flips it.Every commit passed:
localize+update-eslint-warnings(tree stays clean), eslint on its changed files,tsc, and the full jest suite (521/521 on commit 1's RN 0.79 base; 517/517 on 0.85).Performance — Android, Flashlight, physical device
Net: jank floor 33 → 48 fps (+44%), jank −66%, peak CPU −38%, total CPU −42% — at a RAM cost (the new-arch tradeoff).
Testing
Notes
🤖 Generated with Claude Code