react-native 0.79.1 → 0.79.3

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 (49) hide show
  1. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +8 -0
  2. package/Libraries/Blob/URL.js +13 -1
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/React/Base/RCTVersion.m +1 -1
  5. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
  7. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +18 -4
  8. package/React/Fabric/Mounting/ComponentViews/Switch/RCTSwitchComponentView.mm +1 -1
  9. package/ReactAndroid/gradle.properties +1 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +4 -0
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderRadiusStyle.kt +2 -2
  19. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +0 -3
  20. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  21. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  22. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  23. package/ReactCommon/jsc/React-jsc.podspec +1 -1
  24. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  25. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  26. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +45 -9
  27. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  31. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  32. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  33. package/ReactCommon/react/renderer/core/ShadowNode.cpp +14 -4
  34. package/ReactCommon/react/renderer/core/ShadowNode.h +6 -0
  35. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +6 -0
  36. package/ReactCommon/react/runtime/TimerManager.cpp +6 -4
  37. package/ReactCommon/react/runtime/TimerManager.h +3 -1
  38. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +0 -1
  39. package/ReactCommon/react/runtime/tests/cxx/ReactInstanceTest.cpp +9 -5
  40. package/package.json +8 -8
  41. package/scripts/codegen/generate-artifacts-executor.js +53 -18
  42. package/sdks/.hermesversion +1 -1
  43. package/sdks/hermesc/osx-bin/hermes +0 -0
  44. package/sdks/hermesc/osx-bin/hermesc +0 -0
  45. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  46. package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
  47. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  48. package/types/index.d.ts +1 -1
  49. package/types/tsconfig.test.json +16 -0
@@ -314,6 +314,14 @@ class RCTAppDelegateBridgelessFeatureFlags : public ReactNativeFeatureFlagsDefau
314
314
  {
315
315
  return true;
316
316
  }
317
+ bool updateRuntimeShadowNodeReferencesOnCommit() override
318
+ {
319
+ return true;
320
+ }
321
+ bool useShadowNodeStateOnClone() override
322
+ {
323
+ return true;
324
+ }
317
325
  };
318
326
 
319
327
  - (void)_setUpFeatureFlags
@@ -81,7 +81,19 @@ export class URL {
81
81
  let baseUrl = null;
82
82
  if (!base || validateBaseUrl(url)) {
83
83
  this._url = url;
84
- if (!this._url.endsWith('/')) {
84
+ if (this._url.includes('#')) {
85
+ const split = this._url.split('#');
86
+ const beforeHash = split[0];
87
+ const website = beforeHash.split('://')[1];
88
+ if (!website.includes('/')) {
89
+ this._url = split.join('/#');
90
+ }
91
+ }
92
+
93
+ if (
94
+ !this._url.endsWith('/') &&
95
+ !(this._url.includes('?') || this._url.includes('#'))
96
+ ) {
85
97
  this._url += '/';
86
98
  }
87
99
  } else {
@@ -16,6 +16,6 @@ export const version: $ReadOnly<{
16
16
  }> = {
17
17
  major: 0,
18
18
  minor: 79,
19
- patch: 1,
19
+ patch: 3,
20
20
  prerelease: null,
21
21
  };
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(79),
26
- RCTVersionPatch: @(1),
26
+ RCTVersionPatch: @(3),
27
27
  RCTVersionPrerelease: [NSNull null],
28
28
  };
29
29
  });
@@ -191,6 +191,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTu
191
191
  rt
192
192
  );
193
193
  }
194
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
195
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->updateRuntimeShadowNodeReferencesOnCommit(
196
+ rt
197
+ );
198
+ }
194
199
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
195
200
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useAlwaysAvailableJSErrorHandling(
196
201
  rt
@@ -221,6 +226,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useRawP
221
226
  rt
222
227
  );
223
228
  }
