diff --git a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java index e9b29db7c..8f15a7f63 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java @@ -96,6 +96,14 @@ public abstract class LazyReactPackage implements ReactPackage { return modules; } + /** + * @return list of native modules which should be eagerly initialized. + */ + public List getEagerNativeModules() { + return Collections.emptyList(); + } + + /** * @param reactContext react application context that can be used to create View Managers. * @return list of module specs that can create the View Managers. diff --git a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java index ba107f1a6..2c6877902 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java @@ -45,6 +45,7 @@ public class NativeModuleRegistryBuilder { if (reactPackage instanceof LazyReactPackage) { LazyReactPackage lazyReactPackage = (LazyReactPackage) reactPackage; List moduleSpecs = lazyReactPackage.getNativeModules(mReactApplicationContext); + List eagerNativeModules = lazyReactPackage.getEagerNativeModules(); Map reactModuleInfoMap = lazyReactPackage.getReactModuleInfoProvider().getReactModuleInfos(); @@ -52,7 +53,7 @@ public class NativeModuleRegistryBuilder { String className = moduleSpec.getClassName(); ReactModuleInfo reactModuleInfo = reactModuleInfoMap.get(className); ModuleHolder moduleHolder; - if (reactModuleInfo == null) { + if (reactModuleInfo == null || eagerNativeModules.contains(className)) { NativeModule module; ReactMarker.logMarker( ReactMarkerConstants.CREATE_MODULE_START,