react-native 0.83.0-nightly-20251103-54047f891 → 0.83.0-nightly-20251103-a034841fd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 83;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20251103-54047f891';
32
+ static prerelease: string | null = 'nightly-20251103-a034841fd';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20251103-54047f891",
27
+ RCTVersionPrerelease: @"nightly-20251103-a034841fd",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -239,6 +239,9 @@ public abstract interface class com/facebook/react/ReactHost {
239
239
  public abstract fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
240
240
  public abstract fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
241
241
  public abstract fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
242
+ public fun setBundleSource (Ljava/lang/String;)V
243
+ public fun setBundleSource (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
244
+ public static synthetic fun setBundleSource$default (Lcom/facebook/react/ReactHost;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
242
245
  public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
243
246
  public abstract fun start ()Lcom/facebook/react/interfaces/TaskInterface;
244
247
  }
@@ -1943,6 +1946,7 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1943
1946
  public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
1944
1947
  public final fun fetchSplitBundleAndCreateBundleLoader (Ljava/lang/String;Lcom/facebook/react/devsupport/DevSupportManagerBase$CallbackWithBundleLoader;)V
1945
1948
  protected final fun getApplicationContext ()Landroid/content/Context;
1949
+ public fun getBundleFilePath ()Ljava/lang/String;
1946
1950
  public fun getCurrentActivity ()Landroid/app/Activity;
1947
1951
  public final fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
1948
1952
  public final fun getDevLoadingViewManager ()Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;
@@ -1977,11 +1981,13 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1977
1981
  public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
1978
1982
  public fun reloadSettings ()V
1979
1983
  public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
1984
+ public fun setBundleFilePath (Ljava/lang/String;)V
1980
1985
  public final fun setDevLoadingViewManager (Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)V
1981
1986
  public fun setDevMenuEnabled (Z)V
1982
1987
  public final fun setDevSupportEnabled (Z)V
1983
1988
  public fun setFpsDebugEnabled (Z)V
1984
1989
  public fun setHotModuleReplacementEnabled (Z)V
1990
+ public final fun setJsAppBundleName (Ljava/lang/String;)V
1985
1991
  public fun setKeyboardShortcutsEnabled (Z)V
1986
1992
  public final fun setLastErrorCookie (I)V
1987
1993
  public final fun setLastErrorStack ([Lcom/facebook/react/devsupport/interfaces/StackFrame;)V
@@ -2151,6 +2157,7 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2151
2157
  public abstract fun createSurfaceDelegate (Ljava/lang/String;)Lcom/facebook/react/common/SurfaceDelegate;
2152
2158
  public abstract fun destroyRootView (Landroid/view/View;)V
2153
2159
  public abstract fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
2160
+ public fun getBundleFilePath ()Ljava/lang/String;
2154
2161
  public abstract fun getCurrentActivity ()Landroid/app/Activity;
2155
2162
  public abstract fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2156
2163
  public fun getDevMenuEnabled ()Z
@@ -2180,6 +2187,7 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2180
2187
  public abstract fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
2181
2188
  public abstract fun reloadSettings ()V
2182
2189
  public abstract fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2190
+ public fun setBundleFilePath (Ljava/lang/String;)V
2183
2191
  public fun setDevMenuEnabled (Z)V
2184
2192
  public abstract fun setDevSupportEnabled (Z)V
2185
2193
  public abstract fun setFpsDebugEnabled (Z)V
@@ -3021,6 +3029,8 @@ public class com/facebook/react/packagerconnection/PackagerConnectionSettings {
3021
3029
  public fun resetDebugServerHost ()V
3022
3030
  public final fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
3023
3031
  public fun setDebugServerHost (Ljava/lang/String;)V
3032
+ public final fun setPackagerOptionsUpdater (Lkotlin/jvm/functions/Function1;)V
3033
+ public final fun updatePackagerOptions (Ljava/util/Map;)Ljava/util/Map;
3024
3034
  }
3025
3035
 
3026
3036
  public final class com/facebook/react/packagerconnection/ReconnectingWebSocket : okhttp3/WebSocketListener {
@@ -3099,6 +3109,8 @@ public final class com/facebook/react/runtime/ReactHostImpl : com/facebook/react
3099
3109
  public fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
3100
3110
  public fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
3101
3111
  public fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
3112
+ public fun setBundleSource (Ljava/lang/String;)V
3113
+ public fun setBundleSource (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
3102
3114
  public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
3103
3115
  public fun start ()Lcom/facebook/react/interfaces/TaskInterface;
3104
3116
  }
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.83.0-nightly-20251103-54047f891
1
+ VERSION_NAME=0.83.0-nightly-20251103-a034841fd
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -193,4 +193,21 @@ public interface ReactHost {
193
193
 
194
194
  /** Set the DevMenu configuration. */
195
195
  public fun setDevMenuConfiguration(config: DevMenuConfiguration): Unit = Unit
196
+
197
+ /** Sets the source of the bundle to be loaded from the file system and reloads the app. */
198
+ public fun setBundleSource(filePath: String): Unit = Unit
199
+
200
+ /**
201
+ * Sets the source of the bundle to be loaded from the packager server, updates the packager
202
+ * connection and reloads the app.
203
+ *
204
+ * @param debugServerHost host and port of the server, for example "localhost:8081"
205
+ * @param moduleName the module name to load, for example "js/RNTesterApp.android"
206
+ * @param queryMapper a function that takes current packager options and returns updated options
207
+ */
208
+ public fun setBundleSource(
209
+ debugServerHost: String,
210
+ moduleName: String,
211
+ queryMapper: (Map<String, String>) -> Map<String, String> = { it },
212
+ ): Unit = Unit
196
213
  }
@@ -280,7 +280,11 @@ public open class DevServerHelper(
280
280
  ): String {
281
281
  val dev = devMode
282
282
  val additionalOptionsBuilder = StringBuilder()
283
- for ((key, value) in packagerConnectionSettings.additionalOptionsForPackager) {
283
+ val packagerOptions =
284
+ packagerConnectionSettings.updatePackagerOptions(
285
+ packagerConnectionSettings.additionalOptionsForPackager
286
+ )
287
+ for ((key, value) in packagerOptions) {
284
288
  if (value.isEmpty()) {
285
289
  continue
286
290
  }
@@ -85,7 +85,7 @@ import java.util.Locale
85
85
  public abstract class DevSupportManagerBase(
86
86
  protected val applicationContext: Context,
87
87
  public val reactInstanceDevHelper: ReactInstanceDevHelper,
88
- @get:JvmName("getJSAppBundleName") public val jsAppBundleName: String?,
88
+ @get:JvmName("getJSAppBundleName") public var jsAppBundleName: String?,
89
89
  enableOnCreate: Boolean,
90
90
  public override val redBoxHandler: RedBoxHandler?,
91
91
  private val devBundleDownloadListener: DevBundleDownloadListener?,
@@ -148,6 +148,12 @@ public abstract class DevSupportManagerBase(
148
148
  field = value
149
149
  }
150
150
 
151
+ override var bundleFilePath: String? = null
152
+ get() = field
153
+ set(value) {
154
+ field = value
155
+ }
156
+
151
157
  override val sourceMapUrl: String
152
158
  get() = jsAppBundleName?.let { devServerHelper.getSourceMapUrl(it) } ?: ""
153
159
 
@@ -48,6 +48,10 @@ public interface DevSupportManager : JSExceptionHandler {
48
48
  get() = true
49
49
  set(value) = Unit
50
50
 
51
+ public var bundleFilePath: String?
52
+ get() = null
53
+ set(value) = Unit
54
+
51
55
  public var devSupportEnabled: Boolean
52
56
 
53
57
  public fun showNewJavaError(message: String?, e: Throwable)
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 83,
17
17
  "patch" to 0,
18
- "prerelease" to "nightly-20251103-54047f891"
18
+ "prerelease" to "nightly-20251103-a034841fd"
19
19
  )
20
20
  }
@@ -5,29 +5,24 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- @file:Suppress("DEPRECATION") // PreferenceManager should be migrated to androidx
9
-
10
8
  package com.facebook.react.packagerconnection
11
9
 
12
10
  import android.content.Context
13
- import android.content.SharedPreferences
14
- import android.preference.PreferenceManager
15
11
  import com.facebook.common.logging.FLog
16
12
  import com.facebook.react.modules.systeminfo.AndroidInfoHelpers
17
13
 
18
14
  public open class PackagerConnectionSettings(private val appContext: Context) {
19
- private val preferences: SharedPreferences =
20
- PreferenceManager.getDefaultSharedPreferences(appContext)
21
15
  public val packageName: String = appContext.packageName
22
16
  private val _additionalOptionsForPackager: MutableMap<String, String> = mutableMapOf()
17
+ private var _packagerOptionsUpdater: (Map<String, String>) -> Map<String, String> = { it }
18
+ private var cachedHost: String? = null
23
19
 
24
20
  public open var debugServerHost: String
25
21
  get() {
26
- // Check host setting first. If empty try to detect emulator type and use default
22
+ // Check cached host first. If empty try to detect emulator type and use default
27
23
  // hostname for those
28
- val hostFromSettings = preferences.getString(PREFS_DEBUG_SERVER_HOST_KEY, null)
29
- if (!hostFromSettings.isNullOrEmpty()) {
30
- return hostFromSettings
24
+ cachedHost?.let {
25
+ return it
31
26
  }
32
27
  val host = AndroidInfoHelpers.getServerHost(appContext)
33
28
  if (host == AndroidInfoHelpers.DEVICE_LOCALHOST) {
@@ -36,20 +31,29 @@ public open class PackagerConnectionSettings(private val appContext: Context) {
36
31
  "You seem to be running on device. Run '${AndroidInfoHelpers.getAdbReverseTcpCommand(appContext)}' to forward the debug server's port to the device.",
37
32
  )
38
33
  }
34
+
35
+ cachedHost = host
39
36
  return host
40
37
  }
41
38
  set(host) {
42
39
  if (host.isEmpty()) {
43
- preferences.edit().remove(PREFS_DEBUG_SERVER_HOST_KEY).apply()
40
+ cachedHost = null
44
41
  } else {
45
- preferences.edit().putString(PREFS_DEBUG_SERVER_HOST_KEY, host).apply()
42
+ cachedHost = host
46
43
  }
47
44
  }
48
45
 
49
46
  public open fun resetDebugServerHost() {
50
- preferences.edit().remove(PREFS_DEBUG_SERVER_HOST_KEY).apply()
47
+ cachedHost = null
51
48
  }
52
49
 
50
+ public fun setPackagerOptionsUpdater(queryMapper: (Map<String, String>) -> Map<String, String>) {
51
+ _packagerOptionsUpdater = queryMapper
52
+ }
53
+
54
+ public fun updatePackagerOptions(options: Map<String, String>): Map<String, String> =
55
+ _packagerOptionsUpdater(options)
56
+
53
57
  public fun setAdditionalOptionForPackager(key: String, value: String) {
54
58
  _additionalOptionsForPackager[key] = value
55
59
  }
@@ -59,6 +63,5 @@ public open class PackagerConnectionSettings(private val appContext: Context) {
59
63
 
60
64
  private companion object {
61
65
  private val TAG = PackagerConnectionSettings::class.java.simpleName
62
- private const val PREFS_DEBUG_SERVER_HOST_KEY = "debug_http_host"
63
66
  }
64
67
  }
@@ -74,6 +74,9 @@ import java.util.concurrent.atomic.AtomicInteger
74
74
  import java.util.concurrent.atomic.AtomicReference
75
75
  import kotlin.Unit
76
76
  import kotlin.concurrent.Volatile
77
+ import kotlinx.coroutines.CoroutineScope
78
+ import kotlinx.coroutines.Dispatchers
79
+ import kotlinx.coroutines.launch
77
80
 
78
81
  /**
79
82
  * A ReactHost is an object that manages a single [ReactInstance]. A ReactHost can be constructed
@@ -650,6 +653,28 @@ public class ReactHostImpl(
650
653
  }
651
654
  }
652
655
 
656
+ @ThreadConfined(value = ThreadConfined.UI)
657
+ override fun setBundleSource(filePath: String) {
658
+ devSupportManager.bundleFilePath = filePath
659
+ reload("Change bundle source")
660
+ }
661
+
662
+ @ThreadConfined(value = ThreadConfined.UI)
663
+ override fun setBundleSource(
664
+ debugServerHost: String,
665
+ moduleName: String,
666
+ queryMapper: (Map<String, String>) -> Map<String, String>,
667
+ ) {
668
+ CoroutineScope(Dispatchers.Default).launch {
669
+ (devSupportManager as DevSupportManagerBase).devServerHelper.closePackagerConnection()
670
+ val packagerConnectionSettings = devSupportManager.devSettings.packagerConnectionSettings
671
+ packagerConnectionSettings.setPackagerOptionsUpdater(queryMapper)
672
+ packagerConnectionSettings.debugServerHost = debugServerHost
673
+ devSupportManager.jsAppBundleName = moduleName
674
+ reload("Changed bundle source")
675
+ }
676
+ }
677
+
653
678
  @ThreadConfined(ThreadConfined.UI)
654
679
  override fun onConfigurationChanged(context: Context) {
655
680
  val currentReactContext = this.currentReactContext
@@ -1064,6 +1089,16 @@ public class ReactHostImpl(
1064
1089
  get() {
1065
1090
  stateTracker.enterState("getJSBundleLoader()")
1066
1091
 
1092
+ if (devSupportManager.bundleFilePath != null) {
1093
+ return try {
1094
+ Task.forResult(
1095
+ JSBundleLoader.createFileLoader(checkNotNull(devSupportManager.bundleFilePath))
1096
+ )
1097
+ } catch (e: Exception) {
1098
+ Task.forError(e)
1099
+ }
1100
+ }
1101
+
1067
1102
  if (useDevSupport && allowPackagerServerAccess) {
1068
1103
  return isMetroRunning.onSuccessTask(
1069
1104
  { task ->
@@ -1367,7 +1367,7 @@ public class ReactScrollView extends ScrollView
1367
1367
 
1368
1368
  mScroller.fling(getScrollX(), scrollY, 0, (int) flingVelocityY, 0, 0, 0, Integer.MAX_VALUE);
1369
1369
  } else {
1370
- scrollTo(getScrollX(), scrollY + (mScroller.getCurrX() - scrollerYBeforeTick));
1370
+ scrollTo(getScrollX(), scrollY + (mScroller.getCurrY() - scrollerYBeforeTick));
1371
1371
  }
1372
1372
  }
1373
1373
  }
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 83;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20251103-54047f891";
25
+ std::string_view Prerelease = "nightly-20251103-a034841fd";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.83.0-nightly-20251103-54047f891",
3
+ "version": "0.83.0-nightly-20251103-a034841fd",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -159,13 +159,13 @@
159
159
  },
160
160
  "dependencies": {
161
161
  "@jest/create-cache-key-function": "^29.7.0",
162
- "@react-native/assets-registry": "0.83.0-nightly-20251103-54047f891",
163
- "@react-native/codegen": "0.83.0-nightly-20251103-54047f891",
164
- "@react-native/community-cli-plugin": "0.83.0-nightly-20251103-54047f891",
165
- "@react-native/gradle-plugin": "0.83.0-nightly-20251103-54047f891",
166
- "@react-native/js-polyfills": "0.83.0-nightly-20251103-54047f891",
167
- "@react-native/normalize-colors": "0.83.0-nightly-20251103-54047f891",
168
- "@react-native/virtualized-lists": "0.83.0-nightly-20251103-54047f891",
162
+ "@react-native/assets-registry": "0.83.0-nightly-20251103-a034841fd",
163
+ "@react-native/codegen": "0.83.0-nightly-20251103-a034841fd",
164
+ "@react-native/community-cli-plugin": "0.83.0-nightly-20251103-a034841fd",
165
+ "@react-native/gradle-plugin": "0.83.0-nightly-20251103-a034841fd",
166
+ "@react-native/js-polyfills": "0.83.0-nightly-20251103-a034841fd",
167
+ "@react-native/normalize-colors": "0.83.0-nightly-20251103-a034841fd",
168
+ "@react-native/virtualized-lists": "0.83.0-nightly-20251103-a034841fd",
169
169
  "abort-controller": "^3.0.0",
170
170
  "anser": "^1.4.9",
171
171
  "ansi-regex": "^5.0.0",
@@ -175,7 +175,7 @@
175
175
  "commander": "^12.0.0",
176
176
  "flow-enums-runtime": "^0.0.6",
177
177
  "glob": "^7.1.1",
178
- "hermes-compiler": "0.14.0-commitly-202510310404-ef620c2c0",
178
+ "hermes-compiler": "0.14.0-commitly-202511031129-7ad93ab30",
179
179
  "invariant": "^2.2.4",
180
180
  "jest-environment-node": "^29.7.0",
181
181
  "memoize-one": "^5.0.0",
@@ -177,9 +177,9 @@ class ReactNativeDependenciesUtils
177
177
  return "#{maven_repo_url}/#{group}/react-native-artifacts/#{version}/react-native-artifacts-#{version}-reactnative-dependencies-#{build_type.to_s}.tar.gz"
178
178
  end
179
179
 
180
- def self.nightly_tarball_url(version)
180
+ def self.nightly_tarball_url(version, build_type)
181
181
  artifact_coordinate = "react-native-artifacts"
182
- artifact_name = "reactnative-dependencies-debug.tar.gz"
182
+ artifact_name = "reactnative-dependencies-#{build_type.to_s}.tar.gz"
183
183
  xml_url = "https://central.sonatype.com/repository/maven-snapshots/com/facebook/react/#{artifact_coordinate}/#{version}-SNAPSHOT/maven-metadata.xml"
184
184
 
185
185
  response = Net::HTTP.get_response(URI(xml_url))
@@ -196,13 +196,39 @@ class ReactNativeDependenciesUtils
196
196
  end
197
197
  end
198
198
 
199
+ def self.download_nightly_rndeps(react_native_path, version, configuration)
200
+ tarball_url = nightly_tarball_url(version, configuration)
201
+ download_rndeps_tarball(react_native_path, tarball_url, version, configuration)
202
+ end
203
+
199
204
  def self.download_stable_rndeps(react_native_path, version, configuration)
200
205
  tarball_url = release_tarball_url(version, configuration)
201
206
  download_rndeps_tarball(react_native_path, tarball_url, version, configuration)
202
207
  end
203
208
 
204
209
  def self.podspec_source_download_prebuilt_nightly_tarball(version)
205
- url = nightly_tarball_url(version)
210
+ # Warn if @@react_native_path is not set
211
+ if @@react_native_path == ""
212
+ rndeps_log("react_native_path is not set", :error)
213
+ return
214
+ end
215
+
216
+ # Warn if @@react_native_version is not set
217
+ if @@react_native_version == ""
218
+ rndeps_log("react_native_version is not set", :error)
219
+ return
220
+ end
221
+
222
+ if @@build_from_source
223
+ return
224
+ end
225
+
226
+ url = nightly_tarball_url(version, :debug)
227
+ rndeps_log("Using tarball from URL: #{url}")
228
+ destinationDebug = download_nightly_rndeps(@@react_native_path, @@react_native_version, :debug)
229
+ download_nightly_rndeps(@@react_native_path, @@react_native_version, :release)
230
+
231
+ return {:http => URI::File.build(path: destinationDebug).to_s }
206
232
  return {:http => url}
207
233
  end
208
234
 
@@ -225,7 +251,7 @@ class ReactNativeDependenciesUtils
225
251
  end
226
252
 
227
253
  def self.nightly_artifact_exists(version)
228
- return artifact_exists(nightly_tarball_url(version).gsub("\\", ""))
254
+ return artifact_exists(nightly_tarball_url(version, :debug).gsub("\\", ""))
229
255
  end
230
256
 
231
257
  def self.artifacts_dir()
@@ -1,2 +1,2 @@
1
- HERMES_VERSION_NAME=0.14.0-commitly-202510310404-ef620c2c0
1
+ HERMES_VERSION_NAME=0.14.0-commitly-202511031129-7ad93ab30
2
2
  HERMES_V1_VERSION_NAME=250829098.0.1