229
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useShadowNodeStateOnClone(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
230
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useShadowNodeStateOnClone(
231
+ rt
232
+ );
233
+ }
224
234
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurboModuleInterop(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
225
235
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useTurboModuleInterop(
226
236
  rt
@@ -270,12 +280,14 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
270
280
  methodMap_["removeTurboModuleManagerDelegateMutex"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_removeTurboModuleManagerDelegateMutex};
271
281
  methodMap_["throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS};
272
282
  methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTurboModulePromiseRejectionsOnAndroid};
283
+ methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_updateRuntimeShadowNodeReferencesOnCommit};
273
284
  methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useAlwaysAvailableJSErrorHandling};
274
285
  methodMap_["useEditTextStockAndroidFocusBehavior"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useEditTextStockAndroidFocusBehavior};
275
286
  methodMap_["useFabricInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabricInterop};
276
287
  methodMap_["useNativeViewConfigsInBridgelessMode"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode};
277
288
  methodMap_["useOptimizedEventBatchingOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useOptimizedEventBatchingOnAndroid};
278
289
  methodMap_["useRawPropsJsiValue"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useRawPropsJsiValue};
290
+ methodMap_["useShadowNodeStateOnClone"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useShadowNodeStateOnClone};
279
291
  methodMap_["useTurboModuleInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurboModuleInterop};
280
292
  methodMap_["useTurboModules"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurboModules};
281
293
  }
@@ -56,12 +56,14 @@ public:
56
56
  virtual bool removeTurboModuleManagerDelegateMutex(jsi::Runtime &rt) = 0;
57
57
  virtual bool throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS(jsi::Runtime &rt) = 0;
58
58
  virtual bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) = 0;
59
+ virtual bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) = 0;
59
60
  virtual bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) = 0;
60
61
  virtual bool useEditTextStockAndroidFocusBehavior(jsi::Runtime &rt) = 0;
61
62
  virtual bool useFabricInterop(jsi::Runtime &rt) = 0;
62
63
  virtual bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) = 0;
63
64
  virtual bool useOptimizedEventBatchingOnAndroid(jsi::Runtime &rt) = 0;
64
65
  virtual bool useRawPropsJsiValue(jsi::Runtime &rt) = 0;
66
+ virtual bool useShadowNodeStateOnClone(jsi::Runtime &rt) = 0;
65
67
  virtual bool useTurboModuleInterop(jsi::Runtime &rt) = 0;
66
68
  virtual bool useTurboModules(jsi::Runtime &rt) = 0;
67
69
 
@@ -382,6 +384,14 @@ private:
382
384
  return bridging::callFromJs<bool>(
383
385
  rt, &T::traceTurboModulePromiseRejectionsOnAndroid, jsInvoker_, instance_);
384
386
  }
