From 2918679479449aab7705d6497016ea4b7217390f Mon Sep 17 00:00:00 2001 From: Kevin Gozali Date: Mon, 10 Dec 2018 23:58:24 -0800 Subject: [PATCH] iOS: ignore extra modules during bridge start up if it's marked for TurboModule Summary: Currently, bridge delegate can provide extra modules during bridge start up path. For TurboModules, we don't need this mechanism (if we need eager init, it will be done in a different way). So, let's ignore modules marked as RCTTurboModule if they are supplied as "extra native modules". Reviewed By: axe-fb Differential Revision: D13383710 fbshipit-source-id: c88d32739be9f66e0daf07ef5465ea6457f8d1c6 --- React/CxxBridge/RCTCxxBridge.mm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 2e0c6ff402f..353bbce40f4 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -659,6 +659,16 @@ struct RCTInstanceCallback : public InstanceCallback { } } + if (RCTTurboModuleEnabled() && [module conformsToProtocol:@protocol(RCTTurboModule)]) { +#if RCT_DEBUG + // TODO: don't ask for extra module for when TurboModule is enabled. + RCTLogError(@"NativeModule '%@' was marked as TurboModule, but provided as an extra NativeModule " + "by the class '%@', ignoring.", + moduleName, moduleClass); +#endif + continue; + } + // Instantiate moduleData container RCTModuleData *moduleData = [[RCTModuleData alloc] initWithModuleInstance:module bridge:self]; _moduleDataByName[moduleName] = moduleData;