Conversation
RCTCxxBridge and RCTBridge.runtime were removed in React Native 0.87, so reaching through the bridge for the runtime no longer compiles. Use the RCTTurboModuleWithJSIBindings hook, which React Native has provided with this signature since before 0.85. Also drop the React-callinvoker/ prefix from the iOS CallInvoker include; both branches now resolve the same header.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #117
iOS fails to build on React Native 0.87 (Android is unaffected):
RCTCxxBridgeandRCTBridge.runtimewere removed along with the legacy bridge, soinstallandgetTurboModuleno longer compile.CallInvoker.hinclude used theReact-callinvoker/prefix while the generated spec pulls<ReactCommon/CallInvoker.h>. In 0.87 theReact-Core-prebuiltpod vendors its own copy, so those are two different physical files and#pragma oncecannot dedupe them, givingredefinition of 'CallInvoker' / 'NativeMethodCallInvoker' / 'SchedulerPriority'.Fix: take the runtime and call invoker from
installJSIBindingsWithRuntime:callInvoker:, whichRCTTurboModuleManagerinvokes while creating the TurboModule, i.e. before JS can callinstall().install()now reports whether the bindings actually landed, so the existing check insrc/index.tsxkeeps its meaning. Both#ifdef ANDROIDinclude branches collapse to<ReactCommon/CallInvoker.h>, which resolves on iOS as well.Compatibility: no version gating needed. That hook has the same signature and is checked first in 0.85, 0.86 and 0.87, covering the RN 0.85+ range the README supports. Android already took the
ReactCommon/branch, so it is unchanged.Testing: RN 0.87.1, Xcode 26.6, new architecture, device build succeeds.