387
+ bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) override {
388
+ static_assert(
389
+ bridging::getParameterCount(&T::updateRuntimeShadowNodeReferencesOnCommit) == 1,
390
+ "Expected updateRuntimeShadowNodeReferencesOnCommit(...) to have 1 parameters");
391
+
392
+ return bridging::callFromJs<bool>(
393
+ rt, &T::updateRuntimeShadowNodeReferencesOnCommit, jsInvoker_, instance_);
394
+ }
385
395
  bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) override {
386
396
  static_assert(
387
397
  bridging::getParameterCount(&T::useAlwaysAvailableJSErrorHandling) == 1,
@@ -430,6 +440,14 @@ private:
430
440
  return bridging::callFromJs<bool>(
431
441
  rt, &T::useRawPropsJsiValue, jsInvoker_, instance_);
432
442
  }
443
+ bool useShadowNodeStateOnClone(jsi::Runtime &rt) override {
444
+ static_assert(
445
+ bridging::getParameterCount(&T::useShadowNodeStateOnClone) == 1,
446
+ "Expected useShadowNodeStateOnClone(...) to have 1 parameters");
447
+
448
+ return bridging::callFromJs<bool>(
449
+ rt, &T::useShadowNodeStateOnClone, jsInvoker_, instance_);
450
+ }
433
451
  bool useTurboModuleInterop(jsi::Runtime &rt) override {
434
452
  static_assert(
435
453
  bridging::getParameterCount(&T::useTurboModuleInterop) == 1,
@@ -170,10 +170,24 @@ static NSString *const kRCTLegacyInteropChildIndexKey = @"index";
170
170
 
171
171
  - (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
172
172
  {
173
- [_viewsToBeMounted addObject:@{
174
- kRCTLegacyInteropChildIndexKey : [NSNumber numberWithInteger:index],
175
- kRCTLegacyInteropChildComponentKey : childComponentView
176
- }];
173
+ if (_adapter && index == _adapter.paperView.reactSubviews.count) {
174
+ // This is a new child view that is being added to the end of the children array.
175
+ // After the children is added, we need to call didUpdateReactSubviews to make sure that it is rendered.
176
+ // Without this change, the new child will not be rendered right away because the didUpdateReactSubviews is not
177
+ // called and the `finalizeUpdate` is not invoked.
178
+ if ([childComponentView isKindOfClass:[RCTLegacyViewManagerInteropComponentView class]]) {
179
+ UIView *target = ((RCTLegacyViewManagerInteropComponentView *)childComponentView).contentView;
180
+ [_adapter.paperView insertReactSubview:target atIndex:index];
181
+ } else {
182
+ [_adapter.paperView insertReactSubview:childComponentView atIndex:index];
183
+ }
184
+ [_adapter.paperView didUpdateReactSubviews];
185
+ } else {
186
+ [_viewsToBeMounted addObject:@{
187
+ kRCTLegacyInteropChildIndexKey : [NSNumber numberWithInteger:index],
188
+ kRCTLegacyInteropChildComponentKey : childComponentView
189
+ }];
190
+ }
177
191
  }
178
192
 
179
193
  - (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
@@ -60,7 +60,7 @@ using namespace facebook::react;
60
60
  const auto &newSwitchProps = static_cast<const SwitchProps &>(*props);
61
61
 
62
62
  // `value`
63
- if (oldSwitchProps.value != newSwitchProps.value) {
63
+ if (!_isInitialValueSet || oldSwitchProps.value != newSwitchProps.value) {
64
64
  BOOL shouldAnimate = _isInitialValueSet == YES;
65
65
  [_switchView setOn:newSwitchProps.value animated:shouldAnimate];
66
66
  }
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.79.1
1
+ VERSION_NAME=0.79.3
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
 
4
4
  android.useAndroidX=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<<5e27f8a6852293234595697743315ff8>>
7
+ * @generated SignedSource<<b263bdcbc1258f7d5c56e69732ba9076>>
8
8
  */
9
9
 
10
10
  /**
@@ -238,6 +238,12 @@ public object ReactNativeFeatureFlags {
238
238
  @JvmStatic
239
239
  public fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = accessor.traceTurboModulePromiseRejectionsOnAndroid()
240
240
 
241
+ /**
242
+ * When enabled, runtime shadow node references will be updated during the commit. This allows running RSNRU from any thread without corrupting the renderer state.
243
+ */
244
+ @JvmStatic
245
+ public fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = accessor.updateRuntimeShadowNodeReferencesOnCommit()
246
+
241
247
  /**
242
248
  * In Bridgeless mode, use the always available javascript error reporting pipeline.
243
249
  */
@@ -274,6 +280,12 @@ public object ReactNativeFeatureFlags {
274
280
  @JvmStatic
275
281
  public fun useRawPropsJsiValue(): Boolean = accessor.useRawPropsJsiValue()
276
282
 
283
+ /**
284
+ * Use the state stored on the source shadow node when cloning it instead of reading in the most recent state on the shadow node family.
285
+ */
286
+ @JvmStatic
287
+ public fun useShadowNodeStateOnClone(): Boolean = accessor.useShadowNodeStateOnClone()
288
+
277
289
  /**
278
290
  * In Bridgeless mode, should legacy NativeModules use the TurboModule system?
279
291
  */
@@ -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<<b59cecccbe734a126dcd20f76d0ce7c7>>
7
+ * @generated SignedSource<<0496ecf3d1e5d8a2e6d4d594aca806d0>>
8
8
  */
9
9
 
10
10
  /**
@@ -55,12 +55,14 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
55
55
  private var removeTurboModuleManagerDelegateMutexCache: Boolean? = null
56
56
  private var throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOSCache: Boolean? = null
57
57
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
58
+ private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
58
59
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
59
60
  private var useEditTextStockAndroidFocusBehaviorCache: Boolean? = null
60
61
  private var useFabricInteropCache: Boolean? = null
61
62
  private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
62
63
  private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
63
64
  private var useRawPropsJsiValueCache: Boolean? = null
65
+ private var useShadowNodeStateOnCloneCache: Boolean? = null
64
66
  private var useTurboModuleInteropCache: Boolean? = null
65
67
  private var useTurboModulesCache: Boolean? = null
66
68
 
@@ -379,6 +381,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
379
381
  return cached
380
382
  }
381
383
 
384
+ override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean {
385
+ var cached = updateRuntimeShadowNodeReferencesOnCommitCache
386
+ if (cached == null) {
387
+ cached = ReactNativeFeatureFlagsCxxInterop.updateRuntimeShadowNodeReferencesOnCommit()
388
+ updateRuntimeShadowNodeReferencesOnCommitCache = cached
389
+ }
390
+ return cached
391
+ }
392
+
382
393
  override fun useAlwaysAvailableJSErrorHandling(): Boolean {
383
394
  var cached = useAlwaysAvailableJSErrorHandlingCache
384
395
  if (cached == null) {
@@ -433,6 +444,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
433
444
  return cached
434
445
  }
435
446
 
447
+ override fun useShadowNodeStateOnClone(): Boolean {
448
+ var cached = useShadowNodeStateOnCloneCache
449
+ if (cached == null) {
450
+ cached = ReactNativeFeatureFlagsCxxInterop.useShadowNodeStateOnClone()
451
+ useShadowNodeStateOnCloneCache = cached
452
+ }
453
+ return cached
454
+ }
455
+
436
456
  override fun useTurboModuleInterop(): Boolean {
437
457
  var cached = useTurboModuleInteropCache
438
458
  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<<08b51adfc7c09f0f26f2b3c8351cda01>>
7
+ * @generated SignedSource<<c4f3b0cee8b9b4b9cebb589801e1dd15>>
8
8
  */
9
9
 
10
10
  /**
@@ -98,6 +98,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
98
98
 
99
99
  @DoNotStrip @JvmStatic public external fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
100
100
 
101
+ @DoNotStrip @JvmStatic public external fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
102
+
101
103
  @DoNotStrip @JvmStatic public external fun useAlwaysAvailableJSErrorHandling(): Boolean
102
104
 
103
105
  @DoNotStrip @JvmStatic public external fun useEditTextStockAndroidFocusBehavior(): Boolean
@@ -110,6 +112,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
110
112
 
111
113
  @DoNotStrip @JvmStatic public external fun useRawPropsJsiValue(): Boolean
112
114
 
115
+ @DoNotStrip @JvmStatic public external fun useShadowNodeStateOnClone(): Boolean
116
+
113
117
  @DoNotStrip @JvmStatic public external fun useTurboModuleInterop(): Boolean
114
118
 
115
119
  @DoNotStrip @JvmStatic public external fun useTurboModules(): 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<<0041e37961e68474a6d092dc0f8a4903>>
7
+ * @generated SignedSource<<a8900217ae0385947b619c8fa0834942>>
8
8
  */
9
9
 
10
10
  /**
@@ -93,6 +93,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
93
93
 
94
94
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = false
95
95
 
96
+ override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = false
97
+
96
98
  override fun useAlwaysAvailableJSErrorHandling(): Boolean = false
97
99
 
98
100
  override fun useEditTextStockAndroidFocusBehavior(): Boolean = true
@@ -105,6 +107,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
105
107
 
106
108
  override fun useRawPropsJsiValue(): Boolean = false
107
109
 
110
+ override fun useShadowNodeStateOnClone(): Boolean = false
111
+
108
112
  override fun useTurboModuleInterop(): Boolean = false
109
113
 
110
114
  override fun useTurboModules(): 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<<e5c1e722f33148fe3aa36ccab62e2293>>
7
+ * @generated SignedSource<<8f5180a0ef154c083ac38d28e650ee11>>
8
8
  */
9
9
 
10
10
  /**
@@ -59,12 +59,14 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
59
59
  private var removeTurboModuleManagerDelegateMutexCache: Boolean? = null
60
60
  private var throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOSCache: Boolean? = null
61
61
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
62
+ private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
62
63
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
63
64
  private var useEditTextStockAndroidFocusBehaviorCache: Boolean? = null
64
65
  private var useFabricInteropCache: Boolean? = null
65
66
  private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
66
67
  private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
67
68
  private var useRawPropsJsiValueCache: Boolean? = null
69
+ private var useShadowNodeStateOnCloneCache: Boolean? = null
68
70
  private var useTurboModuleInteropCache: Boolean? = null
69
71
  private var useTurboModulesCache: Boolean? = null
70
72
 
@@ -418,6 +420,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
418
420
  return cached
419
421
  }
420
422
 
423
+ override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean {
424
+ var cached = updateRuntimeShadowNodeReferencesOnCommitCache
425
+ if (cached == null) {
426
+ cached = currentProvider.updateRuntimeShadowNodeReferencesOnCommit()
427
+ accessedFeatureFlags.add("updateRuntimeShadowNodeReferencesOnCommit")
428
+ updateRuntimeShadowNodeReferencesOnCommitCache = cached
429
+ }
430
+ return cached
431
+ }
432
+
421
433
  override fun useAlwaysAvailableJSErrorHandling(): Boolean {
422
434
  var cached = useAlwaysAvailableJSErrorHandlingCache
423
435
  if (cached == null) {
@@ -478,6 +490,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
478
490
  return cached
479
491
  }
480
492
 
493
+ override fun useShadowNodeStateOnClone(): Boolean {
494
+ var cached = useShadowNodeStateOnCloneCache
495
+ if (cached == null) {
496
+ cached = currentProvider.useShadowNodeStateOnClone()
497
+ accessedFeatureFlags.add("useShadowNodeStateOnClone")
498
+ useShadowNodeStateOnCloneCache = cached
499
+ }
500
+ return cached
501
+ }
502
+
481
503
  override fun useTurboModuleInterop(): Boolean {
482
504
  var cached = useTurboModuleInteropCache
483
505
  if (cached == null) {
@@ -17,4 +17,8 @@ public class ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android(
17
17
  override fun enableFabricRenderer(): Boolean = bridgelessEnabled || fabricEnabled
18
18
 
19
19
  override fun useTurboModules(): Boolean = bridgelessEnabled || turboModulesEnabled
20
+
21
+ override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = true
22
+
23
+ override fun useShadowNodeStateOnClone(): Boolean = true
20
24
  }
@@ -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<<9a223b4f79e4612eb193036256bfebc5>>
7
+ * @generated SignedSource<<33571f99b1f78fbc62cecfca5f8351fa>>
8
8
  */
9
9
 
10
10
  /**
@@ -93,6 +93,8 @@ public interface ReactNativeFeatureFlagsProvider {
93
93
 
94
94
  @DoNotStrip public fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
95
95
 
96
+ @DoNotStrip public fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean
97
+
96
98
  @DoNotStrip public fun useAlwaysAvailableJSErrorHandling(): Boolean
97
99
 
98
100
  @DoNotStrip public fun useEditTextStockAndroidFocusBehavior(): Boolean
@@ -105,6 +107,8 @@ public interface ReactNativeFeatureFlagsProvider {
105
107
 
106
108
  @DoNotStrip public fun useRawPropsJsiValue(): Boolean
107
109
 
110
+ @DoNotStrip public fun useShadowNodeStateOnClone(): Boolean
111
+
108
112
  @DoNotStrip public fun useTurboModuleInterop(): Boolean
109
113
 
110
114
  @DoNotStrip public fun useTurboModules(): Boolean
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
17
17
  public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
18
18
  "major", 0,
19
19
  "minor", 79,
20
- "patch", 1,
20
+ "patch", 3,
21
21
  "prerelease", null);
22
22
  }
@@ -136,10 +136,10 @@ internal data class BorderRadiusStyle(
136
136
  (startStart ?: topStart ?: topLeft ?: uniform)?.resolve(width, height)
137
137
  ?: zeroRadii,
138
138
  bottomLeft =
139
- (endEnd ?: bottomStart ?: bottomRight ?: uniform)?.resolve(width, height)
139
+ (endEnd ?: bottomEnd ?: bottomRight ?: uniform)?.resolve(width, height)
140
140
  ?: zeroRadii,
141
141
  bottomRight =
142
- (startEnd ?: bottomEnd ?: bottomLeft ?: uniform)?.resolve(width, height)
142
+ (startEnd ?: bottomStart ?: bottomLeft ?: uniform)?.resolve(width, height)
143
143
  ?: zeroRadii,
144
144
  width = width,
145
145
  height = height,
@@ -588,9 +588,6 @@ public class ReactViewGroup extends ViewGroup
588
588
  UiThreadUtil.assertOnUiThread();
589
589
  checkViewClippingTag(child, Boolean.TRUE);
590
590
  if (!customDrawOrderDisabled()) {
591
- if (indexOfChild(child) == -1) {
592
- return;
593
- }
594
591
  getDrawingOrderHelper().handleRemoveView(child);
595
592
  setChildrenDrawingOrderEnabled(getDrawingOrderHelper().shouldEnableCustomDrawingOrder());
596
593
  } else {
@@ -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<<91c1a65790aa5946a354ab8a1966a5f4>>
7
+ * @generated SignedSource<<83b23039ed9fff5109ff3b532648baac>>
8
8
  */
9
9
 
10
10
  /**
@@ -249,6 +249,12 @@ class ReactNativeFeatureFlagsProviderHolder
249
249
  return method(javaProvider_);
250
250
  }
251
251
 
252
+ bool updateRuntimeShadowNodeReferencesOnCommit() override {
253
+ static const auto method =
254
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("updateRuntimeShadowNodeReferencesOnCommit");
255
+ return method(javaProvider_);
256
+ }
257
+
252
258
  bool useAlwaysAvailableJSErrorHandling() override {
253
259
  static const auto method =
254
260
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useAlwaysAvailableJSErrorHandling");
@@ -285,6 +291,12 @@ class ReactNativeFeatureFlagsProviderHolder
285
291
  return method(javaProvider_);
286
292
  }
287
293
 
294
+ bool useShadowNodeStateOnClone() override {
295
+ static const auto method =
296
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useShadowNodeStateOnClone");
297
+ return method(javaProvider_);
298
+ }
299
+
288
300
  bool useTurboModuleInterop() override {
289
301
  static const auto method =
290
302
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useTurboModuleInterop");
@@ -476,6 +488,11 @@ bool JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndr
476
488
  return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
477
489
  }
478
490
 
491
+ bool JReactNativeFeatureFlagsCxxInterop::updateRuntimeShadowNodeReferencesOnCommit(
492
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
493
+ return ReactNativeFeatureFlags::updateRuntimeShadowNodeReferencesOnCommit();
494
+ }
495
+
479
496
  bool JReactNativeFeatureFlagsCxxInterop::useAlwaysAvailableJSErrorHandling(
480
497
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
481
498
  return ReactNativeFeatureFlags::useAlwaysAvailableJSErrorHandling();
@@ -506,6 +523,11 @@ bool JReactNativeFeatureFlagsCxxInterop::useRawPropsJsiValue(
506
523
  return ReactNativeFeatureFlags::useRawPropsJsiValue();
507
524
  }
508
525
 
526
+ bool JReactNativeFeatureFlagsCxxInterop::useShadowNodeStateOnClone(
527
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
528
+ return ReactNativeFeatureFlags::useShadowNodeStateOnClone();
529
+ }
530
+
509
531
  bool JReactNativeFeatureFlagsCxxInterop::useTurboModuleInterop(
510
532
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
511
533
  return ReactNativeFeatureFlags::useTurboModuleInterop();
@@ -652,6 +674,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
652
674
  makeNativeMethod(
653
675
  "traceTurboModulePromiseRejectionsOnAndroid",
654
676
  JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid),
677
+ makeNativeMethod(
678
+ "updateRuntimeShadowNodeReferencesOnCommit",
679
+ JReactNativeFeatureFlagsCxxInterop::updateRuntimeShadowNodeReferencesOnCommit),
655
680
  makeNativeMethod(
656
681
  "useAlwaysAvailableJSErrorHandling",
657
682
  JReactNativeFeatureFlagsCxxInterop::useAlwaysAvailableJSErrorHandling),
@@ -670,6 +695,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
670
695
  makeNativeMethod(
671
696
  "useRawPropsJsiValue",
672
697
  JReactNativeFeatureFlagsCxxInterop::useRawPropsJsiValue),
698
+ makeNativeMethod(
699
+ "useShadowNodeStateOnClone",
700
+ JReactNativeFeatureFlagsCxxInterop::useShadowNodeStateOnClone),
673
701
  makeNativeMethod(
674
702
  "useTurboModuleInterop",
675
703
  JReactNativeFeatureFlagsCxxInterop::useTurboModuleInterop),
@@ -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<<610104213a5eba23b797e27377d71b52>>
7
+ * @generated SignedSource<<efb0288fd19fb35e4582522c835301b4>>
8
8
  */
9
9
 
10
10
  /**
@@ -135,6 +135,9 @@ class JReactNativeFeatureFlagsCxxInterop
135
135
  static bool traceTurboModulePromiseRejectionsOnAndroid(
136
136
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
137
137
 
138
+ static bool updateRuntimeShadowNodeReferencesOnCommit(
139
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
140
+
138
141
  static bool useAlwaysAvailableJSErrorHandling(
139
142
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
140
143
 
@@ -153,6 +156,9 @@ class JReactNativeFeatureFlagsCxxInterop
153
156
  static bool useRawPropsJsiValue(
154
157
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
155
158
 
159
+ static bool useShadowNodeStateOnClone(
160
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
161
+
156
162
  static bool useTurboModuleInterop(
157
163
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
158
164
 
@@ -14,14 +14,14 @@
14
14
 
15
15
  #define REACT_NATIVE_VERSION_MAJOR 0
16
16
  #define REACT_NATIVE_VERSION_MINOR 79
17
- #define REACT_NATIVE_VERSION_PATCH 1
17
+ #define REACT_NATIVE_VERSION_PATCH 3
18
18
 
19
19
  namespace facebook::react {
20
20
 
21
21
  constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 79;
24
- int32_t Patch = 1;
24
+ int32_t Patch = 3;
25
25
  std::string_view Prerelease = "";
26
26
  } ReactNativeVersion;
27
27
 
@@ -32,6 +32,6 @@ Pod::Spec.new do |s|
32
32
  s.dependency "React-jsi", version
33
33
 
34
34
  s.subspec "Fabric" do |ss|
35
- ss.pod_target_xcconfig = { "OTHER_CFLAGS" => "$(inherited)" }
35
+ ss.pod_target_xcconfig = { "OTHER_CFLAGS" => "$(inherited)", "DEFINES_MODULE" => "YES" }
36
36
  end
37
37
  end
@@ -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<<3d4eefc7af1e9d594ade8339c261ca01>>
7
+ * @generated SignedSource<<661a4193f9ba7af0c963bc13751deb15>>
8
8
  */
9
9
 
10
10
  /**
@@ -166,6 +166,10 @@ bool ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid() {
166
166
  return getAccessor().traceTurboModulePromiseRejectionsOnAndroid();
167
167
  }
168
168
 
169
+ bool ReactNativeFeatureFlags::updateRuntimeShadowNodeReferencesOnCommit() {
170
+ return getAccessor().updateRuntimeShadowNodeReferencesOnCommit();
171
+ }
172
+
169
173
  bool ReactNativeFeatureFlags::useAlwaysAvailableJSErrorHandling() {
170
174
  return getAccessor().useAlwaysAvailableJSErrorHandling();
171
175
  }
@@ -190,6 +194,10 @@ bool ReactNativeFeatureFlags::useRawPropsJsiValue() {
190
194
  return getAccessor().useRawPropsJsiValue();
191
195
  }
192
196
 
197
+ bool ReactNativeFeatureFlags::useShadowNodeStateOnClone() {
198
+ return getAccessor().useShadowNodeStateOnClone();
199
+ }
200
+
193
201
  bool ReactNativeFeatureFlags::useTurboModuleInterop() {
194
202
  return getAccessor().useTurboModuleInterop();
195
203
  }