diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index cd82c3ccd85..2517e294919 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -305,7 +305,7 @@ struct RCTInstanceCallback : public InstanceCallback { [self registerExtraModules]; // Initialize all native modules that cannot be loaded lazily - [self _initModules:RCTGetModuleClasses() withDispatchGroup:prepareBridge lazilyDiscovered:NO]; + (void)[self _initializeModules:RCTGetModuleClasses() withDispatchGroup:prepareBridge lazilyDiscovered:NO]; [_performanceLogger markStopForTag:RCTPLNativeModuleInit]; @@ -635,9 +635,9 @@ struct RCTInstanceCallback : public InstanceCallback { } } -- (void)_initModules:(NSArray> *)modules - withDispatchGroup:(dispatch_group_t)dispatchGroup - lazilyDiscovered:(BOOL)lazilyDiscovered +- (NSArray *)_initializeModules:(NSArray> *)modules + withDispatchGroup:(dispatch_group_t)dispatchGroup + lazilyDiscovered:(BOOL)lazilyDiscovered { RCTAssert(!(RCTIsMainQueue() && lazilyDiscovered), @"Lazy discovery can only happen off the Main Queue"); @@ -688,11 +688,15 @@ struct RCTInstanceCallback : public InstanceCallback { RCTProfileHookModules(self); } #endif + return moduleDataById; } - (void)registerAdditionalModuleClasses:(NSArray *)modules { - [self _initModules:modules withDispatchGroup:NULL lazilyDiscovered:YES]; + NSArray *newModules = [self _initializeModules:modules withDispatchGroup:NULL lazilyDiscovered:YES]; + if (_reactInstance) { + _reactInstance->getModuleRegistry().registerModules(createNativeModules(newModules, self, _reactInstance)); + } } - (void)_prepareModulesWithDispatchGroup:(dispatch_group_t)dispatchGroup