Skip to content

fix(android): load v9 on old architecture (RNZA-5) - #385

Merged
plrthink merged 6 commits into
masterfrom
cursor/old-arch-v9-proof-9f94
Sep 5, 2026
Merged

fix(android): load v9 on old architecture (RNZA-5)#385
plrthink merged 6 commits into
masterfrom
cursor/old-arch-v9-proof-9f94

Conversation

@plrthink

@plrthink plrthink commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Fix: Android isTurboModule follows BuildConfig.IS_NEW_ARCHITECTURE_ENABLED. Hardcoding true hid NativeModules.RNZipArchive when New Architecture was off (RN 0.70–0.81).
  • CI: .github/workflows/old-arch.yml compiles a throwaway RN 0.81.6 app with New Architecture off (last RN that can opt out). RN 0.82+ ignores the flags.
  • Docs: install table — ^7.0.0 only for RN < 0.70; latest v9 on 0.70–0.81 including old architecture; New Architecture only on 0.82+.

Install decision

RN Install
< 0.70 ^7.0.0
0.70–0.81 latest v9 (old arch works; native rebuild)
0.82+ latest v9 (New Architecture only)

No Interop package. Same JS API.

Test plan

  • npm test (64) / npm run lint
  • Compile Android old-arch RN 0.81 (IS_NEW_ARCHITECTURE_ENABLED=false)
  • Compile iOS old-arch RN 0.81 (Legacy Architecture + BUILD SUCCEEDED)
  • playground-rn / playground-expo New Arch Maestro (e2e.yml)

Squash on merge is fine — the branch has CI-iteration commits.

Open in Web Open in Cursor 

cursoragent and others added 5 commits September 4, 2026 15:34
Hardcoding isTurboModule=true hid RNZipArchive from the legacy
NativeModule registry on old-arch apps, so NativeModules.RNZipArchive
was null. Follow BuildConfig.IS_NEW_ARCHITECTURE_ENABLED instead.

Add playground-rn old-arch Maestro CI (RNZA-5) and document the
compatibility matrix. Stay on v7 only for RN < 0.70.

Co-authored-by: plrthink <plrthink@gmail.com>
RN's gradle plugin reads newArchEnabled from the file, so
-PnewArchEnabled=false still produced IS_NEW_ARCHITECTURE_ENABLED=true
and the old-arch Android e2e never actually ran old arch. iOS old-arch
Maestro already passed.

Co-authored-by: plrthink <plrthink@gmail.com>
RN 0.82+ ignores newArchEnabled=false and RCT_NEW_ARCH_ENABLED=0, so
playground-rn (0.83) cannot opt out. Move old-arch CI to a throwaway
0.81.6 app (last opt-out line) and document the matrix.

Co-authored-by: plrthink <plrthink@gmail.com>
Android 0.81 old-arch assemble already passed with
IS_NEW_ARCHITECTURE_ENABLED=false. iOS pod install failed because
RN 0.81 defaults to iOS 15.1 and RNZipArchive requires 15.5.

Co-authored-by: plrthink <plrthink@gmail.com>
ls *.xcworkspace listed contents.xcworkspacedata inside the bundle.
Use ls -d so xcodebuild gets RnzaOldArch.xcworkspace.

Co-authored-by: plrthink <plrthink@gmail.com>
@plrthink
plrthink marked this pull request as ready for review September 4, 2026 18:16
v7 only for RN < 0.70. Latest v9 on 0.70–0.81 including old
architecture (0.81 compile CI). New Architecture only on 0.82+.
Stop treating New Architecture as required on 0.70–0.81.

Co-authored-by: plrthink <plrthink@gmail.com>
@plrthink
plrthink merged commit 4dd3f1d into master Sep 5, 2026
12 checks passed
@plrthink plrthink mentioned this pull request Sep 5, 2026
1 task
plrthink added a commit that referenced this pull request Sep 5, 2026
Patch for the Android old-architecture NativeModule load fix and
the RN-version install table (#385).

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
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