Skip to content

Conversation

@bitmold
Copy link
Collaborator

@bitmold bitmold commented Jan 22, 2026

Pull Request Checklist

This bumps react native to 0.77.3, which aligns many native binaries on Android. It contains necessary JavaScript, Android-specific, and iOS-specific changes.

Making this as a draft right now...

This should be merged after the work of #3065 and #3067 has been tested and looks good. Just getting this ready right now. I also need to rebuild the project on iOS and test against other changes that have been merged from the past week, but I expect that to be fine. Will update this once I do though.

This change fetches the new aligned binary from Maven instead like a regular Android dependency instead of from the
JavaScript project via npm. Therefore no iOS/desktop changes are a part of this PR.
…ts to pass into node are never freed.

- Otherwise cleaned up C++ code with suggestions from clang-tidy
…3.1... notably react 18.3.0 only adds warnings to assist upgrading to react 19, but still they should match
@bitmold
Copy link
Collaborator Author

bitmold commented Jan 23, 2026

After merging this PR, the APK will appear to be aligned if you run it against Google's 64 bit x86_64/arm64 alignment script:

Recursively analyzing ../android/app/build/outputs/apk/standard/debug/app-standard-debug.apk

NOTICE: Zip alignment check requires build-tools version 35.0.0-rc3 or higher.
  You can install the latest build-tools by running the below command
  and updating your $PATH:

    sdkmanager "build-tools;35.0.0-rc3"

=== ELF alignment ===
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libnode.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libjsctooling.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/librnscreens.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libjsc.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libown-native-lib.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libjnidispatch.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libreactnative.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libsodium.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libavif_android.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libtor.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libglide-webp.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libc++_shared.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libfbjni.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libimagepipeline.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libnative-imagetranscoder.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libgifimage.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libnative-filters.so: ALIGNED (2**14)
/tmp/app-standard-debug_out_8RFkI/lib/arm64-v8a/libjsi.so: ALIGNED (2**14)
ELF Verification Successful
=====================

However, this script doesn't pick up classic-level since it's a .node binary that's loaded at runtime. That'll remained unaligned until #3092 is merged. This can happen before or after this is merged+tested.

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