From 3d8142bf3639db5dd4cfb6b5d50a2b7c737ff42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Tue, 12 Aug 2025 19:31:06 +0200 Subject: [PATCH 1/8] chore: wp --- .../AppDelegate/RCTDependencyProvider.h | 2 + .../React/Base/RCTTurboModuleRegistry.h | 2 + .../ReactPackageTurboModuleManagerDelegate.kt | 14 +++++ .../turbomodule/core/TurboModuleManager.kt | 6 ++ .../core/TurboModuleManagerDelegate.kt | 4 ++ .../react/module/model/ReactModuleInfo.kt | 62 ++++++++++--------- 6 files changed, 62 insertions(+), 28 deletions(-) diff --git a/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h b/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h index ddc412b0f71b..18c9c188be33 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h +++ b/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h @@ -20,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN - (NSArray *)URLRequestHandlerClassNames; +- (NSArray *)bundleConsumerClassNames; + - (NSArray *)unstableModulesRequiringMainQueueSetup; - (NSDictionary> *)thirdPartyFabricComponents; diff --git a/packages/react-native/React/Base/RCTTurboModuleRegistry.h b/packages/react-native/React/Base/RCTTurboModuleRegistry.h index 8ad5d06af116..dcfb844512d4 100644 --- a/packages/react-native/React/Base/RCTTurboModuleRegistry.h +++ b/packages/react-native/React/Base/RCTTurboModuleRegistry.h @@ -4,6 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ +#import /** * A protocol that allows TurboModules to do lookup on other TurboModules. @@ -11,6 +12,7 @@ */ @protocol RCTTurboModuleRegistry - (id)moduleForName:(const char *)moduleName; +- (NSMutableArray> *)modulesRespondingToSelector:(SEL)selector; /** * Rationale: diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt index d13a565d6e0b..b552ecd1acdd 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt @@ -151,6 +151,20 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage return resolvedModule as TurboModule } + override fun getModuleNamesConformingToInterface(clazz: Class): List { + val moduleNames = mutableListOf() + + for (moduleProvider in moduleProviders) { + val moduleInfos = packageModuleInfos[moduleProvider]?.values ?: continue + for (moduleInfo in moduleInfos) { + if (clazz.isInstance(moduleInfo.moduleClass)) { + moduleNames.add(moduleInfo.name) + } + } + } + return moduleNames + } + override fun unstable_isModuleRegistered(moduleName: String): Boolean { for (moduleProvider in moduleProviders) { val moduleInfo: ReactModuleInfo? = packageModuleInfos[moduleProvider]?.get(moduleName) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt index 99e3bcdd2d9f..1ce8c1988a65 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt @@ -209,6 +209,12 @@ public class TurboModuleManager( return module } + public fun getModuleNamesConformingToInterface( + clazz: Class + ): List { + return delegate?.getModuleNamesConformingToInterface(clazz) ?: emptyList() + } + /** * Given a ModuleHolder, and the TurboModule's moduleName, return the TurboModule instance. * diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt index 202e8aecb607..150b197b1adc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt @@ -36,6 +36,10 @@ public abstract class TurboModuleManagerDelegate { */ public abstract fun getModule(moduleName: String): TurboModule? + public abstract fun getModuleNamesConformingToInterface( + clazz: Class + ): List + public abstract fun unstable_isModuleRegistered(moduleName: String): Boolean /** diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt index b6cc0d0905ea..afab50425a78 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt @@ -14,38 +14,44 @@ import com.facebook.react.turbomodule.core.interfaces.TurboModule * so Java modules don't have to be instantiated at React Native start up. */ public class ReactModuleInfo( - @get:JvmName("name") public val name: String, - @get:JvmName("className") public val className: String, - @get:JvmName("canOverrideExistingModule") public val canOverrideExistingModule: Boolean, - @get:JvmName("needsEagerInit") public val needsEagerInit: Boolean, - public val isCxxModule: Boolean, - public val isTurboModule: Boolean + @get:JvmName("name") public val name: String, + @get:JvmName("className") public val className: String, + @get:JvmName("canOverrideExistingModule") public val canOverrideExistingModule: Boolean, + @get:JvmName("needsEagerInit") public val needsEagerInit: Boolean, + public val isCxxModule: Boolean, + public val isTurboModule: Boolean, + public val moduleClass: Class<*> ) { + public constructor( + name: String, + className: String, + canOverrideExistingModule: Boolean, + needsEagerInit: Boolean, + isCxxModule: Boolean, + isTurboModule: Boolean + ) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, + ReactModuleInfo::class.java + ) - @Deprecated( - "This constructor is deprecated and will be removed in the future. Use ReactModuleInfo(String, String, boolean, boolean, boolean, boolean)]", - replaceWith = - ReplaceWith( - expression = - "ReactModuleInfo(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule)"), - level = DeprecationLevel.WARNING) public constructor( - name: String, - className: String, - canOverrideExistingModule: Boolean, - needsEagerInit: Boolean, - @Suppress("UNUSED_PARAMETER") hasConstants: Boolean, - isCxxModule: Boolean, - isTurboModule: Boolean - ) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule) + name: String, + className: String, + canOverrideExistingModule: Boolean, + needsEagerInit: Boolean, + @Suppress("UNUSED_PARAMETER") hasConstants: Boolean, + isCxxModule: Boolean, + isTurboModule: Boolean + ) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, + ReactModuleInfo::class.java + ) public companion object { - /** - * Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule] - * in the constructor of ReactModuleInfo. - */ - @JvmStatic - public fun classIsTurboModule(clazz: Class<*>): Boolean = - TurboModule::class.java.isAssignableFrom(clazz) + /** + * Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule] + * in the constructor of ReactModuleInfo. + */ + @JvmStatic + public fun classIsTurboModule(clazz: Class<*>): Boolean = + TurboModule::class.java.isAssignableFrom(clazz) } } From bcdb7a6eb73a63b2ce80e5c03e07a7278587ddca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Wed, 13 Aug 2025 18:52:04 +0200 Subject: [PATCH 2/8] feat: android --- .../com/facebook/react/CoreModulesPackage.kt | 3 ++- .../ReactPackageTurboModuleManagerDelegate.kt | 8 +++++-- .../com/facebook/react/bridge/ModuleHolder.kt | 4 +++- .../react/module/model/ReactModuleInfo.kt | 23 +++++++++++-------- .../react/runtime/CoreReactPackage.kt | 4 +++- .../facebook/react/shell/MainReactPackage.kt | 4 +++- .../modules/model/ReactModuleInfoTest.kt | 4 +++- .../react/uiapp/RNTesterApplication.kt | 7 ++++-- 8 files changed, 39 insertions(+), 18 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt index 29f02c66452e..382a5cd154d9 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt @@ -121,7 +121,8 @@ internal class CoreModulesPackage( reactModule.canOverrideExistingModule, reactModule.needsEagerInit, reactModule.isCxxModule, - ReactModuleInfo.classIsTurboModule(moduleClass)) + ReactModuleInfo.classIsTurboModule(moduleClass), + moduleClass::class.java) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt index b552ecd1acdd..84d6b88fb739 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt @@ -104,7 +104,9 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage reactModule.canOverrideExistingModule, true, reactModule.isCxxModule, - ReactModuleInfo.classIsTurboModule(moduleClass)) + ReactModuleInfo.classIsTurboModule(moduleClass), + moduleClass::class.java + ) else ReactModuleInfo( moduleName, @@ -112,7 +114,9 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage module.canOverrideExistingModule(), true, CxxModuleWrapper::class.java.isAssignableFrom(moduleClass), - ReactModuleInfo.classIsTurboModule(moduleClass)) + ReactModuleInfo.classIsTurboModule(moduleClass), + moduleClass::class.java + ) reactModuleInfoMap[moduleName] = moduleInfo moduleMap[moduleName] = module diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt index 0e35427ebcf0..a34d51360923 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt @@ -61,7 +61,9 @@ public class ModuleHolder { nativeModule.canOverrideExistingModule(), true, CxxModuleWrapper::class.java.isAssignableFrom(nativeModule.javaClass), - ReactModuleInfo.classIsTurboModule(nativeModule.javaClass)) + ReactModuleInfo.classIsTurboModule(nativeModule.javaClass), + nativeModule.javaClass::class.java + ) internalModule = nativeModule PrinterHolder.printer.logMessage( diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt index afab50425a78..a692709fe169 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt @@ -22,6 +22,8 @@ public class ReactModuleInfo( public val isTurboModule: Boolean, public val moduleClass: Class<*> ) { + @Deprecated("Use the constructor that takes the class instance." + + " Without passing the class instance your module might not be discovered in some scenarios.") public constructor( name: String, className: String, @@ -29,10 +31,12 @@ public class ReactModuleInfo( needsEagerInit: Boolean, isCxxModule: Boolean, isTurboModule: Boolean - ) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, + ) : this( + name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, ReactModuleInfo::class.java ) + @Deprecated("Use constructor that doesn't take `hasConstants` parameter.") public constructor( name: String, className: String, @@ -41,17 +45,18 @@ public class ReactModuleInfo( @Suppress("UNUSED_PARAMETER") hasConstants: Boolean, isCxxModule: Boolean, isTurboModule: Boolean - ) : this(name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, + ) : this( + name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, ReactModuleInfo::class.java ) public companion object { - /** - * Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule] - * in the constructor of ReactModuleInfo. - */ - @JvmStatic - public fun classIsTurboModule(clazz: Class<*>): Boolean = - TurboModule::class.java.isAssignableFrom(clazz) + /** + * Checks if the passed class is a TurboModule. Useful to populate the parameter [isTurboModule] + * in the constructor of ReactModuleInfo. + */ + @JvmStatic + public fun classIsTurboModule(clazz: Class<*>): Boolean = + TurboModule::class.java.isAssignableFrom(clazz) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt index 5a06c82b4ee6..448d3e92d954 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt @@ -105,7 +105,9 @@ internal class CoreReactPackage( reactModule.canOverrideExistingModule, reactModule.needsEagerInit, reactModule.isCxxModule, - ReactModuleInfo.classIsTurboModule(moduleClass)) + ReactModuleInfo.classIsTurboModule(moduleClass), + moduleClass::class.java + ) } } return ReactModuleInfoProvider { reactModuleInfoMap } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt index 9b6734c7d306..49e4f6cc9695 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt @@ -281,7 +281,9 @@ constructor(private val config: MainPackageConfig? = null) : reactModule.canOverrideExistingModule, reactModule.needsEagerInit, reactModule.isCxxModule, - classIsTurboModule(moduleClass)) + classIsTurboModule(moduleClass), + reactModule::class.java + ) } return ReactModuleInfoProvider { moduleMap } } diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/model/ReactModuleInfoTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/model/ReactModuleInfoTest.kt index 7b05b99b4391..136010e94c45 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/model/ReactModuleInfoTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/model/ReactModuleInfoTest.kt @@ -23,12 +23,14 @@ class ReactModuleInfoTest { /* canOverrideExistingModule = */ false, /* needsEagerInit = */ false, /* isCxxModule = */ false, - /* isTurboModule = */ false) + /* isTurboModule = */ false, + /* moduleClass = */ ReactModuleInfoTest::class.java) assertThat(reactModuleInfo.name).isEqualTo("name") assertThat(reactModuleInfo.canOverrideExistingModule).isFalse() assertThat(reactModuleInfo.needsEagerInit).isFalse() assertThat(reactModuleInfo.isCxxModule).isFalse() assertThat(reactModuleInfo.isTurboModule).isFalse() + assertThat(reactModuleInfo.moduleClass).isEqualTo(ReactModuleInfoTest::class.java) } @Test diff --git a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt index aa966356f80b..ec5a3496b413 100644 --- a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt +++ b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt @@ -73,7 +73,9 @@ internal class RNTesterApplication : Application(), ReactApplication { canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, - isTurboModule = true), + isTurboModule = true, + SampleTurboModule::class.java + ), SampleLegacyModule.NAME to ReactModuleInfo( SampleLegacyModule.NAME, @@ -81,7 +83,8 @@ internal class RNTesterApplication : Application(), ReactApplication { canOverrideExistingModule = false, needsEagerInit = false, isCxxModule = false, - isTurboModule = false)) + isTurboModule = false, + SampleTurboModule::class.java)) } }) add( From a2050f8ed1bdf5cbcbbcae407d68321d57bc1009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Wed, 13 Aug 2025 19:25:46 +0200 Subject: [PATCH 3/8] feat: ios --- .../AppDelegate/RCTDependencyProvider.h | 2 -- .../react-native/React/Base/RCTBridgeModule.h | 1 + .../react-native/React/Base/RCTModuleRegistry.m | 6 ++++++ .../React/Base/RCTTurboModuleRegistry.h | 3 +-- .../ios/ReactCommon/RCTTurboModuleManager.mm | 17 +++++++++++++++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h b/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h index 18c9c188be33..ddc412b0f71b 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h +++ b/packages/react-native/Libraries/AppDelegate/RCTDependencyProvider.h @@ -20,8 +20,6 @@ NS_ASSUME_NONNULL_BEGIN - (NSArray *)URLRequestHandlerClassNames; -- (NSArray *)bundleConsumerClassNames; - - (NSArray *)unstableModulesRequiringMainQueueSetup; - (NSDictionary> *)thirdPartyFabricComponents; diff --git a/packages/react-native/React/Base/RCTBridgeModule.h b/packages/react-native/React/Base/RCTBridgeModule.h index 1fb3e3e0e7ef..23b1fa6bda01 100644 --- a/packages/react-native/React/Base/RCTBridgeModule.h +++ b/packages/react-native/React/Base/RCTBridgeModule.h @@ -361,6 +361,7 @@ RCT_EXTERN_C_END - (id)moduleForName:(const char *)moduleName; - (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; +- (id)moduleNamesRespondingToSelector:(SEL)selector; - (BOOL)moduleIsInitialized:(Class)moduleClass; // Note: This method lazily load the module as necessary. diff --git a/packages/react-native/React/Base/RCTModuleRegistry.m b/packages/react-native/React/Base/RCTModuleRegistry.m index 7a1c3bb85c5d..5dd3de2ced46 100644 --- a/packages/react-native/React/Base/RCTModuleRegistry.m +++ b/packages/react-native/React/Base/RCTModuleRegistry.m @@ -53,6 +53,12 @@ - (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyL return module; } +- (id)moduleNamesRespondingToSelector:(SEL)selector +{ + id turboModuleRegistry = _turboModuleRegistry; + return [turboModuleRegistry moduleNamesRespondingToSelector:selector]; +} + - (BOOL)moduleIsInitialized:(Class)moduleClass { #ifndef RCT_FIT_RM_OLD_RUNTIME diff --git a/packages/react-native/React/Base/RCTTurboModuleRegistry.h b/packages/react-native/React/Base/RCTTurboModuleRegistry.h index dcfb844512d4..511b86cf7d9f 100644 --- a/packages/react-native/React/Base/RCTTurboModuleRegistry.h +++ b/packages/react-native/React/Base/RCTTurboModuleRegistry.h @@ -12,8 +12,6 @@ */ @protocol RCTTurboModuleRegistry - (id)moduleForName:(const char *)moduleName; -- (NSMutableArray> *)modulesRespondingToSelector:(SEL)selector; - /** * Rationale: * When TurboModules lookup other modules by name, we first check the TurboModule @@ -24,5 +22,6 @@ * TurboModules to TurboModules is complete. */ - (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLookupFailure; +- (id)moduleNamesRespondingToSelector:(SEL)selector; - (BOOL)moduleIsInitialized:(const char *)moduleName; @end 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 5168bbf415d1..259a26e89258 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 @@ -996,6 +996,23 @@ - (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLoo return module; } +- (id)moduleNamesRespondingToSelector:(SEL)selector +{ + std::unique_lock guard(_moduleHoldersMutex); + NSMutableArray *moduleNames = [NSMutableArray new]; + + for (auto &pair : _moduleHolders) { + auto * moduleName = pair.first.c_str(); + Class moduleClass = [self _getModuleClassFromName:moduleName]; + + if ([moduleClass instancesRespondToSelector:selector]) { + [moduleNames addObject:[NSString stringWithUTF8String:moduleName]]; + } + } + + return moduleNames; +} + - (BOOL)moduleIsInitialized:(const char *)moduleName { std::unique_lock guard(_moduleHoldersMutex); From ebeb39a60d27d9826bba1e06a6df77698b732f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 14 Aug 2025 10:51:07 +0200 Subject: [PATCH 4/8] chore: cleanup --- packages/react-native/React/Base/RCTBridgeModule.h | 1 - packages/react-native/React/Base/RCTModuleRegistry.m | 6 ------ packages/react-native/React/Base/RCTTurboModuleRegistry.h | 3 +-- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/react-native/React/Base/RCTBridgeModule.h b/packages/react-native/React/Base/RCTBridgeModule.h index 23b1fa6bda01..1fb3e3e0e7ef 100644 --- a/packages/react-native/React/Base/RCTBridgeModule.h +++ b/packages/react-native/React/Base/RCTBridgeModule.h @@ -361,7 +361,6 @@ RCT_EXTERN_C_END - (id)moduleForName:(const char *)moduleName; - (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad; -- (id)moduleNamesRespondingToSelector:(SEL)selector; - (BOOL)moduleIsInitialized:(Class)moduleClass; // Note: This method lazily load the module as necessary. diff --git a/packages/react-native/React/Base/RCTModuleRegistry.m b/packages/react-native/React/Base/RCTModuleRegistry.m index 5dd3de2ced46..7a1c3bb85c5d 100644 --- a/packages/react-native/React/Base/RCTModuleRegistry.m +++ b/packages/react-native/React/Base/RCTModuleRegistry.m @@ -53,12 +53,6 @@ - (id)moduleForName:(const char *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyL return module; } -- (id)moduleNamesRespondingToSelector:(SEL)selector -{ - id turboModuleRegistry = _turboModuleRegistry; - return [turboModuleRegistry moduleNamesRespondingToSelector:selector]; -} - - (BOOL)moduleIsInitialized:(Class)moduleClass { #ifndef RCT_FIT_RM_OLD_RUNTIME diff --git a/packages/react-native/React/Base/RCTTurboModuleRegistry.h b/packages/react-native/React/Base/RCTTurboModuleRegistry.h index 511b86cf7d9f..8ad5d06af116 100644 --- a/packages/react-native/React/Base/RCTTurboModuleRegistry.h +++ b/packages/react-native/React/Base/RCTTurboModuleRegistry.h @@ -4,7 +4,6 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -#import /** * A protocol that allows TurboModules to do lookup on other TurboModules. @@ -12,6 +11,7 @@ */ @protocol RCTTurboModuleRegistry - (id)moduleForName:(const char *)moduleName; + /** * Rationale: * When TurboModules lookup other modules by name, we first check the TurboModule @@ -22,6 +22,5 @@ * TurboModules to TurboModules is complete. */ - (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLookupFailure; -- (id)moduleNamesRespondingToSelector:(SEL)selector; - (BOOL)moduleIsInitialized:(const char *)moduleName; @end From 2c047ab758926d777bf511a056bcc6a26000dbdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 14 Aug 2025 10:54:29 +0200 Subject: [PATCH 5/8] chore: formatting --- .../ReactPackageTurboModuleManagerDelegate.kt | 10 +-- .../com/facebook/react/bridge/ModuleHolder.kt | 3 +- .../turbomodule/core/TurboModuleManager.kt | 2 +- .../core/TurboModuleManagerDelegate.kt | 2 +- .../react/module/model/ReactModuleInfo.kt | 67 +++++++++++-------- .../react/runtime/CoreReactPackage.kt | 3 +- .../facebook/react/shell/MainReactPackage.kt | 3 +- 7 files changed, 48 insertions(+), 42 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt index 84d6b88fb739..1429d9a2bd8a 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt @@ -105,8 +105,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage true, reactModule.isCxxModule, ReactModuleInfo.classIsTurboModule(moduleClass), - moduleClass::class.java - ) + moduleClass::class.java) else ReactModuleInfo( moduleName, @@ -115,8 +114,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage true, CxxModuleWrapper::class.java.isAssignableFrom(moduleClass), ReactModuleInfo.classIsTurboModule(moduleClass), - moduleClass::class.java - ) + moduleClass::class.java) reactModuleInfoMap[moduleName] = moduleInfo moduleMap[moduleName] = module @@ -155,7 +153,9 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage return resolvedModule as TurboModule } - override fun getModuleNamesConformingToInterface(clazz: Class): List { + override fun getModuleNamesConformingToInterface( + clazz: Class + ): List { val moduleNames = mutableListOf() for (moduleProvider in moduleProviders) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt index a34d51360923..ea96972702af 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt @@ -62,8 +62,7 @@ public class ModuleHolder { true, CxxModuleWrapper::class.java.isAssignableFrom(nativeModule.javaClass), ReactModuleInfo.classIsTurboModule(nativeModule.javaClass), - nativeModule.javaClass::class.java - ) + nativeModule.javaClass::class.java) internalModule = nativeModule PrinterHolder.printer.logMessage( diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt index 1ce8c1988a65..0c714af0e7f1 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt @@ -210,7 +210,7 @@ public class TurboModuleManager( } public fun getModuleNamesConformingToInterface( - clazz: Class + clazz: Class ): List { return delegate?.getModuleNamesConformingToInterface(clazz) ?: emptyList() } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt index 150b197b1adc..22e00f88cbd8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt @@ -37,7 +37,7 @@ public abstract class TurboModuleManagerDelegate { public abstract fun getModule(moduleName: String): TurboModule? public abstract fun getModuleNamesConformingToInterface( - clazz: Class + clazz: Class ): List public abstract fun unstable_isModuleRegistered(moduleName: String): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt index a692709fe169..93028a1e9b30 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt @@ -14,41 +14,50 @@ import com.facebook.react.turbomodule.core.interfaces.TurboModule * so Java modules don't have to be instantiated at React Native start up. */ public class ReactModuleInfo( - @get:JvmName("name") public val name: String, - @get:JvmName("className") public val className: String, - @get:JvmName("canOverrideExistingModule") public val canOverrideExistingModule: Boolean, - @get:JvmName("needsEagerInit") public val needsEagerInit: Boolean, - public val isCxxModule: Boolean, - public val isTurboModule: Boolean, - public val moduleClass: Class<*> + @get:JvmName("name") public val name: String, + @get:JvmName("className") public val className: String, + @get:JvmName("canOverrideExistingModule") public val canOverrideExistingModule: Boolean, + @get:JvmName("needsEagerInit") public val needsEagerInit: Boolean, + public val isCxxModule: Boolean, + public val isTurboModule: Boolean, + public val moduleClass: Class<*> ) { - @Deprecated("Use the constructor that takes the class instance." + - " Without passing the class instance your module might not be discovered in some scenarios.") + @Deprecated( + "Use the constructor that takes the class instance." + + " Without passing the class instance your module might not be discovered in some scenarios.") public constructor( - name: String, - className: String, - canOverrideExistingModule: Boolean, - needsEagerInit: Boolean, - isCxxModule: Boolean, - isTurboModule: Boolean + name: String, + className: String, + canOverrideExistingModule: Boolean, + needsEagerInit: Boolean, + isCxxModule: Boolean, + isTurboModule: Boolean ) : this( - name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, - ReactModuleInfo::class.java - ) + name, + className, + canOverrideExistingModule, + needsEagerInit, + isCxxModule, + isTurboModule, + ReactModuleInfo::class.java) @Deprecated("Use constructor that doesn't take `hasConstants` parameter.") public constructor( - name: String, - className: String, - canOverrideExistingModule: Boolean, - needsEagerInit: Boolean, - @Suppress("UNUSED_PARAMETER") hasConstants: Boolean, - isCxxModule: Boolean, - isTurboModule: Boolean + name: String, + className: String, + canOverrideExistingModule: Boolean, + needsEagerInit: Boolean, + @Suppress("UNUSED_PARAMETER") hasConstants: Boolean, + isCxxModule: Boolean, + isTurboModule: Boolean ) : this( - name, className, canOverrideExistingModule, needsEagerInit, isCxxModule, isTurboModule, - ReactModuleInfo::class.java - ) + name, + className, + canOverrideExistingModule, + needsEagerInit, + isCxxModule, + isTurboModule, + ReactModuleInfo::class.java) public companion object { /** @@ -57,6 +66,6 @@ public class ReactModuleInfo( */ @JvmStatic public fun classIsTurboModule(clazz: Class<*>): Boolean = - TurboModule::class.java.isAssignableFrom(clazz) + TurboModule::class.java.isAssignableFrom(clazz) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt index 448d3e92d954..df7fd8af9c04 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt @@ -106,8 +106,7 @@ internal class CoreReactPackage( reactModule.needsEagerInit, reactModule.isCxxModule, ReactModuleInfo.classIsTurboModule(moduleClass), - moduleClass::class.java - ) + moduleClass::class.java) } } return ReactModuleInfoProvider { reactModuleInfoMap } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt index 49e4f6cc9695..cc62712dbe66 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt @@ -282,8 +282,7 @@ constructor(private val config: MainPackageConfig? = null) : reactModule.needsEagerInit, reactModule.isCxxModule, classIsTurboModule(moduleClass), - reactModule::class.java - ) + reactModule::class.java) } return ReactModuleInfoProvider { moduleMap } } From ee1c5213b1cae730b767c75daf72867b2671ddd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 14 Aug 2025 17:22:19 +0200 Subject: [PATCH 6/8] chore: cleanup --- .../ReactPackageTurboModuleManagerDelegate.kt | 13 +++++++------ .../turbomodule/core/TurboModuleManager.kt | 6 +++--- .../core/TurboModuleManagerDelegate.kt | 4 ++-- .../react/module/model/ReactModuleInfo.kt | 4 ++-- .../ios/ReactCommon/RCTTurboModuleManager.mm | 17 ----------------- 5 files changed, 14 insertions(+), 30 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt index 1429d9a2bd8a..595af9a37d91 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt @@ -153,20 +153,21 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage return resolvedModule as TurboModule } - override fun getModuleNamesConformingToInterface( + override fun getModulesConformingToInterface( clazz: Class - ): List { - val moduleNames = mutableListOf() + ): List { + val modules = mutableListOf() for (moduleProvider in moduleProviders) { val moduleInfos = packageModuleInfos[moduleProvider]?.values ?: continue for (moduleInfo in moduleInfos) { - if (clazz.isInstance(moduleInfo.moduleClass)) { - moduleNames.add(moduleInfo.name) + if (clazz.isInstance(moduleInfo.moduleClass) && moduleInfo.isTurboModule) { + modules.add(moduleProvider.getModule(moduleInfo.name) as TurboModule) } } } - return moduleNames + + return modules } override fun unstable_isModuleRegistered(moduleName: String): Boolean { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt index 0c714af0e7f1..4fea79b54ce7 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt @@ -209,10 +209,10 @@ public class TurboModuleManager( return module } - public fun getModuleNamesConformingToInterface( + public fun getModulesConformingToInterface( clazz: Class - ): List { - return delegate?.getModuleNamesConformingToInterface(clazz) ?: emptyList() + ): List { + return delegate?.getModulesConformingToInterface(clazz) ?: emptyList() } /** diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt index 22e00f88cbd8..d51de7c57bd5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt @@ -36,9 +36,9 @@ public abstract class TurboModuleManagerDelegate { */ public abstract fun getModule(moduleName: String): TurboModule? - public abstract fun getModuleNamesConformingToInterface( + public abstract fun getModulesConformingToInterface( clazz: Class - ): List + ): List public abstract fun unstable_isModuleRegistered(moduleName: String): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt index 93028a1e9b30..918d4a6fd5e4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/module/model/ReactModuleInfo.kt @@ -39,7 +39,7 @@ public class ReactModuleInfo( needsEagerInit, isCxxModule, isTurboModule, - ReactModuleInfo::class.java) + ReactModuleInfo::class.java /* placeholder */) @Deprecated("Use constructor that doesn't take `hasConstants` parameter.") public constructor( @@ -57,7 +57,7 @@ public class ReactModuleInfo( needsEagerInit, isCxxModule, isTurboModule, - ReactModuleInfo::class.java) + ReactModuleInfo::class.java /* placeholder */) public companion object { /** 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 259a26e89258..5168bbf415d1 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 @@ -996,23 +996,6 @@ - (id)moduleForName:(const char *)moduleName warnOnLookupFailure:(BOOL)warnOnLoo return module; } -- (id)moduleNamesRespondingToSelector:(SEL)selector -{ - std::unique_lock guard(_moduleHoldersMutex); - NSMutableArray *moduleNames = [NSMutableArray new]; - - for (auto &pair : _moduleHolders) { - auto * moduleName = pair.first.c_str(); - Class moduleClass = [self _getModuleClassFromName:moduleName]; - - if ([moduleClass instancesRespondToSelector:selector]) { - [moduleNames addObject:[NSString stringWithUTF8String:moduleName]]; - } - } - - return moduleNames; -} - - (BOOL)moduleIsInitialized:(const char *)moduleName { std::unique_lock guard(_moduleHoldersMutex); From 9dce7b0a6a4fa48af1e10aea4ca0e3a4734d6a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 14 Aug 2025 17:26:19 +0200 Subject: [PATCH 7/8] chore: cleanup --- .../react/internal/turbomodule/core/TurboModuleManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt index 4fea79b54ce7..fef44943fc55 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt @@ -211,7 +211,7 @@ public class TurboModuleManager( public fun getModulesConformingToInterface( clazz: Class - ): List { + ): List { return delegate?.getModulesConformingToInterface(clazz) ?: emptyList() } From 53d8b5a5a883ff252ef719a2366983a2b5a0a664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 14 Aug 2025 19:53:45 +0200 Subject: [PATCH 8/8] chore: fix proxies --- .../src/main/java/com/facebook/react/CoreModulesPackage.kt | 2 +- .../facebook/react/ReactPackageTurboModuleManagerDelegate.kt | 2 +- .../src/main/java/com/facebook/react/bridge/ModuleHolder.kt | 2 +- .../main/java/com/facebook/react/runtime/CoreReactPackage.kt | 2 +- .../src/main/java/com/facebook/react/shell/MainReactPackage.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt index 382a5cd154d9..4c90149c51ea 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.kt @@ -122,7 +122,7 @@ internal class CoreModulesPackage( reactModule.needsEagerInit, reactModule.isCxxModule, ReactModuleInfo.classIsTurboModule(moduleClass), - moduleClass::class.java) + moduleClass) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt index 595af9a37d91..e8a50f2d2708 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt @@ -161,7 +161,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage for (moduleProvider in moduleProviders) { val moduleInfos = packageModuleInfos[moduleProvider]?.values ?: continue for (moduleInfo in moduleInfos) { - if (clazz.isInstance(moduleInfo.moduleClass) && moduleInfo.isTurboModule) { + if (clazz.isAssignableFrom(moduleInfo.moduleClass) && moduleInfo.isTurboModule) { modules.add(moduleProvider.getModule(moduleInfo.name) as TurboModule) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt index ea96972702af..502a84202fe3 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt @@ -62,7 +62,7 @@ public class ModuleHolder { true, CxxModuleWrapper::class.java.isAssignableFrom(nativeModule.javaClass), ReactModuleInfo.classIsTurboModule(nativeModule.javaClass), - nativeModule.javaClass::class.java) + nativeModule.javaClass) internalModule = nativeModule PrinterHolder.printer.logMessage( diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt index df7fd8af9c04..fa37f0f33257 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt @@ -106,7 +106,7 @@ internal class CoreReactPackage( reactModule.needsEagerInit, reactModule.isCxxModule, ReactModuleInfo.classIsTurboModule(moduleClass), - moduleClass::class.java) + moduleClass) } } return ReactModuleInfoProvider { reactModuleInfoMap } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt index cc62712dbe66..34cb3d168686 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt @@ -282,7 +282,7 @@ constructor(private val config: MainPackageConfig? = null) : reactModule.needsEagerInit, reactModule.isCxxModule, classIsTurboModule(moduleClass), - reactModule::class.java) + moduleClass) } return ReactModuleInfoProvider { moduleMap } }