react-native 0.83.0-nightly-20251103-54047f891 → 0.83.0-nightly-20251104-502efe1cc

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.
Files changed (43) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +3 -0
  3. package/React/Base/RCTVersion.m +1 -1
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +0 -8
  5. package/ReactAndroid/api/ReactAndroid.api +12 -0
  6. package/ReactAndroid/gradle.properties +1 -1
  7. package/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt +17 -0
  8. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.kt +5 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +7 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +4 -0
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +1 -7
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +1 -11
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +1 -3
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +1 -3
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +1 -12
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +1 -3
  17. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +17 -14
  19. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +35 -0
  20. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
  21. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +5 -4
  22. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +1 -1
  23. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +1 -15
  24. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +1 -4
  25. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  26. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +0 -2
  27. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +3 -55
  28. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +82 -0
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +1 -5
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +1 -6
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +18 -36
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +2 -4
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +1 -5
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +1 -10
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +1 -2
  36. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +1 -6
  37. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +1 -3
  38. package/package.json +9 -9
  39. package/scripts/cocoapods/rndependencies.rb +30 -4
  40. package/sdks/hermes-engine/version.properties +2 -2
  41. package/src/private/featureflags/ReactNativeFeatureFlags.js +1 -6
  42. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +1 -2
  43. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +48 -0
@@ -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-20251104-502efe1cc';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -727,6 +727,9 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
727
727
  return @"Join";
728
728
  case UIReturnKeyEmergencyCall:
729
729
  return @"Emergency Call";
730
+ case UIReturnKeyDefault:
731
+ case UIReturnKeyContinue:
732
+ case UIReturnKeyDone:
730
733
  default:
731
734
  return @"Done";
732
735
  }
@@ -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-20251104-502efe1cc",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -289,7 +289,6 @@ protected:
289
289
  methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {.argCount = 0, .invoker = __shouldPressibilityUseW3CPointerEventsForHover};
290
290
  methodMap_["shouldTriggerResponderTransferOnScrollAndroid"] = MethodMetadata {.argCount = 0, .invoker = __shouldTriggerResponderTransferOnScrollAndroid};
291
291
  methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {.argCount = 0, .invoker = __skipActivityIdentityAssertionOnHostPause};
292
- methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {.argCount = 0, .invoker = __sweepActiveTouchOnChildNativeGesturesAndroid};
293
292
  methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {.argCount = 0, .invoker = __traceTurboModulePromiseRejectionsOnAndroid};
294
293
  methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {.argCount = 0, .invoker = __updateRuntimeShadowNodeReferencesOnCommit};
295
294
  methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {.argCount = 0, .invoker = __useAlwaysAvailableJSErrorHandling};
@@ -772,13 +771,6 @@ private:
772
771
  return bridging::callFromJs<bool>(rt, &T::skipActivityIdentityAssertionOnHostPause, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
773
772
  }
774
773
 
775
- static jsi::Value __sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
776
- static_assert(
777
- bridging::getParameterCount(&T::sweepActiveTouchOnChildNativeGesturesAndroid) == 1,
778
- "Expected sweepActiveTouchOnChildNativeGesturesAndroid(...) to have 1 parameters");
779
- return bridging::callFromJs<bool>(rt, &T::sweepActiveTouchOnChildNativeGesturesAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
780
- }
781
-
782
774
  static jsi::Value __traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
783
775
  static_assert(
784
776
  bridging::getParameterCount(&T::traceTurboModulePromiseRejectionsOnAndroid) == 1,
@@ -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-20251104-502efe1cc
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)
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<d8dc8c3a2efe8b7e870546e5749ef5ad>>
7
+ * @generated SignedSource<<15ede8025e516f2bdc0329efe49f4a62>>
8
8
  */
9
9
 
10
10
  /**
@@ -420,12 +420,6 @@ public object ReactNativeFeatureFlags {
420
420
  @JvmStatic
421
421
  public fun skipActivityIdentityAssertionOnHostPause(): Boolean = accessor.skipActivityIdentityAssertionOnHostPause()
422
422
 
423
- /**
424
- * A flag to tell Fabric to sweep active touches from JSTouchDispatcher in Android when a child native gesture is started.
425
- */
426
- @JvmStatic
427
- public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = accessor.sweepActiveTouchOnChildNativeGesturesAndroid()
428
-
429
423
  /**
430
424
  * Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
431
425
  */
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<447ccc7271b71b0208a2297b7eba5995>>
7
+ * @generated SignedSource<<c62242068e649aa652b1a8f700bf0ab3>>
8
8
  */
