diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java index 3afe3d96af23e8..9ce067b9fc56dc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java @@ -15,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.facebook.infer.annotation.Assertions; +import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.config.ReactFeatureFlags; import com.facebook.react.devsupport.DisabledDevSupportManager; import com.facebook.react.devsupport.DoubleTapReloadRecognizer; @@ -99,7 +100,7 @@ private DevSupportManager getDevSupportManager() { && mReactHost.getDevSupportManager() != null) { return mReactHost.getDevSupportManager(); } else if (getReactNativeHost().hasInstance() - && getReactNativeHost().getUseDeveloperSupport()) { + && getReactNativeHost().getReactInstanceManager() != null) { return getReactNativeHost().getReactInstanceManager().getDevSupportManager(); } else { return null; @@ -241,17 +242,31 @@ public boolean onKeyLongPress(int keyCode) { public void reload() { DevSupportManager devSupportManager = getDevSupportManager(); - if (devSupportManager != null) { - // With Bridgeless enabled, reload in RELEASE mode - if (devSupportManager instanceof DisabledDevSupportManager - && ReactFeatureFlags.enableBridgelessArchitecture - && mReactHost != null) { - // Do not reload the bundle from JS as there is no bundler running in release mode. - mReactHost.reload("ReactDelegate.reload()"); + if (devSupportManager == null) { + return; + } + + // Reload in RELEASE mode + if (devSupportManager instanceof ReleaseDevSupportManager) { + // Do not reload the bundle from JS as there is no bundler running in release mode. + if (ReactFeatureFlags.enableBridgelessArchitecture) { + if (mReactHost != null) { + mReactHost.reload("ReactDelegate.reload()"); + } } else { - devSupportManager.handleReloadJS(); + UiThreadUtil.runOnUiThread( + () -> { + if (mReactNativeHost.hasInstance() + && mReactNativeHost.getReactInstanceManager() != null) { + mReactNativeHost.getReactInstanceManager().recreateReactContextInBackground(); + } + }); } + return; } + + // Reload in DEBUG mode + devSupportManager.handleReloadJS(); } public void loadApp() {