react-native 0.83.7 → 0.83.9

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 (36) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTVersion.m +1 -1
  3. package/React/CoreModules/React-CoreModules.podspec +1 -1
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +8 -0
  5. package/ReactAndroid/gradle.properties +1 -1
  6. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  7. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  13. package/ReactAndroid/src/main/jni/CMakeLists.txt +7 -0
  14. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  15. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  16. package/ReactCommon/React-Fabric.podspec +6 -0
  17. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  18. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  19. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  20. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +72 -54
  21. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  22. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  23. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  24. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  25. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  26. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  27. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  28. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
  29. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
  30. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +4 -0
  31. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +66 -0
  32. package/package.json +8 -8
  33. package/scripts/react_native_pods.rb +1 -0
  34. package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
  35. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
  36. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
@@ -28,7 +28,7 @@
28
28
  export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 83;
31
- static patch: number = 7;
31
+ static patch: number = 9;
32
32
  static prerelease: string | null = null;
33
33
 
34
34
  static getVersionString(): string {
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
- RCTVersionPatch: @(7),
26
+ RCTVersionPatch: @(9),
27
27
  RCTVersionPrerelease: [NSNull null],
28
28
  };
29
29
  });
@@ -51,7 +51,7 @@ Pod::Spec.new do |s|
51
51
  s.dependency "React-Core/CoreModulesHeaders", version
52
52
  s.dependency "React-RCTImage", version
53
53
  s.dependency "React-jsi", version
54
- s.dependency "React-featureflags"
54
+ add_dependency(s, "React-featureflags")
55
55
  s.dependency 'React-RCTBlob'
56
56
  add_dependency(s, "React-debug")
57
57
  add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])