9
9
 
10
10
  /**
@@ -85,7 +85,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
85
85
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
86
86
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
87
87
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
88
- private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
89
88
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
90
89
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
91
90
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
@@ -689,15 +688,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
689
688
  return cached
690
689
  }
691
690
 
692
- override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
693
- var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
694
- if (cached == null) {
695
- cached = ReactNativeFeatureFlagsCxxInterop.sweepActiveTouchOnChildNativeGesturesAndroid()
696
- sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
697
- }
698
- return cached
699
- }
700
-
701
691
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
702
692
  var cached = traceTurboModulePromiseRejectionsOnAndroidCache
703
693
  if (cached == null) {
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<d6403b67e269ad80ef3e2389ac923c8a>>
7
+ * @generated SignedSource<<9a1bdbc2a3ae299433e690b254d7bf0a>>
8
8
  */
9
9
 
10
10
  /**
@@ -158,8 +158,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
158
158
 
159
159
  @DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
160
160
 
161
- @DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
162
-
163
161
  @DoNotStrip @JvmStatic public external fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
164
162
 
165
163
  @DoNotStrip @JvmStatic public external fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<ab48ba86a7cf3cd35ec530a216aea774>>
7
+ * @generated SignedSource<<0d78a0405db2a10c14bd69aaf2a3708a>>
8
8
  */
9
9
 
10
10
  /**
@@ -153,8 +153,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
153
153
 
154
154
  override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
155
155
 
156
- override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = true
157
-
158
156
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = false
159
157
 
160
158
  override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = false
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<6f6b5abe79764b88cf3ed62fe0230786>>
7
+ * @generated SignedSource<<98f16fd1bb180b247ee87bb24b10120e>>
8
8
  */
9
9
 
10
10
  /**
@@ -89,7 +89,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
89
89
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
90
90
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
91
91
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
92
- private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
93
92
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
94
93
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
95
94
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
@@ -758,16 +757,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
758
757
  return cached
759
758
  }
760
759
 
761
- override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
762
- var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
763
- if (cached == null) {
764
- cached = currentProvider.sweepActiveTouchOnChildNativeGesturesAndroid()
765
- accessedFeatureFlags.add("sweepActiveTouchOnChildNativeGesturesAndroid")
766
- sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
767
- }
768
- return cached
769
- }
770
-
771
760
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
772
761
  var cached = traceTurboModulePromiseRejectionsOnAndroidCache
773
762
  if (cached == null) {
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<6b61490a8d6b1df1d6264016455382f8>>
7
+ * @generated SignedSource<<c810245ced5a83806ace12572e112a70>>
8
8
  */
9
9
 
