From 85b47afb48e50b036d2c2c79a008f571d3bfcb43 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Mon, 11 Aug 2025 08:51:01 -0700 Subject: [PATCH] Check delegate for getModuleForClass and getModuleInstanceFromClass (#53207) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53207 When restructuring the RCTReactNativeFactory, we forgot to add a couple of methods to check whether the delegate was implementing the RCTTurboModuleManager delegate methods. This has been reported [here](https://github.com/react-native-community/discussions-and-proposals/issues/916) This change fixes it. ## Changelog: [iOS][Fixed] - Ask the delegate for `getModuleForClass` and `getModuleInstanceFromClass` Reviewed By: cortinico Differential Revision: D79998104 fbshipit-source-id: 68069a9f93182d4fa416b5799bf4eec4d107552b --- .../Libraries/AppDelegate/RCTReactNativeFactory.mm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm index 3e17b5d6ca1..9d5a45787af 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm @@ -146,6 +146,12 @@ using namespace facebook::react; #if RN_DISABLE_OSS_PLUGIN_HEADER return RCTTurboModulePluginClassProvider(name); #else + if ([_delegate respondsToSelector:@selector(getModuleClassFromName:)]) { + Class moduleClass = [_delegate getModuleClassFromName:name]; + if (moduleClass != nil) { + return moduleClass; + } + } return RCTCoreModulesClassProvider(name); #endif } @@ -176,7 +182,12 @@ using namespace facebook::react; format:@"Delegate must provide a valid dependencyProvider"]; } #endif - + if ([_delegate respondsToSelector:@selector(getModuleInstanceFromClass:)]) { + id moduleInstance = [_delegate getModuleInstanceFromClass:moduleClass]; + if (moduleInstance != nil) { + return moduleInstance; + } + } return RCTAppSetupDefaultModuleFromClass(moduleClass, self.delegate.dependencyProvider); }