diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index d9f4975fb20ca2..bc2a500ac818dc 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -764,8 +764,14 @@ public List createAllViewManagers( } public @Nullable ViewManager createViewManager(String viewManagerName) { - ReactApplicationContext context = - Assertions.assertNotNull((ReactApplicationContext) getCurrentReactContext()); + ReactApplicationContext context; + synchronized (mReactContextLock) { + context = (ReactApplicationContext) getCurrentReactContext(); + if (context == null || !context.hasActiveCatalystInstance()) { + return null; + } + } + synchronized (mPackages) { for (ReactPackage reactPackage : mPackages) { if (reactPackage instanceof ViewManagerOnDemandReactPackage) { @@ -781,9 +787,15 @@ public List createAllViewManagers( return null; } - public List getViewManagerNames() { - ReactApplicationContext context = - Assertions.assertNotNull((ReactApplicationContext) getCurrentReactContext()); + public @Nullable List getViewManagerNames() { + ReactApplicationContext context; + synchronized(mReactContextLock) { + context = (ReactApplicationContext) getCurrentReactContext(); + if (context == null || !context.hasActiveCatalystInstance()) { + return null; + } + } + synchronized (mPackages) { Set uniqueNames = new HashSet<>(); for (ReactPackage reactPackage : mPackages) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.java b/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.java index 1e0ee9570bf774..e78d0ca2f13cdf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.java @@ -21,7 +21,7 @@ public interface ViewManagerOnDemandReactPackage { * * @param loadClasses defines if View Managers classes should be loaded or be avoided. */ - List getViewManagerNames(ReactApplicationContext reactContext, boolean loadClasses); + @Nullable List getViewManagerNames(ReactApplicationContext reactContext, boolean loadClasses); /** * Creates and returns a ViewManager with a specific name {@param viewManagerName}. It's up to an * implementing package how to interpret the name.