Skip to content

Update react-native-reanimated patch and fix iOS EAS build issues#593

Merged
jamespepper81 merged 13 commits into
mainfrom
dev
Jun 10, 2026
Merged

Update react-native-reanimated patch and fix iOS EAS build issues#593
jamespepper81 merged 13 commits into
mainfrom
dev

Conversation

@jamespepper81

Copy link
Copy Markdown
Contributor

Update version v1.2.2

jamespepper81 and others added 13 commits June 9, 2026 13:11
Add a patch file (patches/react-native-reanimated+4.1.6.patch) with native changes to react-native-reanimated (C++/Fabric updates, ReanimatedModuleProxy, headers and related Android build artifacts included in the patch). Update .gitignore to re-add the Xcode GoogleService-Info.plist entry and ignore build archives (*.tar.gz). This change applies local fixes/workarounds to the reanimated native code and prevents build archive files from being committed.
Update Node engine versions to 20.19.4 across eas.json (development, preview, production) and package.json to keep CI/local tooling consistent. Also rename the react-native-reanimated patch file from 4.1.6 to 4.1.7 to match the updated dependency versioning.
The react-native-reanimated patch accidentally included 578+ Android build
cache files from android/.cxx/ (binary .ninja_deps, compiled objects, CMake
caches with absolute local paths). These malformed binary patch entries caused
git apply to fail on the EAS iOS macOS workers, killing npm install in ~2 min.

Replace with a clean 939-line patch containing only the 4 necessary C++ source
changes (UpdatesRegistry.cpp/h, ReanimatedModuleProxy.cpp/h). Also rename both
patch files to match their actually-installed package versions (4.1.6, 23.8.4)
to eliminate patch-package version mismatch warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Change package.json override for @xmldom/xmldom from ">=0.8.13" to "~0.8.13" to enforce a specific compatible patch range. Update package-lock.json accordingly: add nested @xmldom 0.8.13 entries for several packages and remove the top-level 0.9.10 entry. Also bump the package-lock Node engine requirement to ">=20.19.4".
Adds @react-native-firebase+app+23.8.8.patch to replace <React/RCTXxx.h>
includes with #if __has_include(<React-Core/RCTXxx.h>) guards in all
RNFBApp iOS source files, fixing the -Werror,-Wnon-modular-include-in-
framework-module build failure under use_frameworks! :static.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Xcode 26's explicitly-built modules precompile RNFBApp as a framework
module, and its non-modular <React/RCT*.h> includes are a hard error
that CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES cannot
suppress in that build step.

Use expo-build-properties ios.forceStaticLinking (expo/expo#39742) to
build RNFBApp, RNFBCrashlytics and RNFBPerf as static libraries instead
of static frameworks, so the framework-module rule no longer applies.

Remove the previous patch-package workarounds: the app patch was proven
ineffective by the build log (the #else fallback import still compiled),
and the crashlytics patch's '@import RNFBApp;' both triggered the
failing module precompile and would break outright against a static
library.

https://claude.ai/code/session_011Pb73hN3z9CRdUGM6wfvnT
Describe the forceStaticLinking mechanism that replaced the
patch-package workarounds and the removal of the unused
use_modular_headers podfile property.

https://claude.ai/code/session_011Pb73hN3z9CRdUGM6wfvnT
Remove React Native Firebase patches and use forceStaticLinking
The lockfile had resolved the ~4.1.6 range to 4.1.7, but the repo's
patch-package patch (patches/react-native-reanimated+4.1.6.patch) was
generated against 4.1.6. It removes performNonLayoutOperations from
ReanimatedModuleProxy in Common/cpp, and 4.1.7's android/NativeProxy.cpp
added a call site the patch doesn't cover, causing the C++ compile error:

  NativeProxy.cpp:135: no member named 'performNonLayoutOperations'
  in 'reanimated::ReanimatedModuleProxy'

Pinning to exactly 4.1.6 keeps the installed package in sync with the
patch. Verified patch-package applies cleanly to 4.1.6 with no dangling
references to the removed methods in the Android, Common, or Apple
native sources.

https://claude.ai/code/session_01MJ2ySZUv4HUKwVHn5BMDU8
patch-package only exits non-zero on failed patch application when CI is
set; locally it just warns, letting a broken native patch go unnoticed
until a build fails. --error-on-fail surfaces it at install time.

https://claude.ai/code/session_01MJ2ySZUv4HUKwVHn5BMDU8
Remove tilde from react-native-reanimated version constraint
- Bump version to 1.2.2 in package.json, package-lock.json, app.json,
  android/app/build.gradle and ios/BitSleuthWallet/Info.plist
- Convert the [Unreleased] changelog section into the 1.2.2 entry and
  backfill notable changes since v1.2.1 (Satoshi fee fallback, Firebase
  Performance, reanimated pin, security fixes, build fixes)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jamespepper81 jamespepper81 merged commit 993914a into main Jun 10, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants