diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm index 290ce617af7..b784ba5942a 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm @@ -493,19 +493,21 @@ typedef struct { - (id)_moduleProviderForName:(const char *)moduleName { - id moduleProvider = [_delegate getModuleProvider:moduleName]; - BOOL isTurboModule = [self _isTurboModule:moduleName]; - if (RCTTurboModuleEnabled() && !isTurboModule && !moduleProvider) { - return nil; - } + if ([_delegate respondsToSelector:@selector(getModuleProvider:)]) { + id moduleProvider = [_delegate getModuleProvider:moduleName]; + BOOL isTurboModule = [self _isTurboModule:moduleName]; + if (RCTTurboModuleEnabled() && !isTurboModule && !moduleProvider) { + return nil; + } - if (moduleProvider) { - if ([moduleProvider conformsToProtocol:@protocol(RCTTurboModule)]) { - // moduleProvider is also a TM, we need to initialize objectiveC properties, like the dispatch queue - return (id)[self _provideObjCModule:moduleName moduleProvider:moduleProvider]; + if (moduleProvider) { + if ([moduleProvider conformsToProtocol:@protocol(RCTTurboModule)]) { + // moduleProvider is also a TM, we need to initialize objectiveC properties, like the dispatch queue + return (id)[self _provideObjCModule:moduleName moduleProvider:moduleProvider]; + } + // module is Cxx module + return moduleProvider; } - // module is Cxx module - return moduleProvider; } // No module provider, the Module is registered without Codegen