From bbc6695afcc780ff52ef85f3dca5bd5ea0f055bc Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Tue, 25 Jun 2019 09:41:32 -0700 Subject: [PATCH] Move TurboModuleManager initialization into createReactContext Summary: TurboModuleManager was initialized in `ReactInstanceManager.setupReactContext`, which is executed on the NativeModule thread after we call `ReactInstanceManager.createReactContext` on a new thread. `NativeModuleRegistry` is initialized in `ReactInstanceManager.createReactContext`, so if someone requests a TurboModule after `ReactInstanceManager.createReactContext` is called and before `ReactInstanceManager.setupReactContext` fully finishes executing, that TurboModule won't be found. This diff moves TurboModuleManager initialization into `ReactInstanceManager.createReactContext` Reviewed By: fkgozali Differential Revision: D15978486 fbshipit-source-id: 734e83eced414e545fe275e9a124d0df35204c40 --- .../main/java/com/facebook/react/ReactInstanceManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 7dd065c1848..e507b60d2f9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -1009,9 +1009,6 @@ public class ReactInstanceManager { catalystInstance.initialize(); - if (ReactFeatureFlags.useTurboModules) { - catalystInstance.setTurboModuleManager(catalystInstance.getJSIModule(JSIModuleType.TurboModuleManager)); - } mDevSupportManager.onNewReactContextCreated(reactContext); mMemoryPressureRouter.addMemoryPressureListener(catalystInstance); @@ -1178,6 +1175,10 @@ public class ReactInstanceManager { reactContext.initializeWithInstance(catalystInstance); + if (ReactFeatureFlags.useTurboModules && mJSIModulePackage != null) { + catalystInstance.setTurboModuleManager(catalystInstance.getJSIModule(JSIModuleType.TurboModuleManager)); + } + return reactContext; }