@@ -260,6 +260,7 @@ protected:
260
260
  methodMap_["enableLayoutAnimationsOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __enableLayoutAnimationsOnIOS};
261
261
  methodMap_["enableMainQueueCoordinatorOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __enableMainQueueCoordinatorOnIOS};
262
262
  methodMap_["enableModuleArgumentNSNullConversionIOS"] = MethodMetadata {.argCount = 0, .invoker = __enableModuleArgumentNSNullConversionIOS};
263
+ methodMap_["enableMutationObserverByDefault"] = MethodMetadata {.argCount = 0, .invoker = __enableMutationObserverByDefault};
263
264
  methodMap_["enableNativeCSSParsing"] = MethodMetadata {.argCount = 0, .invoker = __enableNativeCSSParsing};
264
265
  methodMap_["enableNetworkEventReporting"] = MethodMetadata {.argCount = 0, .invoker = __enableNetworkEventReporting};
265
266
  methodMap_["enablePreparedTextLayout"] = MethodMetadata {.argCount = 0, .invoker = __enablePreparedTextLayout};
@@ -575,6 +576,13 @@ private:
575
576
  return bridging::callFromJs<bool>(rt, &T::enableModuleArgumentNSNullConversionIOS, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
576
577
  }
577
578
 
579
+ static jsi::Value __enableMutationObserverByDefault(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
580
+ static_assert(
581
+ bridging::getParameterCount(&T::enableMutationObserverByDefault) == 1,
582
+ "Expected enableMutationObserverByDefault(...) to have 1 parameters");
583
+ return bridging::callFromJs<bool>(rt, &T::enableMutationObserverByDefault, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
584
+ }
585
+
578
586
  static jsi::Value __enableNativeCSSParsing(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
579
587
  static_assert(
580
588
  bridging::getParameterCount(&T::enableNativeCSSParsing) == 1,
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.83.7
1
+ VERSION_NAME=0.83.9
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -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<<26dfce17f8149372c967e83a1e55b497>>
7
+ * @generated SignedSource<<b700a02133f84260647574d2f7a0f165>>
8
8
  */
9
9
 
10
10
  /**
@@ -246,6 +246,12 @@ public object ReactNativeFeatureFlags {
246
246
  @JvmStatic
247
247
  public fun enableModuleArgumentNSNullConversionIOS(): Boolean = accessor.enableModuleArgumentNSNullConversionIOS()
248
248
 
249
+ /**
250
+ * Enables the MutationObserver Web API in React Native.
251
+ */
252
+ @JvmStatic
253
+ public fun enableMutationObserverByDefault(): Boolean = accessor.enableMutationObserverByDefault()
254
+
249
255
  /**
250
256
  * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing
251
257
  */
@@ -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<<7523b02820a1f77c0a851ed051770f51>>
7
+ * @generated SignedSource<<d9309c7f772c314b78b329e5d1ad7216>>
8
8
  */
9
9
 
10
10
  /**
@@ -56,6 +56,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
56
56
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
57
57
  private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
58
58
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
59
+ private var enableMutationObserverByDefaultCache: Boolean? = null
59
60
  private var enableNativeCSSParsingCache: Boolean? = null
60
61
  private var enableNetworkEventReportingCache: Boolean? = null
61
62
  private var enablePreparedTextLayoutCache: Boolean? = null
@@ -434,6 +435,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
434
435
  return cached
435
436
  }
436
437
 
438
+ override fun enableMutationObserverByDefault(): Boolean {
439
+ var cached = enableMutationObserverByDefaultCache
440
+ if (cached == null) {
441
+ cached = ReactNativeFeatureFlagsCxxInterop.enableMutationObserverByDefault()
442
+ enableMutationObserverByDefaultCache = cached
443
+ }
444
+ return cached
445
+ }
446
+
437
447
  override fun enableNativeCSSParsing(): Boolean {
438
448
  var cached = enableNativeCSSParsingCache
439
449
  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<<0fa0febd40941c466222d1af82f677cf>>
7
+ * @generated SignedSource<<1081d2d4673967a11e8f9ac287c89f02>>
8
8
  */
9
9
 
10
10
  /**
@@ -100,6 +100,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
100
100
 
101
101
  @DoNotStrip @JvmStatic public external fun enableModuleArgumentNSNullConversionIOS(): Boolean
102
102
 
103
+ @DoNotStrip @JvmStatic public external fun enableMutationObserverByDefault(): Boolean
104
+
103
105
  @DoNotStrip @JvmStatic public external fun enableNativeCSSParsing(): Boolean
104
106
 
105
107
  @DoNotStrip @JvmStatic public external fun enableNetworkEventReporting(): 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<<9158a8f1750ec5e9e530399fe09f52cf>>
7
+ * @generated SignedSource<<bc4cd6eafbf14cd91755900db1956238>>
8
8
  */
9
9
 
10
10
  /**
@@ -95,6 +95,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
95
95
 
96
96
  override fun enableModuleArgumentNSNullConversionIOS(): Boolean = false
97
97
 
98
+ override fun enableMutationObserverByDefault(): Boolean = false
99
+
98
100
  override fun enableNativeCSSParsing(): Boolean = false
99
101
 
100
102
  override fun enableNetworkEventReporting(): Boolean = true
@@ -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<<9feb91e31a7d54e4b3f7737fb524800b>>
7
+ * @generated SignedSource<<6deac57c7f55d6d7406f7dffb1abe487>>
8
8
  */
9
9
 
10
10
  /**
@@ -60,6 +60,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
60
60
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
61
61
  private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
62
62
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
63
+ private var enableMutationObserverByDefaultCache: Boolean? = null
63
64
  private var enableNativeCSSParsingCache: Boolean? = null
64
65
  private var enableNetworkEventReportingCache: Boolean? = null
65
66
  private var enablePreparedTextLayoutCache: Boolean? = null
@@ -474,6 +475,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
474
475
  return cached
475
476
  }
476
477
 
478
+ override fun enableMutationObserverByDefault(): Boolean {
479
+ var cached = enableMutationObserverByDefaultCache
480
+ if (cached == null) {
481
+ cached = currentProvider.enableMutationObserverByDefault()
482
+ accessedFeatureFlags.add("enableMutationObserverByDefault")
483
+ enableMutationObserverByDefaultCache = cached
484
+ }
485
+ return cached
486
+ }
487
+
477
488
  override fun enableNativeCSSParsing(): Boolean {
478
489
  var cached = enableNativeCSSParsingCache
479
490
  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<<5425bfe01cb2aaecc61b65b8c2f7dad0>>
7
+ * @generated SignedSource<<99e9d1149773ffdb867c2abed02b0302>>
8
8
  */
9
9
 
10
10
  /**
@@ -95,6 +95,8 @@ public interface ReactNativeFeatureFlagsProvider {
95
95
 
96
96
  @DoNotStrip public fun enableModuleArgumentNSNullConversionIOS(): Boolean
97
97
 
98
+ @DoNotStrip public fun enableMutationObserverByDefault(): Boolean
99
+
98
100
  @DoNotStrip public fun enableNativeCSSParsing(): Boolean
99
101
 
100
102
  @DoNotStrip public fun enableNetworkEventReporting(): Boolean
@@ -14,7 +14,7 @@ public object ReactNativeVersion {
14
14
  public val VERSION: Map<String, Any?> = mapOf(
15
15
  "major" to 0,
16
16
  "minor" to 83,
17
- "patch" to 7,
17
+ "patch" to 9,
18
18
  "prerelease" to null
19
19
  )
20
20
  }
@@ -115,6 +115,7 @@ add_react_common_subdir(react/renderer/components/safeareaview)
115
115
  add_react_common_subdir(react/renderer/leakchecker)
116
116
  add_react_common_subdir(react/renderer/observers/events)
117
117
  add_react_common_subdir(react/renderer/observers/intersection)
118
+ add_react_common_subdir(react/renderer/observers/mutation)
118
119
  add_react_common_subdir(react/renderer/textlayoutmanager)
119
120
  add_react_common_subdir(react/utils)
120
121
  add_react_common_subdir(react/bridging)
@@ -126,6 +127,7 @@ add_react_common_subdir(react/nativemodule/featureflags)
126
127
  add_react_common_subdir(react/nativemodule/microtasks)
127
128
  add_react_common_subdir(react/nativemodule/idlecallbacks)
128
129
  add_react_common_subdir(react/nativemodule/intersectionobserver)
130
+ add_react_common_subdir(react/nativemodule/mutationobserver)
129
131
  add_react_common_subdir(react/nativemodule/webperformance)
130
132
  add_react_common_subdir(react/networking)
131
133
  add_react_common_subdir(jserrorhandler)
@@ -195,6 +197,7 @@ add_library(reactnative
195
197
  $<TARGET_OBJECTS:react_nativemodule_idlecallbacks>
196
198
  $<TARGET_OBJECTS:react_nativemodule_intersectionobserver>
197
199
  $<TARGET_OBJECTS:react_nativemodule_microtasks>
200
+ $<TARGET_OBJECTS:react_nativemodule_mutationobserver>
198
201
  $<TARGET_OBJECTS:react_nativemodule_webperformance>
199
202
  $<TARGET_OBJECTS:react_networking>
200
203
  $<TARGET_OBJECTS:react_newarchdefaults>
@@ -215,6 +218,7 @@ add_library(reactnative
215
218
  $<TARGET_OBJECTS:react_renderer_mounting>
216
219
  $<TARGET_OBJECTS:react_renderer_observers_events>
217
220
  $<TARGET_OBJECTS:react_renderer_observers_intersection>
221
+ $<TARGET_OBJECTS:react_renderer_observers_mutation>
218
222
  $<TARGET_OBJECTS:react_renderer_runtimescheduler>
219
223
  $<TARGET_OBJECTS:react_renderer_scheduler>
220
224
  $<TARGET_OBJECTS:react_renderer_telemetry>
@@ -288,6 +292,7 @@ target_include_directories(reactnative
288
292
  $<TARGET_PROPERTY:react_nativemodule_idlecallbacks,INTERFACE_INCLUDE_DIRECTORIES>
289
293
  $<TARGET_PROPERTY:react_nativemodule_intersectionobserver,INTERFACE_INCLUDE_DIRECTORIES>
290
294
  $<TARGET_PROPERTY:react_nativemodule_microtasks,INTERFACE_INCLUDE_DIRECTORIES>
295
+ $<TARGET_PROPERTY:react_nativemodule_mutationobserver,INTERFACE_INCLUDE_DIRECTORIES>
291
296
  $<TARGET_PROPERTY:react_nativemodule_webperformance,INTERFACE_INCLUDE_DIRECTORIES>
292
297
  $<TARGET_PROPERTY:react_networking,INTERFACE_INCLUDE_DIRECTORIES>
293
298
  $<TARGET_PROPERTY:react_newarchdefaults,INTERFACE_INCLUDE_DIRECTORIES>
@@ -309,6 +314,8 @@ target_include_directories(reactnative
309
314
  $<TARGET_PROPERTY:react_renderer_mapbuffer,INTERFACE_INCLUDE_DIRECTORIES>
310
315
  $<TARGET_PROPERTY:react_renderer_mounting,INTERFACE_INCLUDE_DIRECTORIES>
311
316
  $<TARGET_PROPERTY:react_renderer_observers_events,INTERFACE_INCLUDE_DIRECTORIES>
317
+ $<TARGET_PROPERTY:react_renderer_observers_intersection,INTERFACE_INCLUDE_DIRECTORIES>
318
+ $<TARGET_PROPERTY:react_renderer_observers_mutation,INTERFACE_INCLUDE_DIRECTORIES>
312
319
  $<TARGET_PROPERTY:react_renderer_runtimescheduler,INTERFACE_INCLUDE_DIRECTORIES>
313
320
  $<TARGET_PROPERTY:react_renderer_scheduler,INTERFACE_INCLUDE_DIRECTORIES>
314
321
  $<TARGET_PROPERTY:react_renderer_telemetry,INTERFACE_INCLUDE_DIRECTORIES>
@@ -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<<986de1b799ad8bc22a323365aef3533b>>
7
+ * @generated SignedSource<<9e684659117f413b92bcd0469fae37ba>>
8
8
  */
9
9
 
10
10
  /**
@@ -255,6 +255,12 @@ class ReactNativeFeatureFlagsJavaProvider
255
255
  return method(javaProvider_);
256
256
  }
257
257
 
258
+ bool enableMutationObserverByDefault() override {
259
+ static const auto method =
260
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableMutationObserverByDefault");
261
+ return method(javaProvider_);
262
+ }
263
+
258
264
  bool enableNativeCSSParsing() override {
259
265
  static const auto method =
260
266
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableNativeCSSParsing");
@@ -757,6 +763,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS
757
763
  return ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS();
758
764
  }
759
765
 
766
+ bool JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault(
767
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
768
+ return ReactNativeFeatureFlags::enableMutationObserverByDefault();
769
+ }
770
+
760
771
  bool JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing(
761
772
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
762
773
  return ReactNativeFeatureFlags::enableNativeCSSParsing();
@@ -1161,6 +1172,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1161
1172
  makeNativeMethod(
1162
1173
  "enableModuleArgumentNSNullConversionIOS",
1163
1174
  JReactNativeFeatureFlagsCxxInterop::enableModuleArgumentNSNullConversionIOS),
1175
+ makeNativeMethod(
1176
+ "enableMutationObserverByDefault",
1177
+ JReactNativeFeatureFlagsCxxInterop::enableMutationObserverByDefault),
1164
1178
  makeNativeMethod(
1165
1179
  "enableNativeCSSParsing",
1166
1180
  JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing),
@@ -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<<f5aa0f101192f55b7ac12705d7667424>>
7
+ * @generated SignedSource<<bf1f3b156e29c081684a9bada7e81a4b>>
8
8
  */
9
9
 
10
10
  /**
@@ -138,6 +138,9 @@ class JReactNativeFeatureFlagsCxxInterop
138
138
  static bool enableModuleArgumentNSNullConversionIOS(
139
139
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
140
140
 
141
+ static bool enableMutationObserverByDefault(
142
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
143
+
141
144
  static bool enableNativeCSSParsing(
142
145
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
143
146
 
@@ -185,6 +185,12 @@ Pod::Spec.new do |s|
185
185
  sss.exclude_files = "react/renderer/observers/intersection/tests"
186
186
  sss.header_dir = "react/renderer/observers/intersection"
187
187
  end
188
+
189
+ ss.subspec "mutation" do |sss|
190
+ sss.source_files = podspec_sources("react/renderer/observers/mutation/**/*.{m,mm,cpp,h}", "react/renderer/observers/mutation/**/*.h")
191
+ sss.exclude_files = "react/renderer/observers/mutation/tests"
192
+ sss.header_dir = "react/renderer/observers/mutation"
193
+ end
188
194
  end
189
195
 
190
196
  s.subspec "templateprocessor" do |ss|
@@ -14,14 +14,14 @@
14
14
 
15
15
  #define REACT_NATIVE_VERSION_MAJOR 0
16
16
  #define REACT_NATIVE_VERSION_MINOR 83
17
- #define REACT_NATIVE_VERSION_PATCH 7
17
+ #define REACT_NATIVE_VERSION_PATCH 9
18
18
 
19
19
  namespace facebook::react {
20
20
 
21
21
  constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 83;
24
- int32_t Patch = 7;
24
+ int32_t Patch = 9;
25
25
  std::string_view Prerelease = "";
26
26
  } ReactNativeVersion;
27
27
 
@@ -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<<9ceab23bb1cb8d569411222993ef9f1e>>
7
+ * @generated SignedSource<<c7d08e6d97766cbb68db8772611530b5>>
8
8
  */
9
9
 
10
10
  /**
@@ -170,6 +170,10 @@ bool ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS() {
170
170
  return getAccessor().enableModuleArgumentNSNullConversionIOS();
171
171
  }
172
172
 
173
+ bool ReactNativeFeatureFlags::enableMutationObserverByDefault() {
174
+ return getAccessor().enableMutationObserverByDefault();
175
+ }
176
+
173
177
  bool ReactNativeFeatureFlags::enableNativeCSSParsing() {
174
178
  return getAccessor().enableNativeCSSParsing();
175
179
  }
@@ -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<<26b7504c2446d37c6540609a620854cb>>
7
+ * @generated SignedSource<<f8bd95ee62cd377756a0ca08caf3027a>>
8
8
  */
9
9
 
10
10
  /**
@@ -219,6 +219,11 @@ class ReactNativeFeatureFlags {
219
219
  */
220
220
  RN_EXPORT static bool enableModuleArgumentNSNullConversionIOS();
221
221
 
222
+ /**
223
+ * Enables the MutationObserver Web API in React Native.
224
+ */
225
+ RN_EXPORT static bool enableMutationObserverByDefault();
226
+
222
227
  /**
223
228
  * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing
224
229
  */
@@ -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<<71a8a1e9b86beb41e91532bc07831dba>>
7
+ * @generated SignedSource<<9c1e88ee388502478c3c1625b22178aa>>
8
8
  */
9
9
 
10
10
  /**
@@ -677,6 +677,24 @@ bool ReactNativeFeatureFlagsAccessor::enableModuleArgumentNSNullConversionIOS()
677
677
  return flagValue.value();
678
678
  }
679
679
 
680
+ bool ReactNativeFeatureFlagsAccessor::enableMutationObserverByDefault() {
681
+ auto flagValue = enableMutationObserverByDefault_.load();
682
+
683
+ if (!flagValue.has_value()) {
684
+ // This block is not exclusive but it is not necessary.
685
+ // If multiple threads try to initialize the feature flag, we would only
686
+ // be accessing the provider multiple times but the end state of this
687
+ // instance and the returned flag value would be the same.
688
+
689
+ markFlagAsAccessed(36, "enableMutationObserverByDefault");
690
+
691
+ flagValue = currentProvider_->enableMutationObserverByDefault();
692
+ enableMutationObserverByDefault_ = flagValue;
693
+ }
694
+
695
+ return flagValue.value();
696
+ }
697
+
680
698
  bool ReactNativeFeatureFlagsAccessor::enableNativeCSSParsing() {
681
699
  auto flagValue = enableNativeCSSParsing_.load();
682
700
 
@@ -686,7 +704,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNativeCSSParsing() {
686
704
  // be accessing the provider multiple times but the end state of this
687
705
  // instance and the returned flag value would be the same.
688
706
 
689
- markFlagAsAccessed(36, "enableNativeCSSParsing");
707
+ markFlagAsAccessed(37, "enableNativeCSSParsing");
690
708
 
691
709
  flagValue = currentProvider_->enableNativeCSSParsing();
692
710
  enableNativeCSSParsing_ = flagValue;
@@ -704,7 +722,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNetworkEventReporting() {
704
722
  // be accessing the provider multiple times but the end state of this
705
723
  // instance and the returned flag value would be the same.
706
724
 
707
- markFlagAsAccessed(37, "enableNetworkEventReporting");
725
+ markFlagAsAccessed(38, "enableNetworkEventReporting");
708
726
 
709
727
  flagValue = currentProvider_->enableNetworkEventReporting();
710
728
  enableNetworkEventReporting_ = flagValue;
@@ -722,7 +740,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePreparedTextLayout() {
722
740
  // be accessing the provider multiple times but the end state of this
723
741
  // instance and the returned flag value would be the same.
724
742
 
725
- markFlagAsAccessed(38, "enablePreparedTextLayout");
743
+ markFlagAsAccessed(39, "enablePreparedTextLayout");
726
744
 
727
745
  flagValue = currentProvider_->enablePreparedTextLayout();
728
746
  enablePreparedTextLayout_ = flagValue;
@@ -740,7 +758,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePropsUpdateReconciliationAndroid() {
740
758
  // be accessing the provider multiple times but the end state of this
741
759
  // instance and the returned flag value would be the same.
742
760
 
743
- markFlagAsAccessed(39, "enablePropsUpdateReconciliationAndroid");
761
+ markFlagAsAccessed(40, "enablePropsUpdateReconciliationAndroid");
744
762
 
745
763
  flagValue = currentProvider_->enablePropsUpdateReconciliationAndroid();
746
764
  enablePropsUpdateReconciliationAndroid_ = flagValue;
@@ -758,7 +776,7 @@ bool ReactNativeFeatureFlagsAccessor::enableResourceTimingAPI() {
758
776
  // be accessing the provider multiple times but the end state of this
759
777
  // instance and the returned flag value would be the same.
760
778
 
761
- markFlagAsAccessed(40, "enableResourceTimingAPI");
779
+ markFlagAsAccessed(41, "enableResourceTimingAPI");
762
780
 
763
781
  flagValue = currentProvider_->enableResourceTimingAPI();
764
782
  enableResourceTimingAPI_ = flagValue;
@@ -776,7 +794,7 @@ bool ReactNativeFeatureFlagsAccessor::enableSwiftUIBasedFilters() {
776
794
  // be accessing the provider multiple times but the end state of this
777
795
  // instance and the returned flag value would be the same.
778
796
 
779
- markFlagAsAccessed(41, "enableSwiftUIBasedFilters");
797
+ markFlagAsAccessed(42, "enableSwiftUIBasedFilters");
780
798
 
781
799
  flagValue = currentProvider_->enableSwiftUIBasedFilters();
782
800
  enableSwiftUIBasedFilters_ = flagValue;
@@ -794,7 +812,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewCulling() {
794
812
  // be accessing the provider multiple times but the end state of this
795
813
  // instance and the returned flag value would be the same.
796
814
 
797
- markFlagAsAccessed(42, "enableViewCulling");
815
+ markFlagAsAccessed(43, "enableViewCulling");
798
816
 
799
817
  flagValue = currentProvider_->enableViewCulling();
800
818
  enableViewCulling_ = flagValue;
@@ -812,7 +830,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecycling() {
812
830
  // be accessing the provider multiple times but the end state of this
813
831
  // instance and the returned flag value would be the same.
814
832
 
815
- markFlagAsAccessed(43, "enableViewRecycling");
833
+ markFlagAsAccessed(44, "enableViewRecycling");
816
834
 
817
835
  flagValue = currentProvider_->enableViewRecycling();
818
836
  enableViewRecycling_ = flagValue;
@@ -830,7 +848,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForImage() {
830
848
  // be accessing the provider multiple times but the end state of this
831
849
  // instance and the returned flag value would be the same.
832
850
 
833
- markFlagAsAccessed(44, "enableViewRecyclingForImage");
851
+ markFlagAsAccessed(45, "enableViewRecyclingForImage");
834
852
 
835
853
  flagValue = currentProvider_->enableViewRecyclingForImage();
836
854
  enableViewRecyclingForImage_ = flagValue;
@@ -848,7 +866,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForScrollView() {
848
866
  // be accessing the provider multiple times but the end state of this
849
867
  // instance and the returned flag value would be the same.
850
868
 
851
- markFlagAsAccessed(45, "enableViewRecyclingForScrollView");
869
+ markFlagAsAccessed(46, "enableViewRecyclingForScrollView");
852
870
 
853
871
  flagValue = currentProvider_->enableViewRecyclingForScrollView();
854
872
  enableViewRecyclingForScrollView_ = flagValue;
@@ -866,7 +884,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForText() {
866
884
  // be accessing the provider multiple times but the end state of this
867
885
  // instance and the returned flag value would be the same.
868
886
 
869
- markFlagAsAccessed(46, "enableViewRecyclingForText");
887
+ markFlagAsAccessed(47, "enableViewRecyclingForText");
870
888
 
871
889
  flagValue = currentProvider_->enableViewRecyclingForText();
872
890
  enableViewRecyclingForText_ = flagValue;
@@ -884,7 +902,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForView() {
884
902
  // be accessing the provider multiple times but the end state of this
885
903
  // instance and the returned flag value would be the same.
886
904
 
887
- markFlagAsAccessed(47, "enableViewRecyclingForView");
905
+ markFlagAsAccessed(48, "enableViewRecyclingForView");
888
906
 
889
907
  flagValue = currentProvider_->enableViewRecyclingForView();
890
908
  enableViewRecyclingForView_ = flagValue;
@@ -902,7 +920,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewClippingWithoutScrollView
902
920
  // be accessing the provider multiple times but the end state of this
903
921
  // instance and the returned flag value would be the same.
904
922
 
905
- markFlagAsAccessed(48, "enableVirtualViewClippingWithoutScrollViewClipping");
923
+ markFlagAsAccessed(49, "enableVirtualViewClippingWithoutScrollViewClipping");
906
924
 
907
925
  flagValue = currentProvider_->enableVirtualViewClippingWithoutScrollViewClipping();
908
926
  enableVirtualViewClippingWithoutScrollViewClipping_ = flagValue;
@@ -920,7 +938,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewContainerStateExperimenta
920
938
  // be accessing the provider multiple times but the end state of this
921
939
  // instance and the returned flag value would be the same.
922
940
 
923
- markFlagAsAccessed(49, "enableVirtualViewContainerStateExperimental");
941
+ markFlagAsAccessed(50, "enableVirtualViewContainerStateExperimental");
924
942
 
925
943
  flagValue = currentProvider_->enableVirtualViewContainerStateExperimental();
926
944
  enableVirtualViewContainerStateExperimental_ = flagValue;
@@ -938,7 +956,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewDebugFeatures() {
938
956
  // be accessing the provider multiple times but the end state of this
939
957
  // instance and the returned flag value would be the same.
940
958
 
941
- markFlagAsAccessed(50, "enableVirtualViewDebugFeatures");
959
+ markFlagAsAccessed(51, "enableVirtualViewDebugFeatures");
942
960
 
943
961
  flagValue = currentProvider_->enableVirtualViewDebugFeatures();
944
962
  enableVirtualViewDebugFeatures_ = flagValue;
@@ -956,7 +974,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewRenderState() {
956
974
  // be accessing the provider multiple times but the end state of this
957
975
  // instance and the returned flag value would be the same.
958
976
 
959
- markFlagAsAccessed(51, "enableVirtualViewRenderState");
977
+ markFlagAsAccessed(52, "enableVirtualViewRenderState");
960
978
 
961
979
  flagValue = currentProvider_->enableVirtualViewRenderState();
962
980
  enableVirtualViewRenderState_ = flagValue;
@@ -974,7 +992,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewWindowFocusDetection() {
974
992
  // be accessing the provider multiple times but the end state of this
975
993
  // instance and the returned flag value would be the same.
976
994
 
977
- markFlagAsAccessed(52, "enableVirtualViewWindowFocusDetection");
995
+ markFlagAsAccessed(53, "enableVirtualViewWindowFocusDetection");
978
996
 
979
997
  flagValue = currentProvider_->enableVirtualViewWindowFocusDetection();
980
998
  enableVirtualViewWindowFocusDetection_ = flagValue;
@@ -992,7 +1010,7 @@ bool ReactNativeFeatureFlagsAccessor::enableWebPerformanceAPIsByDefault() {
992
1010
  // be accessing the provider multiple times but the end state of this
993
1011
  // instance and the returned flag value would be the same.
994
1012
 
995
- markFlagAsAccessed(53, "enableWebPerformanceAPIsByDefault");
1013
+ markFlagAsAccessed(54, "enableWebPerformanceAPIsByDefault");
996
1014
 
997
1015
  flagValue = currentProvider_->enableWebPerformanceAPIsByDefault();
998
1016
  enableWebPerformanceAPIsByDefault_ = flagValue;
@@ -1010,7 +1028,7 @@ bool ReactNativeFeatureFlagsAccessor::fixMappingOfEventPrioritiesBetweenFabricAn
1010
1028
  // be accessing the provider multiple times but the end state of this
1011
1029
  // instance and the returned flag value would be the same.
1012
1030
 
1013
- markFlagAsAccessed(54, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
1031
+ markFlagAsAccessed(55, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
1014
1032
 
1015
1033
  flagValue = currentProvider_->fixMappingOfEventPrioritiesBetweenFabricAndReact();
1016
1034
  fixMappingOfEventPrioritiesBetweenFabricAndReact_ = flagValue;
@@ -1028,7 +1046,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxAssertSingleHostState() {
1028
1046
  // be accessing the provider multiple times but the end state of this
1029
1047
  // instance and the returned flag value would be the same.
1030
1048
 
1031
- markFlagAsAccessed(55, "fuseboxAssertSingleHostState");
1049
+ markFlagAsAccessed(56, "fuseboxAssertSingleHostState");
1032
1050
 
1033
1051
  flagValue = currentProvider_->fuseboxAssertSingleHostState();
1034
1052
  fuseboxAssertSingleHostState_ = flagValue;
@@ -1046,7 +1064,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxEnabledRelease() {
1046
1064
  // be accessing the provider multiple times but the end state of this
1047
1065
  // instance and the returned flag value would be the same.
1048
1066
 
1049
- markFlagAsAccessed(56, "fuseboxEnabledRelease");
1067
+ markFlagAsAccessed(57, "fuseboxEnabledRelease");
1050
1068
 
1051
1069
  flagValue = currentProvider_->fuseboxEnabledRelease();
1052
1070
  fuseboxEnabledRelease_ = flagValue;
@@ -1064,7 +1082,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxFrameRecordingEnabled() {
1064
1082
  // be accessing the provider multiple times but the end state of this
1065
1083
  // instance and the returned flag value would be the same.
1066
1084
 
1067
- markFlagAsAccessed(57, "fuseboxFrameRecordingEnabled");
1085
+ markFlagAsAccessed(58, "fuseboxFrameRecordingEnabled");
1068
1086
 
1069
1087
  flagValue = currentProvider_->fuseboxFrameRecordingEnabled();
1070
1088
  fuseboxFrameRecordingEnabled_ = flagValue;
@@ -1082,7 +1100,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxNetworkInspectionEnabled() {
1082
1100
  // be accessing the provider multiple times but the end state of this
1083
1101
  // instance and the returned flag value would be the same.
1084
1102
 
1085
- markFlagAsAccessed(58, "fuseboxNetworkInspectionEnabled");
1103
+ markFlagAsAccessed(59, "fuseboxNetworkInspectionEnabled");
1086
1104
 
1087
1105
  flagValue = currentProvider_->fuseboxNetworkInspectionEnabled();
1088
1106
  fuseboxNetworkInspectionEnabled_ = flagValue;
@@ -1100,7 +1118,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxScreenshotCaptureEnabled() {
1100
1118
  // be accessing the provider multiple times but the end state of this
1101
1119
  // instance and the returned flag value would be the same.
1102
1120
 
1103
- markFlagAsAccessed(59, "fuseboxScreenshotCaptureEnabled");
1121
+ markFlagAsAccessed(60, "fuseboxScreenshotCaptureEnabled");
1104
1122
 
1105
1123
  flagValue = currentProvider_->fuseboxScreenshotCaptureEnabled();
1106
1124
  fuseboxScreenshotCaptureEnabled_ = flagValue;
@@ -1118,7 +1136,7 @@ bool ReactNativeFeatureFlagsAccessor::hideOffscreenVirtualViewsOnIOS() {
1118
1136
  // be accessing the provider multiple times but the end state of this
1119
1137
  // instance and the returned flag value would be the same.
1120
1138
 
1121
- markFlagAsAccessed(60, "hideOffscreenVirtualViewsOnIOS");
1139
+ markFlagAsAccessed(61, "hideOffscreenVirtualViewsOnIOS");
1122
1140
 
1123
1141
  flagValue = currentProvider_->hideOffscreenVirtualViewsOnIOS();
1124
1142
  hideOffscreenVirtualViewsOnIOS_ = flagValue;
@@ -1136,7 +1154,7 @@ bool ReactNativeFeatureFlagsAccessor::overrideBySynchronousMountPropsAtMountingA
1136
1154
  // be accessing the provider multiple times but the end state of this
1137
1155
  // instance and the returned flag value would be the same.
1138
1156
 
1139
- markFlagAsAccessed(61, "overrideBySynchronousMountPropsAtMountingAndroid");
1157
+ markFlagAsAccessed(62, "overrideBySynchronousMountPropsAtMountingAndroid");
1140
1158
 
1141
1159
  flagValue = currentProvider_->overrideBySynchronousMountPropsAtMountingAndroid();
1142
1160
  overrideBySynchronousMountPropsAtMountingAndroid_ = flagValue;
@@ -1154,7 +1172,7 @@ bool ReactNativeFeatureFlagsAccessor::perfIssuesEnabled() {
1154
1172
  // be accessing the provider multiple times but the end state of this
1155
1173
  // instance and the returned flag value would be the same.
1156
1174
 
1157
- markFlagAsAccessed(62, "perfIssuesEnabled");
1175
+ markFlagAsAccessed(63, "perfIssuesEnabled");
1158
1176
 
1159
1177
  flagValue = currentProvider_->perfIssuesEnabled();
1160
1178
  perfIssuesEnabled_ = flagValue;
@@ -1172,7 +1190,7 @@ bool ReactNativeFeatureFlagsAccessor::perfMonitorV2Enabled() {
1172
1190
  // be accessing the provider multiple times but the end state of this
1173
1191
  // instance and the returned flag value would be the same.
1174
1192
 
1175
- markFlagAsAccessed(63, "perfMonitorV2Enabled");
1193
+ markFlagAsAccessed(64, "perfMonitorV2Enabled");
1176
1194
 
1177
1195
  flagValue = currentProvider_->perfMonitorV2Enabled();
1178
1196
  perfMonitorV2Enabled_ = flagValue;
@@ -1190,7 +1208,7 @@ double ReactNativeFeatureFlagsAccessor::preparedTextCacheSize() {
1190
1208
  // be accessing the provider multiple times but the end state of this
1191
1209
  // instance and the returned flag value would be the same.
1192
1210
 
1193
- markFlagAsAccessed(64, "preparedTextCacheSize");
1211
+ markFlagAsAccessed(65, "preparedTextCacheSize");
1194
1212
 
1195
1213
  flagValue = currentProvider_->preparedTextCacheSize();
1196
1214
  preparedTextCacheSize_ = flagValue;
@@ -1208,7 +1226,7 @@ bool ReactNativeFeatureFlagsAccessor::preventShadowTreeCommitExhaustion() {
1208
1226
  // be accessing the provider multiple times but the end state of this
1209
1227
  // instance and the returned flag value would be the same.
1210
1228
 
1211
- markFlagAsAccessed(65, "preventShadowTreeCommitExhaustion");
1229
+ markFlagAsAccessed(66, "preventShadowTreeCommitExhaustion");
1212
1230
 
1213
1231
  flagValue = currentProvider_->preventShadowTreeCommitExhaustion();
1214
1232
  preventShadowTreeCommitExhaustion_ = flagValue;
@@ -1226,7 +1244,7 @@ bool ReactNativeFeatureFlagsAccessor::redBoxV2Android() {
1226
1244
  // be accessing the provider multiple times but the end state of this
1227
1245
  // instance and the returned flag value would be the same.
1228
1246
 
1229
- markFlagAsAccessed(66, "redBoxV2Android");
1247
+ markFlagAsAccessed(67, "redBoxV2Android");
1230
1248
 
1231
1249
  flagValue = currentProvider_->redBoxV2Android();
1232
1250
  redBoxV2Android_ = flagValue;
@@ -1244,7 +1262,7 @@ bool ReactNativeFeatureFlagsAccessor::redBoxV2IOS() {
1244
1262
  // be accessing the provider multiple times but the end state of this
1245
1263
  // instance and the returned flag value would be the same.
1246
1264
 
1247
- markFlagAsAccessed(67, "redBoxV2IOS");
1265
+ markFlagAsAccessed(68, "redBoxV2IOS");
1248
1266
 
1249
1267
  flagValue = currentProvider_->redBoxV2IOS();
1250
1268
  redBoxV2IOS_ = flagValue;
@@ -1262,7 +1280,7 @@ bool ReactNativeFeatureFlagsAccessor::shouldPressibilityUseW3CPointerEventsForHo
1262
1280
  // be accessing the provider multiple times but the end state of this
1263
1281
  // instance and the returned flag value would be the same.
1264
1282
 
1265
- markFlagAsAccessed(68, "shouldPressibilityUseW3CPointerEventsForHover");
1283
+ markFlagAsAccessed(69, "shouldPressibilityUseW3CPointerEventsForHover");
1266
1284
 
1267
1285
  flagValue = currentProvider_->shouldPressibilityUseW3CPointerEventsForHover();
1268
1286
  shouldPressibilityUseW3CPointerEventsForHover_ = flagValue;
@@ -1280,7 +1298,7 @@ bool ReactNativeFeatureFlagsAccessor::shouldTriggerResponderTransferOnScrollAndr
1280
1298
  // be accessing the provider multiple times but the end state of this
1281
1299
  // instance and the returned flag value would be the same.
1282
1300
 
1283
- markFlagAsAccessed(69, "shouldTriggerResponderTransferOnScrollAndroid");
1301
+ markFlagAsAccessed(70, "shouldTriggerResponderTransferOnScrollAndroid");
1284
1302
 
1285
1303
  flagValue = currentProvider_->shouldTriggerResponderTransferOnScrollAndroid();
1286
1304
  shouldTriggerResponderTransferOnScrollAndroid_ = flagValue;
@@ -1298,7 +1316,7 @@ bool ReactNativeFeatureFlagsAccessor::skipActivityIdentityAssertionOnHostPause()
1298
1316
  // be accessing the provider multiple times but the end state of this
1299
1317
  // instance and the returned flag value would be the same.
1300
1318
 
1301
- markFlagAsAccessed(70, "skipActivityIdentityAssertionOnHostPause");
1319
+ markFlagAsAccessed(71, "skipActivityIdentityAssertionOnHostPause");
1302
1320
 
1303
1321
  flagValue = currentProvider_->skipActivityIdentityAssertionOnHostPause();
1304
1322
  skipActivityIdentityAssertionOnHostPause_ = flagValue;
@@ -1316,7 +1334,7 @@ bool ReactNativeFeatureFlagsAccessor::sweepActiveTouchOnChildNativeGesturesAndro
1316
1334
  // be accessing the provider multiple times but the end state of this
1317
1335
  // instance and the returned flag value would be the same.
1318
1336
 
1319
- markFlagAsAccessed(71, "sweepActiveTouchOnChildNativeGesturesAndroid");
1337
+ markFlagAsAccessed(72, "sweepActiveTouchOnChildNativeGesturesAndroid");
1320
1338
 
1321
1339
  flagValue = currentProvider_->sweepActiveTouchOnChildNativeGesturesAndroid();
1322
1340
  sweepActiveTouchOnChildNativeGesturesAndroid_ = flagValue;
@@ -1334,7 +1352,7 @@ bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid
1334
1352
  // be accessing the provider multiple times but the end state of this
1335
1353
  // instance and the returned flag value would be the same.
1336
1354
 
1337
- markFlagAsAccessed(72, "traceTurboModulePromiseRejectionsOnAndroid");
1355
+ markFlagAsAccessed(73, "traceTurboModulePromiseRejectionsOnAndroid");
1338
1356
 
1339
1357
  flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid();
1340
1358
  traceTurboModulePromiseRejectionsOnAndroid_ = flagValue;
@@ -1352,7 +1370,7 @@ bool ReactNativeFeatureFlagsAccessor::updateRuntimeShadowNodeReferencesOnCommit(
1352
1370
  // be accessing the provider multiple times but the end state of this
1353
1371
  // instance and the returned flag value would be the same.
1354
1372
 
1355
- markFlagAsAccessed(73, "updateRuntimeShadowNodeReferencesOnCommit");
1373
+ markFlagAsAccessed(74, "updateRuntimeShadowNodeReferencesOnCommit");
1356
1374
 
1357
1375
  flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommit();
1358
1376
  updateRuntimeShadowNodeReferencesOnCommit_ = flagValue;
@@ -1370,7 +1388,7 @@ bool ReactNativeFeatureFlagsAccessor::useAlwaysAvailableJSErrorHandling() {
1370
1388
  // be accessing the provider multiple times but the end state of this
1371
1389
  // instance and the returned flag value would be the same.
1372
1390
 
1373
- markFlagAsAccessed(74, "useAlwaysAvailableJSErrorHandling");
1391
+ markFlagAsAccessed(75, "useAlwaysAvailableJSErrorHandling");
1374
1392
 
1375
1393
  flagValue = currentProvider_->useAlwaysAvailableJSErrorHandling();
1376
1394
  useAlwaysAvailableJSErrorHandling_ = flagValue;
@@ -1388,7 +1406,7 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() {
1388
1406
  // be accessing the provider multiple times but the end state of this
1389
1407
  // instance and the returned flag value would be the same.
1390
1408
 
1391
- markFlagAsAccessed(75, "useFabricInterop");
1409
+ markFlagAsAccessed(76, "useFabricInterop");
1392
1410
 
1393
1411
  flagValue = currentProvider_->useFabricInterop();
1394
1412
  useFabricInterop_ = flagValue;
@@ -1406,7 +1424,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeEqualsInNativeReadableArrayAndroi
1406
1424
  // be accessing the provider multiple times but the end state of this
1407
1425
  // instance and the returned flag value would be the same.
1408
1426
 
1409
- markFlagAsAccessed(76, "useNativeEqualsInNativeReadableArrayAndroid");
1427
+ markFlagAsAccessed(77, "useNativeEqualsInNativeReadableArrayAndroid");
1410
1428
 
1411
1429
  flagValue = currentProvider_->useNativeEqualsInNativeReadableArrayAndroid();
1412
1430
  useNativeEqualsInNativeReadableArrayAndroid_ = flagValue;
@@ -1424,7 +1442,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeTransformHelperAndroid() {
1424
1442
  // be accessing the provider multiple times but the end state of this
1425
1443
  // instance and the returned flag value would be the same.
1426
1444
 
1427
- markFlagAsAccessed(77, "useNativeTransformHelperAndroid");
1445
+ markFlagAsAccessed(78, "useNativeTransformHelperAndroid");
1428
1446
 
1429
1447
  flagValue = currentProvider_->useNativeTransformHelperAndroid();
1430
1448
  useNativeTransformHelperAndroid_ = flagValue;
@@ -1442,7 +1460,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() {
1442
1460
  // be accessing the provider multiple times but the end state of this
1443
1461
  // instance and the returned flag value would be the same.
1444
1462
 
1445
- markFlagAsAccessed(78, "useNativeViewConfigsInBridgelessMode");
1463
+ markFlagAsAccessed(79, "useNativeViewConfigsInBridgelessMode");
1446
1464
 
1447
1465
  flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
1448
1466
  useNativeViewConfigsInBridgelessMode_ = flagValue;
@@ -1460,7 +1478,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimizedEventBatchingOnAndroid() {
1460
1478
  // be accessing the provider multiple times but the end state of this
1461
1479
  // instance and the returned flag value would be the same.
1462
1480
 
1463
- markFlagAsAccessed(79, "useOptimizedEventBatchingOnAndroid");
1481
+ markFlagAsAccessed(80, "useOptimizedEventBatchingOnAndroid");
1464
1482
 
1465
1483
  flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid();
1466
1484
  useOptimizedEventBatchingOnAndroid_ = flagValue;
@@ -1478,7 +1496,7 @@ bool ReactNativeFeatureFlagsAccessor::useRawPropsJsiValue() {
1478
1496
  // be accessing the provider multiple times but the end state of this
1479
1497
  // instance and the returned flag value would be the same.
1480
1498
 
1481
- markFlagAsAccessed(80, "useRawPropsJsiValue");
1499
+ markFlagAsAccessed(81, "useRawPropsJsiValue");
1482
1500
 
1483
1501
  flagValue = currentProvider_->useRawPropsJsiValue();
1484
1502
  useRawPropsJsiValue_ = flagValue;
@@ -1496,7 +1514,7 @@ bool ReactNativeFeatureFlagsAccessor::useShadowNodeStateOnClone() {
1496
1514
  // be accessing the provider multiple times but the end state of this
1497
1515
  // instance and the returned flag value would be the same.
1498
1516
 
1499
- markFlagAsAccessed(81, "useShadowNodeStateOnClone");
1517
+ markFlagAsAccessed(82, "useShadowNodeStateOnClone");
1500
1518
 
1501
1519
  flagValue = currentProvider_->useShadowNodeStateOnClone();
1502
1520
  useShadowNodeStateOnClone_ = flagValue;
@@ -1514,7 +1532,7 @@ bool ReactNativeFeatureFlagsAccessor::useSharedAnimatedBackend() {
1514
1532
  // be accessing the provider multiple times but the end state of this
1515
1533
  // instance and the returned flag value would be the same.
1516
1534
 
1517
- markFlagAsAccessed(82, "useSharedAnimatedBackend");
1535
+ markFlagAsAccessed(83, "useSharedAnimatedBackend");
1518
1536
 
1519
1537
  flagValue = currentProvider_->useSharedAnimatedBackend();
1520
1538
  useSharedAnimatedBackend_ = flagValue;
@@ -1532,7 +1550,7 @@ bool ReactNativeFeatureFlagsAccessor::useTraitHiddenOnAndroid() {
1532
1550
  // be accessing the provider multiple times but the end state of this
1533
1551
  // instance and the returned flag value would be the same.
1534
1552
 
1535
- markFlagAsAccessed(83, "useTraitHiddenOnAndroid");
1553
+ markFlagAsAccessed(84, "useTraitHiddenOnAndroid");
1536
1554
 
1537
1555
  flagValue = currentProvider_->useTraitHiddenOnAndroid();
1538
1556
  useTraitHiddenOnAndroid_ = flagValue;
@@ -1550,7 +1568,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() {
1550
1568
  // be accessing the provider multiple times but the end state of this
1551
1569
  // instance and the returned flag value would be the same.
1552
1570
 
1553
- markFlagAsAccessed(84, "useTurboModuleInterop");
1571
+ markFlagAsAccessed(85, "useTurboModuleInterop");
1554
1572
 
1555
1573
  flagValue = currentProvider_->useTurboModuleInterop();
1556
1574
  useTurboModuleInterop_ = flagValue;
@@ -1568,7 +1586,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() {
1568
1586
  // be accessing the provider multiple times but the end state of this
1569
1587
  // instance and the returned flag value would be the same.
1570
1588
 
1571
- markFlagAsAccessed(85, "useTurboModules");
1589
+ markFlagAsAccessed(86, "useTurboModules");
1572
1590
 
1573
1591
  flagValue = currentProvider_->useTurboModules();
1574
1592
  useTurboModules_ = flagValue;
@@ -1586,7 +1604,7 @@ double ReactNativeFeatureFlagsAccessor::viewCullingOutsetRatio() {
1586
1604
  // be accessing the provider multiple times but the end state of this
1587
1605
  // instance and the returned flag value would be the same.
1588
1606
 
1589
- markFlagAsAccessed(86, "viewCullingOutsetRatio");
1607
+ markFlagAsAccessed(87, "viewCullingOutsetRatio");
1590
1608
 
1591
1609
  flagValue = currentProvider_->viewCullingOutsetRatio();
1592
1610
  viewCullingOutsetRatio_ = flagValue;
@@ -1604,7 +1622,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewHysteresisRatio() {
1604
1622
  // be accessing the provider multiple times but the end state of this
1605
1623
  // instance and the returned flag value would be the same.
1606
1624
 
1607
- markFlagAsAccessed(87, "virtualViewHysteresisRatio");
1625
+ markFlagAsAccessed(88, "virtualViewHysteresisRatio");
1608
1626
 
1609
1627
  flagValue = currentProvider_->virtualViewHysteresisRatio();
1610
1628
  virtualViewHysteresisRatio_ = flagValue;
@@ -1622,7 +1640,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() {
1622
1640
  // be accessing the provider multiple times but the end state of this
1623
1641
  // instance and the returned flag value would be the same.
1624
1642
 
1625
- markFlagAsAccessed(88, "virtualViewPrerenderRatio");
1643
+ markFlagAsAccessed(89, "virtualViewPrerenderRatio");
1626
1644
 
1627
1645
  flagValue = currentProvider_->virtualViewPrerenderRatio();
1628
1646
  virtualViewPrerenderRatio_ = flagValue;
@@ -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<<7286fc61200f969c22910f37180ad481>>
7
+ * @generated SignedSource<<0b86f6df8b7e838d699980a9211c72df>>
8
8
  */
9
9
 
10
10
  /**
@@ -68,6 +68,7 @@ class ReactNativeFeatureFlagsAccessor {
68
68
  bool enableLayoutAnimationsOnIOS();
69
69
  bool enableMainQueueCoordinatorOnIOS();
70
70
  bool enableModuleArgumentNSNullConversionIOS();
71
+ bool enableMutationObserverByDefault();
71
72
  bool enableNativeCSSParsing();
72
73
  bool enableNetworkEventReporting();
73
74
  bool enablePreparedTextLayout();
@@ -132,7 +133,7 @@ class ReactNativeFeatureFlagsAccessor {
132
133
  std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
133
134
  bool wasOverridden_;
134
135
 
135
- std::array<std::atomic<const char*>, 89> accessedFeatureFlags_;
136
+ std::array<std::atomic<const char*>, 90> accessedFeatureFlags_;
136
137
 
137
138
  std::atomic<std::optional<bool>> commonTestFlag_;
138
139
  std::atomic<std::optional<bool>> cdpInteractionMetricsEnabled_;
@@ -170,6 +171,7 @@ class ReactNativeFeatureFlagsAccessor {
170
171
  std::atomic<std::optional<bool>> enableLayoutAnimationsOnIOS_;
171
172
  std::atomic<std::optional<bool>> enableMainQueueCoordinatorOnIOS_;
172
173
  std::atomic<std::optional<bool>> enableModuleArgumentNSNullConversionIOS_;
174
+ std::atomic<std::optional<bool>> enableMutationObserverByDefault_;
173
175
  std::atomic<std::optional<bool>> enableNativeCSSParsing_;
174
176
  std::atomic<std::optional<bool>> enableNetworkEventReporting_;
175
177
  std::atomic<std::optional<bool>> enablePreparedTextLayout_;
@@ -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<<0118a824a779b337399cb008d2c40af2>>
7
+ * @generated SignedSource<<97d5c101032335f047a9a9bb06dab093>>
8
8
  */
9
9
 
10
10
  /**
@@ -171,6 +171,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
171
171
  return false;
172
172
  }
173
173
 
174
+ bool enableMutationObserverByDefault() override {
175
+ return false;
176
+ }
177
+
174
178
  bool enableNativeCSSParsing() override {
175
179
  return false;
176
180
  }
@@ -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<<1434eae86af219c2c989aade2e59968d>>
7
+ * @generated SignedSource<<bb24ce8764d7c7049e3fd211dcd70510>>
8
8
  */
9
9
 
10
10
  /**
@@ -369,6 +369,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
369
369
  return ReactNativeFeatureFlagsDefaults::enableModuleArgumentNSNullConversionIOS();
370
370
  }
371
371
 
372
+ bool enableMutationObserverByDefault() override {
373
+ auto value = values_["enableMutationObserverByDefault"];
374
+ if (!value.isNull()) {
375
+ return value.getBool();
376
+ }
377
+
378
+ return ReactNativeFeatureFlagsDefaults::enableMutationObserverByDefault();
379
+ }
380
+
372
381
  bool enableNativeCSSParsing() override {
373
382
  auto value = values_["enableNativeCSSParsing"];
374
383
  if (!value.isNull()) {
@@ -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<<990b3d661a81316160046f01bba5e683>>
7
+ * @generated SignedSource<<75595b7640dd5849fcd3c40a965582fe>>
8
8
  */
9
9
 
10
10
  /**
@@ -61,6 +61,7 @@ class ReactNativeFeatureFlagsProvider {
61
61
  virtual bool enableLayoutAnimationsOnIOS() = 0;
62
62
  virtual bool enableMainQueueCoordinatorOnIOS() = 0;
63
63
  virtual bool enableModuleArgumentNSNullConversionIOS() = 0;
64
+ virtual bool enableMutationObserverByDefault() = 0;
64
65
  virtual bool enableNativeCSSParsing() = 0;
65
66
  virtual bool enableNetworkEventReporting() = 0;
66
67
  virtual bool enablePreparedTextLayout() = 0;
@@ -22,6 +22,7 @@ target_link_libraries(react_nativemodule_defaults
22
22
  react_nativemodule_microtasks
23
23
  react_nativemodule_idlecallbacks
24
24
  react_nativemodule_intersectionobserver
25
+ react_nativemodule_mutationobserver
25
26
  react_nativemodule_webperformance
26
27
  )
27
28
  target_compile_reactnative_options(react_nativemodule_defaults PRIVATE)
@@ -12,6 +12,7 @@
12
12
  #include <react/nativemodule/idlecallbacks/NativeIdleCallbacks.h>
13
13
  #include <react/nativemodule/intersectionobserver/NativeIntersectionObserver.h>
14
14
  #include <react/nativemodule/microtasks/NativeMicrotasks.h>
15
+ #include <react/nativemodule/mutationobserver/NativeMutationObserver.h>
15
16
  #include <react/nativemodule/webperformance/NativePerformance.h>
16
17
 
17
18
  #ifdef REACT_NATIVE_DEBUGGER_ENABLED_DEVONLY
@@ -51,6 +52,12 @@ namespace facebook::react {
51
52
  }
52
53
  }
53
54
 
55
+ if (ReactNativeFeatureFlags::enableMutationObserverByDefault()) {
56
+ if (name == NativeMutationObserver::kModuleName) {
57
+ return std::make_shared<NativeMutationObserver>(jsInvoker);
58
+ }
59
+ }
60
+
54
61
  #ifdef REACT_NATIVE_DEBUGGER_ENABLED_DEVONLY
55
62
  if (name == DevToolsRuntimeSettingsModule::kModuleName) {
56
63
  return std::make_shared<DevToolsRuntimeSettingsModule>(jsInvoker);
@@ -53,6 +53,7 @@ Pod::Spec.new do |s|
53
53
  s.dependency "React-microtasksnativemodule"
54
54
  s.dependency "React-idlecallbacksnativemodule"
55
55
  s.dependency "React-intersectionobservernativemodule"
56
+ s.dependency "React-mutationobservernativemodule"
56
57
  s.dependency "React-webperformancenativemodule"
57
58
  add_dependency(s, "React-RCTFBReactNativeSpec")
58
59
  add_dependency(s, "React-featureflags")
@@ -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<<1e23ab5dd844fae335eb7bfc2953794a>>
7
+ * @generated SignedSource<<d4e9743710d91c1287986f2dab260e10>>
8
8
  */
9
9
 
10
10
  /**
@@ -224,6 +224,11 @@ bool NativeReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS(
224
224
  return ReactNativeFeatureFlags::enableModuleArgumentNSNullConversionIOS();
225
225
  }
226
226
 
227
+ bool NativeReactNativeFeatureFlags::enableMutationObserverByDefault(
228
+ jsi::Runtime& /*runtime*/) {
229
+ return ReactNativeFeatureFlags::enableMutationObserverByDefault();
230
+ }
231
+
227
232
  bool NativeReactNativeFeatureFlags::enableNativeCSSParsing(
228
233
  jsi::Runtime& /*runtime*/) {
229
234
  return ReactNativeFeatureFlags::enableNativeCSSParsing();
@@ -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<<6d3c44622ffc5392e446a19ce48b1e61>>
7
+ * @generated SignedSource<<1b5ca84f5d82d6861379191ed93d8b63>>
8
8
  */
9
9
 
10
10
  /**
@@ -108,6 +108,8 @@ class NativeReactNativeFeatureFlags
108
108
 
109
109
  bool enableModuleArgumentNSNullConversionIOS(jsi::Runtime& runtime);
110
110
 
111
+ bool enableMutationObserverByDefault(jsi::Runtime& runtime);
112
+
111
113
  bool enableNativeCSSParsing(jsi::Runtime& runtime);
112
114
 
113
115
  bool enableNetworkEventReporting(jsi::Runtime& runtime);
@@ -7,7 +7,11 @@
7
7
 
8
8
  #pragma once
9
9
 
10
+ #if __has_include("FBReactNativeSpecJSI.h") // CocoaPod headers on Apple
11
+ #include "FBReactNativeSpecJSI.h"
12
+ #else
10
13
  #include <FBReactNativeSpec/FBReactNativeSpecJSI.h>
14
+ #endif
11
15
  #include <react/renderer/bridging/bridging.h>
12
16
  #include <react/renderer/observers/mutation/MutationObserverManager.h>
13
17
  #include <react/renderer/uimanager/UIManager.h>
@@ -0,0 +1,66 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ require "json"
7
+
8
+ package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "..", "package.json")))
9
+ version = package['version']
10
+
11
+ source = { :git => 'https://github.com/facebook/react-native.git' }
12
+ if version == '1000.0.0'
13
+ # This is an unpublished version, use the latest commit hash of the react-native repo, which we're presumably in.
14
+ source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
15
+ else
16
+ source[:tag] = "v#{version}"
17
+ end
18
+
19
+ header_search_paths = [
20
+ "\"$(PODS_ROOT)/Headers/Private/Yoga\"",
21
+ ]
22
+
23
+ if ENV['USE_FRAMEWORKS']
24
+ header_search_paths << "\"$(PODS_TARGET_SRCROOT)/../../..\"" # this is needed to allow the module access its own files
25
+ end
26
+
27
+ Pod::Spec.new do |s|
28
+ s.name = "React-mutationobservernativemodule"
29
+ s.version = version
30
+ s.summary = "React Native mutation observer native module"
31
+ s.homepage = "https://reactnative.dev/"
32
+ s.license = package["license"]
33
+ s.author = "Meta Platforms, Inc. and its affiliates"
34
+ s.platforms = min_supported_versions
35
+ s.source = source
36
+ s.source_files = podspec_sources("*.{cpp,h}", "*.h")
37
+ s.header_dir = "react/nativemodule/mutationobserver"
38
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
39
+ "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
40
+ "OTHER_CFLAGS" => "$(inherited)",
41
+ "DEFINES_MODULE" => "YES" }
42
+
43
+ if ENV['USE_FRAMEWORKS']
44
+ s.module_name = "mutationobservernativemodule"
45
+ s.header_mappings_dir = "../.."
46
+ end
47
+
48
+ s.dependency "Yoga"
49
+ s.dependency "React-jsi"
50
+ s.dependency "React-jsiexecutor"
51
+ s.dependency "React-cxxreact"
52
+
53
+ depend_on_js_engine(s)
54
+ add_rn_third_party_dependencies(s)
55
+ add_rncore_dependency(s)
56
+
57
+ s.dependency "ReactCommon/turbomodule/core"
58
+
59
+ s.dependency "React-Fabric"
60
+ s.dependency "React-Fabric/bridging"
61
+ s.dependency "React-Fabric/observers/mutation"
62
+ s.dependency "React-featureflags"
63
+ add_dependency(s, "React-RCTFBReactNativeSpec")
64
+ add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])
65
+
66
+ end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.83.7",
3
+ "version": "0.83.9",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -160,13 +160,13 @@
160
160
  },
161
161
  "dependencies": {
162
162
  "@jest/create-cache-key-function": "^29.7.0",
163
- "@react-native/assets-registry": "0.83.7",
164
- "@react-native/codegen": "0.83.7",
165
- "@react-native/community-cli-plugin": "0.83.7",
166
- "@react-native/gradle-plugin": "0.83.7",
167
- "@react-native/js-polyfills": "0.83.7",
168
- "@react-native/normalize-colors": "0.83.7",
169
- "@react-native/virtualized-lists": "0.83.7",
163
+ "@react-native/assets-registry": "0.83.9",
164
+ "@react-native/codegen": "0.83.9",
165
+ "@react-native/community-cli-plugin": "0.83.9",
166
+ "@react-native/gradle-plugin": "0.83.9",
167
+ "@react-native/js-polyfills": "0.83.9",
168
+ "@react-native/normalize-colors": "0.83.9",
169
+ "@react-native/virtualized-lists": "0.83.9",
170
170
  "abort-controller": "^3.0.0",
171
171
  "anser": "^1.4.9",
172
172
  "ansi-regex": "^5.0.0",
@@ -144,6 +144,7 @@ def use_react_native! (
144
144
  pod 'React-microtasksnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/microtasks"
145
145
  pod 'React-idlecallbacksnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/idlecallbacks"
146
146
  pod 'React-intersectionobservernativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/intersectionobserver"
147
+ pod 'React-mutationobservernativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/mutationobserver"
147
148
  pod 'React-webperformancenativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/webperformance"
148
149
  pod 'React-domnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/dom"
149
150
  pod 'React-defaultsnativemodule', :path => "#{prefix}/ReactCommon/react/nativemodule/defaults"
@@ -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<<67f332fc91b30e629da8919f82044079>>
7
+ * @generated SignedSource<<2731bfb1c14d92e24ccb3ba0976c102a>>
8
8
  * @flow strict
9
9
  * @noformat
10
10
  */
@@ -86,6 +86,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
86
86
  enableLayoutAnimationsOnIOS: Getter<boolean>,
87
87
  enableMainQueueCoordinatorOnIOS: Getter<boolean>,
88
88
  enableModuleArgumentNSNullConversionIOS: Getter<boolean>,
89
+ enableMutationObserverByDefault: Getter<boolean>,
89
90
  enableNativeCSSParsing: Getter<boolean>,
90
91
  enableNetworkEventReporting: Getter<boolean>,
91
92
  enablePreparedTextLayout: Getter<boolean>,
@@ -364,6 +365,10 @@ export const enableMainQueueCoordinatorOnIOS: Getter<boolean> = createNativeFlag
364
365
  * Enable NSNull conversion when handling module arguments on iOS
365
366
  */
366
367
  export const enableModuleArgumentNSNullConversionIOS: Getter<boolean> = createNativeFlagGetter('enableModuleArgumentNSNullConversionIOS', false);
368
+ /**
369
+ * Enables the MutationObserver Web API in React Native.
370
+ */
371
+ export const enableMutationObserverByDefault: Getter<boolean> = createNativeFlagGetter('enableMutationObserverByDefault', false);
367
372
  /**
368
373
  * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing
369
374
  */
@@ -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<<76ee0fb7c942f84965cece244a891d7f>>
7
+ * @generated SignedSource<<8ef0f9289aa8f259fd110b70a8fd2294>>
8
8
  * @flow strict
9
9
  * @noformat
10
10
  */
@@ -61,6 +61,7 @@ export interface Spec extends TurboModule {
61
61
  +enableLayoutAnimationsOnIOS?: () => boolean;
62
62
  +enableMainQueueCoordinatorOnIOS?: () => boolean;
63
63
  +enableModuleArgumentNSNullConversionIOS?: () => boolean;
64
+ +enableMutationObserverByDefault?: () => boolean;
64
65
  +enableNativeCSSParsing?: () => boolean;
65
66
  +enableNetworkEventReporting?: () => boolean;
66
67
  +enablePreparedTextLayout?: () => boolean;
@@ -47,4 +47,10 @@ export default function setUpDefaltReactNativeEnvironment(
47
47
  ) {
48
48
  require('./setUpIntersectionObserver').default();
49
49
  }
50
+
51
+ if (
52
+ require('../../../src/private/featureflags/ReactNativeFeatureFlags').enableMutationObserverByDefault()
53
+ ) {
54
+ require('./setUpMutationObserver').default();
55
+ }
50
56
  }