diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java
index 825bc1c59843..772119fd89aa 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java
@@ -35,6 +35,7 @@ public class DevInternalSettings implements
private static final String PREFS_RELOAD_ON_JS_CHANGE_KEY = "reload_on_js_change";
private static final String PREFS_INSPECTOR_DEBUG_KEY = "inspector_debug";
private static final String PREFS_HOT_MODULE_REPLACEMENT_KEY = "hot_module_replacement";
+ private static final String PREFS_USE_CACHED_BUNDLE = "use_cached_bundle";
private final SharedPreferences mPreferences;
private final DevSupportManager mDebugManager;
@@ -66,6 +67,11 @@ public boolean isJSDevModeEnabled() {
return mPreferences.getBoolean(PREFS_JS_DEV_MODE_DEBUG_KEY, true);
}
+ @Override
+ public boolean getShouldUseCachedBundle() {
+ return mPreferences.getBoolean(PREFS_USE_CACHED_BUNDLE, true);
+ }
+
public @Nullable String getDebugServerHost() {
return mPreferences.getString(PREFS_DEBUG_SERVER_HOST_KEY, null);
}
@@ -73,7 +79,8 @@ public boolean isJSDevModeEnabled() {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (PREFS_FPS_DEBUG_KEY.equals(key) ||
PREFS_RELOAD_ON_JS_CHANGE_KEY.equals(key) ||
- PREFS_JS_DEV_MODE_DEBUG_KEY.equals(key)) {
+ PREFS_JS_DEV_MODE_DEBUG_KEY.equals(key) ||
+ PREFS_USE_CACHED_BUNDLE.equals(key)) {
mDebugManager.reloadSettings();
}
}
diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java
index 515cab3a517b..32f4f3c69327 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java
@@ -134,6 +134,13 @@ private boolean getHMR() {
return mSettings.isHotModuleReplacementEnabled();
}
+ /**
+ * @return whether we should use cached JS bundles.
+ */
+ public boolean getShouldUseCachedBundle() {
+ return mSettings.getShouldUseCachedBundle();
+ }
+
/**
* @return the host to use when connecting to the bundle server.
*/
diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java
index 7bdeea2d7ce5..f60ee0fa55c6 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java
@@ -452,7 +452,7 @@ public String getDownloadedJSBundleFile() {
*/
@Override
public boolean hasUpToDateJSBundleInCache() {
- if (mIsDevSupportEnabled && mJSBundleTempFile.exists()) {
+ if (mIsDevSupportEnabled && mDevServerHelper.getShouldUseCachedBundle() && mJSBundleTempFile.exists()) {
try {
String packageName = mApplicationContext.getPackageName();
PackageInfo thisPackage = mApplicationContext.getPackageManager()
diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java
index 5ff8dfbf76f9..70e1e3bbb20e 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java
@@ -33,4 +33,10 @@ public interface DeveloperSettings {
* @return Whether element inspector is enabled.
*/
boolean isElementInspectorEnabled();
+
+ /**
+ * @return Whether an cached bundle file should be used.
+ */
+ boolean getShouldUseCachedBundle();
+
}
diff --git a/ReactAndroid/src/main/res/devsupport/xml/preferences.xml b/ReactAndroid/src/main/res/devsupport/xml/preferences.xml
index 99f5408c0508..058e6e46320f 100644
--- a/ReactAndroid/src/main/res/devsupport/xml/preferences.xml
+++ b/ReactAndroid/src/main/res/devsupport/xml/preferences.xml
@@ -19,6 +19,12 @@
android:summary="At the end of animations, Toasts and logs to logcat debug information about the FPS during that transition. Currently only supported for transitions (animated navigations)."
android:defaultValue="false"
/>
+