10
10
  /**
@@ -153,8 +153,6 @@ public interface ReactNativeFeatureFlagsProvider {
153
153
 
154
154
  @DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
155
155
 
156
- @DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
157
-
158
156
  @DoNotStrip public fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
159
157
 
160
158
  @DoNotStrip public fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
@@ -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-20251104-502efe1cc"
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 ->
@@ -14,7 +14,6 @@ import com.facebook.infer.annotation.Assertions
14
14
  import com.facebook.react.bridge.ReactContext
15
15
  import com.facebook.react.common.ReactConstants
16
16
  import com.facebook.react.common.annotations.UnstableReactNativeAPI
17
- import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
18
17
  import com.facebook.react.uimanager.common.UIManagerType
19
18
  import com.facebook.react.uimanager.events.EventDispatcher
20
19
  import com.facebook.react.uimanager.events.TouchEvent
@@ -59,7 +58,7 @@ public class JSTouchDispatcher(private val viewGroup: ViewGroup) {
59
58
  dispatchCancelEvent(androidEvent, eventDispatcher)
60
59
  childIsHandlingNativeGesture = true
61
60
 
62
- if (targetTag != -1 && ReactNativeFeatureFlags.sweepActiveTouchOnChildNativeGesturesAndroid()) {
61
+ if (targetTag != -1) {
63
62
  val surfaceId = UIManagerHelper.getSurfaceId(viewGroup)
64
63
  sweepActiveTouchForTag(surfaceId, targetTag, reactContext)
65
64
  }
@@ -29,7 +29,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
29
29
  private lateinit var _eventName: String
30
30
  private var coalescingKey = UNSET_COALESCING_KEY
31
31
  private var pointersEventData: List<WritableMap>? = null
32
- private lateinit var eventState: PointerEventState
32
+ private var eventState: PointerEventState? = null
33
33
 
34
34
  private fun init(
35
35
  eventName: String,
@@ -84,7 +84,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
84
84
  return@EventAnimationDriverMatchSpec false
85
85
  }
86
86
  if (isBubblingEvent(eventName)) {
87
- for (viewTarget in eventState.hitPathForActivePointer) {
87
+ for (viewTarget in checkNotNull(eventState).hitPathForActivePointer) {
88
88
  if (viewTarget.getViewId() == viewTag) {
89
89
  return@EventAnimationDriverMatchSpec true
90
90
  }
@@ -97,10 +97,10 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
97
97
  }
98
98
 
99
99
  override fun onDispose() {
100
+ eventState = null
100
101
  pointersEventData = null
101
- val motionEvent = motionEvent
102
- this.motionEvent = null
103
102
  motionEvent?.recycle()
103
+ motionEvent = null
104
104
 
105
105
  // Either `this` is in the event pool, or motionEvent
106
106
  // is null. It is in theory not possible for a PointerEvent to
@@ -137,6 +137,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
137
137
  val pointerEvent = Arguments.createMap()
138
138
  val motionEvent = checkNotNull(motionEvent)
139
139
  val pointerId = motionEvent.getPointerId(index)
140
+ val eventState = checkNotNull(eventState)
140
141
 
141
142
  // https://www.w3.org/TR/pointerevents/#pointerevent-interface
142
143
  pointerEvent.putDouble("pointerId", pointerId.toDouble())
@@ -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
  }
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<13ed11b5c260fae79048ea80745d22fe>>
7
+ * @generated SignedSource<<b83a74b94f72ed85c7a5323bb56a38a0>>
8
8
  */
9
9
 
10
10
  /**
@@ -429,12 +429,6 @@ class ReactNativeFeatureFlagsJavaProvider
429
429
  return method(javaProvider_);
430
430
  }
431
431
 
432
- bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
433
- static const auto method =
434
- getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("sweepActiveTouchOnChildNativeGesturesAndroid");
435
- return method(javaProvider_);
436
- }
437
-
438
432
  bool traceTurboModulePromiseRejectionsOnAndroid() override {
439
433
  static const auto method =
440
434
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("traceTurboModulePromiseRejectionsOnAndroid");
@@ -866,11 +860,6 @@ bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPaus
866
860
  return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
867
861
  }
868
862
 
869
- bool JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid(
870
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
871
- return ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid();
872
- }
873
-
874
863
  bool JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid(
875
864
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
876
865
  return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
@@ -1182,9 +1171,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1182
1171
  makeNativeMethod(
1183
1172
  "skipActivityIdentityAssertionOnHostPause",
1184
1173
  JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
1185
- makeNativeMethod(
1186
- "sweepActiveTouchOnChildNativeGesturesAndroid",
1187
- JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid),
1188
1174
  makeNativeMethod(
1189
1175
  "traceTurboModulePromiseRejectionsOnAndroid",
1190
1176
  JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid),
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<1e57bf8252c16fc10bbfcae08710af85>>
7
+ * @generated SignedSource<<6238eb0739467af8477aa8fa79a023bf>>
8
8
  */
9
9
 
10
10
  /**
@@ -225,9 +225,6 @@ class JReactNativeFeatureFlagsCxxInterop
225
225
  static bool skipActivityIdentityAssertionOnHostPause(
226
226
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
227
227
 
228
- static bool sweepActiveTouchOnChildNativeGesturesAndroid(
229
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
230
-
231
228
  static bool traceTurboModulePromiseRejectionsOnAndroid(
232
229
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
233
230
 
@@ -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-20251104-502efe1cc";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -53,7 +53,6 @@ TracingAgent::~TracingAgent() {
53
53
 
54
54
  bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
55
55
  if (req.method == "Tracing.start") {
56
- // @cdp Tracing.start support is experimental.
57
56
  if (sessionState_.isDebuggerDomainEnabled) {
58
57
  frontendChannel_(
59
58
  cdp::jsonError(
@@ -81,7 +80,6 @@ bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
81
80
 
82
81
  return true;
83
82
  } else if (req.method == "Tracing.end") {
84
- // @cdp Tracing.end support is experimental.
85
83
  auto state = hostTargetController_.stopTracing();
86
84
 
87
85
  sessionState_.hasPendingTraceRecording = false;