diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.h b/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.h new file mode 100644 index 000000000000..65277e0098ca --- /dev/null +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.h @@ -0,0 +1,18 @@ +// +// RCTReactNativeCoreModulesProvider.h +// React-RCTAppDelegate +// +// Created by Riccardo Cipolleschi on 10/11/2025. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RCTReactNativeCoreModulesProvider : NSObject + ++ (Class) reactNativeCoreModuleForName:(const char *)name; + +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.mm b/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.mm new file mode 100644 index 000000000000..905e1ad080da --- /dev/null +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeCoreModulesProvider.mm @@ -0,0 +1,65 @@ +// +// RCTReactNativeCoreModulesProvider.m +// React-RCTAppDelegate +// +// Created by Riccardo Cipolleschi on 10/11/2025. +// + +#import "RCTReactNativeCoreModulesProvider.h" + +#if !RN_DISABLE_OSS_PLUGIN_HEADER +#import +#import +#import +#import +#import +#import +#import +#import + +#endif + +@implementation RCTReactNativeCoreModulesProvider + ++ (Class) reactNativeCoreModuleForName:(const char *)name +{ +#if !RN_DISABLE_OSS_PLUGIN_HEADER + Class clazz = RCTCoreModulesClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTBlobClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTImageClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTNetworkClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTSettingsClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTLinkingClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTVibrationClassProvider(name); + if (clazz != NULL) { + return clazz; + } + clazz = RCTAnimationClassProvider(name); + if (clazz != NULL) { + return clazz; + } + +#endif + + return NULL; +} + +@end diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm index e1eecb0ae73b..9fa12919ca0c 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm @@ -6,6 +6,7 @@ */ #import "RCTReactNativeFactory.h" +#import "RCTReactNativeCoreModulesProvider.h" #import #import #import @@ -166,7 +167,7 @@ - (Class)getModuleClassFromName:(const char *)name return moduleClass; } } - return RCTCoreModulesClassProvider(name); + return [RCTReactNativeCoreModulesProvider reactNativeCoreModuleForName:name]; #endif } diff --git a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec index 437a80be92cc..65cd2d20e617 100644 --- a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec +++ b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec @@ -62,6 +62,12 @@ Pod::Spec.new do |s| s.dependency "React-CoreModules" s.dependency "React-RCTFBReactNativeSpec" s.dependency "React-defaultsnativemodule" + s.dependency "React-RCTAnimation" + s.dependency "React-RCTBlob" + s.dependency "React-RCTLinking" + s.dependency "React-RCTSettings" + s.dependency "React-RCTVibration" + if use_hermes() s.dependency 'React-hermes' end