react-native 0.86.0 → 0.86.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 (149) hide show
  1. package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +1 -1
  2. package/Libraries/Animated/components/AnimatedScrollView.js +1 -1
  3. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +1 -1
  4. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  5. package/Libraries/Components/Button.js +2 -2
  6. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -1
  7. package/Libraries/Components/TextInput/TextInput.flow.js +1 -1
  8. package/Libraries/Components/Touchable/Touchable.d.ts +1 -1
  9. package/Libraries/Components/View/ViewAccessibility.d.ts +1 -1
  10. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  11. package/Libraries/Core/ReactNativeVersion.js +1 -1
  12. package/Libraries/Core/Timers/JSTimers.js +1 -1
  13. package/Libraries/Core/setUpNavigator.js +1 -1
  14. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +1 -1
  15. package/Libraries/FBLazyVector/FBLazyVector.podspec +1 -1
  16. package/Libraries/Image/ImageSource.d.ts +1 -1
  17. package/Libraries/Image/RCTImageLoader.mm +1 -1
  18. package/Libraries/Image/React-RCTImage.podspec +1 -1
  19. package/Libraries/Interaction/PanResponder.js +1 -1
  20. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  21. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  22. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  23. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  24. package/Libraries/Renderer/README.md +2 -2
  25. package/Libraries/Required/RCTRequired.podspec +1 -1
  26. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  27. package/Libraries/Text/React-RCTText.podspec +1 -1
  28. package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
  29. package/Libraries/Utilities/PolyfillFunctions.js +1 -1
  30. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  31. package/README.md +6 -6
  32. package/React/Base/RCTVersion.m +1 -1
  33. package/React/CoreModules/React-CoreModules.podspec +1 -1
  34. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +1 -1
  35. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +1 -1
  36. package/React/React-RCTFBReactNativeSpec.podspec +1 -1
  37. package/React/React-RCTFabric.podspec +1 -1
  38. package/React/Runtime/React-RCTRuntime.podspec +1 -1
  39. package/React/Views/ScrollView/RCTScrollView.m +1 -1
  40. package/React-Core.podspec +1 -1
  41. package/React.podspec +1 -1
  42. package/ReactAndroid/build.gradle.kts +1 -1
  43. package/ReactAndroid/gradle.properties +1 -1
  44. package/ReactAndroid/publish.gradle +5 -5
  45. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +5 -4
  46. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +1 -1
  47. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +49 -12
  48. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.kt +2 -2
  49. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.kt +8 -4
  50. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +2 -2
  51. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  52. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.kt +1 -1
  53. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +1 -1
  54. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollViewManager.kt +1 -1
  55. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +1 -1
  56. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +1 -1
  57. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +2 -2
  58. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +2 -2
  59. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextSelectionWatcher.kt +1 -1
  60. package/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +1 -1
  61. package/ReactApple/RCTSwiftUI/RCTSwiftUI.podspec +1 -1
  62. package/ReactApple/RCTSwiftUIWrapper/RCTSwiftUIWrapper.podspec +1 -1
  63. package/ReactCommon/React-Fabric.podspec +1 -1
  64. package/ReactCommon/React-FabricComponents.podspec +1 -1
  65. package/ReactCommon/React-FabricImage.podspec +1 -1
  66. package/ReactCommon/React-Mapbuffer.podspec +1 -1
  67. package/ReactCommon/ReactCommon.podspec +1 -1
  68. package/ReactCommon/callinvoker/React-callinvoker.podspec +1 -1
  69. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
  70. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  71. package/ReactCommon/hermes/React-hermes.podspec +1 -1
  72. package/ReactCommon/hermes/executor/React-jsitracing.podspec +1 -1
  73. package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +1 -1
  74. package/ReactCommon/jsi/React-jsi.podspec +1 -1
  75. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
  76. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
  77. package/ReactCommon/jsinspector-modern/cdp/React-jsinspectorcdp.podspec +1 -1
  78. package/ReactCommon/jsinspector-modern/network/React-jsinspectornetwork.podspec +1 -1
  79. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -1
  80. package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -1
  81. package/ReactCommon/logger/React-logger.podspec +1 -1
  82. package/ReactCommon/oscompat/React-oscompat.podspec +1 -1
  83. package/ReactCommon/react/debug/React-debug.podspec +1 -1
  84. package/ReactCommon/react/debug/redbox/JscSafeUrl.h +1 -1
  85. package/ReactCommon/react/featureflags/React-featureflags.podspec +1 -1
  86. package/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaTurboModule.cpp +1 -1
  87. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
  88. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -1
  89. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +1 -1
  90. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -1
  91. package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
  92. package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +1 -1
  93. package/ReactCommon/react/nativemodule/featureflags/React-featureflagsnativemodule.podspec +1 -1
  94. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -1
  95. package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +1 -1
  96. package/ReactCommon/react/nativemodule/microtasks/React-microtasksnativemodule.podspec +1 -1
  97. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +1 -1
  98. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
  99. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +1 -1
  100. package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +1 -1
  101. package/ReactCommon/react/networking/React-networking.podspec +1 -1
  102. package/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec +1 -1
  103. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -1
  104. package/ReactCommon/react/renderer/animated/internal/primitives.h +1 -1
  105. package/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec +1 -1
  106. package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
  107. package/ReactCommon/react/renderer/core/ShadowNode.cpp +27 -19
  108. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +2 -0
  109. package/ReactCommon/react/renderer/css/React-renderercss.podspec +1 -1
  110. package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +1 -1
  111. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
  112. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
  113. package/ReactCommon/react/renderer/mounting/internal/CullingContext.cpp +1 -1
  114. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -1
  115. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +1 -1
  116. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +58 -53
  117. package/ReactCommon/react/renderer/uimanager/tests/FabricUIManagerTest.cpp +144 -3
  118. package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -1
  119. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -1
  120. package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +1 -1
  121. package/ReactCommon/react/timing/React-timing.podspec +1 -1
  122. package/ReactCommon/react/utils/React-utils.podspec +1 -1
  123. package/ReactCommon/reactperflogger/React-perflogger.podspec +1 -1
  124. package/ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec +1 -1
  125. package/ReactCommon/yoga/Yoga.podspec +2 -2
  126. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +2 -1
  127. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +11 -7
  128. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +1 -1
  129. package/package.json +12 -12
  130. package/scripts/cocoapods/spm.rb +1 -1
  131. package/scripts/cocoapods/utils.rb +2 -2
  132. package/scripts/codegen/templates/ReactAppDependencyProvider.podspec.template +1 -1
  133. package/scripts/codegen/templates/ReactCodegen.podspec.template +1 -1
  134. package/scripts/ios-configure-glog.sh +1 -1
  135. package/sdks/.hermesv1version +1 -1
  136. package/sdks/hermes-engine/hermes-engine.podspec +7 -2
  137. package/sdks/hermes-engine/version.properties +1 -1
  138. package/src/private/types/HostInstance.js +1 -1
  139. package/src/types/globals.d.ts +2 -2
  140. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  141. package/third-party-podspecs/ReactNativeDependencies.podspec +1 -1
  142. package/third-party-podspecs/glog.podspec +1 -1
  143. package/types/public/ReactNativeTypes.d.ts +2 -2
  144. package/types_generated/Libraries/Animated/components/AnimatedScrollView.d.ts +2 -2
  145. package/types_generated/Libraries/Components/Button.d.ts +3 -3
  146. package/types_generated/Libraries/Components/TextInput/TextInput.flow.d.ts +2 -2
  147. package/types_generated/Libraries/Components/View/ViewAccessibility.d.ts +4 -4
  148. package/types_generated/Libraries/Interaction/PanResponder.d.ts +2 -2
  149. package/types_generated/src/private/types/HostInstance.d.ts +2 -2
@@ -8,10 +8,151 @@
8
8
  #include <memory>
9
9
 
10
10
  #include <gtest/gtest.h>
11
+ #include <react/renderer/components/view/ViewShadowNode.h>
12
+ #include <react/renderer/core/ShadowNodeFragment.h>
13
+ #include <react/renderer/element/Element.h>
14
+ #include <react/renderer/element/testUtils.h>
11
15
  #include <react/renderer/uimanager/UIManager.h>
12
16
 
13
- using namespace facebook::react;
17
+ namespace facebook::react {
14
18
 
15
- TEST(UIManagerTest, testSomething) {
16
- // TODO
19
+ class FabricUIManagerTest : public ::testing::Test {
20
+ public:
21
+ FabricUIManagerTest() {
22
+ contextContainer_ = std::make_shared<ContextContainer>();
23
+
24
+ ComponentDescriptorProviderRegistry componentDescriptorProviderRegistry{};
25
+ auto componentDescriptorRegistry =
26
+ componentDescriptorProviderRegistry.createComponentDescriptorRegistry(
27
+ ComponentDescriptorParameters{
28
+ .eventDispatcher = EventDispatcher::Shared{},
29
+ .contextContainer = contextContainer_,
30
+ .flavor = nullptr});
31
+
32
+ componentDescriptorProviderRegistry.add(
33
+ concreteComponentDescriptorProvider<RootComponentDescriptor>());
34
+ componentDescriptorProviderRegistry.add(
35
+ concreteComponentDescriptorProvider<ViewComponentDescriptor>());
36
+
37
+ builder_ = std::make_unique<ComponentBuilder>(componentDescriptorRegistry);
38
+
39
+ RuntimeExecutor runtimeExecutor =
40
+ [](std::function<void(
41
+ facebook::jsi::Runtime & runtime)>&& /*callback*/) {};
42
+ uiManager_ =
43
+ std::make_unique<UIManager>(runtimeExecutor, contextContainer_);
44
+ uiManager_->setComponentDescriptorRegistry(componentDescriptorRegistry);
45
+
46
+ buildAndCommitTree();
47
+ }
48
+
49
+ void TearDown() override {
50
+ uiManager_->stopSurface(surfaceId_);
51
+ }
52
+
53
+ protected:
54
+ std::shared_ptr<RootShadowNode> buildTree() {
55
+ std::shared_ptr<RootShadowNode> rootNode;
56
+
57
+ // clang-format off
58
+ auto element =
59
+ Element<RootShadowNode>()
60
+ .tag(1)
61
+ .surfaceId(surfaceId_)
62
+ .reference(rootNode)
63
+ .props([] {
64
+ auto sharedProps = std::make_shared<RootProps>();
65
+ sharedProps->layoutConstraints = LayoutConstraints{
66
+ .minimumSize = {.width = 0, .height = 0},
67
+ .maximumSize = {.width = 500, .height = 500}};
68
+ return sharedProps;
69
+ })
70
+ .children({
71
+ Element<ViewShadowNode>()
72
+ .tag(viewTag_)
73
+ .surfaceId(surfaceId_)
74
+ .props([] {
75
+ auto sharedProps = std::make_shared<ViewShadowNodeProps>();
76
+ sharedProps->nativeId = "initial";
77
+ sharedProps->opacity = 1.0;
78
+ return sharedProps;
79
+ })
80
+ });
81
+ // clang-format on
82
+
83
+ builder_->build(element);
84
+ return rootNode;
85
+ }
86
+
87
+ void buildAndCommitTree() {
88
+ auto rootNode = buildTree();
89
+
90
+ auto shadowTree = std::make_unique<ShadowTree>(
91
+ surfaceId_,
92
+ LayoutConstraints{},
93
+ LayoutContext{},
94
+ *uiManager_,
95
+ *contextContainer_);
96
+
97
+ shadowTreePtr_ = shadowTree.get();
98
+
99
+ shadowTree->commit(
100
+ [&rootNode](const RootShadowNode& /*oldRootShadowNode*/) {
101
+ return std::static_pointer_cast<RootShadowNode>(rootNode);
102
+ },
103
+ {true});
104
+
105
+ uiManager_->startSurface(
106
+ std::move(shadowTree),
107
+ "test",
108
+ folly::dynamic::object,
109
+ DisplayMode::Visible);
110
+ }
111
+
112
+ std::shared_ptr<const ShadowNode> currentViewNode() const {
113
+ auto root = shadowTreePtr_->getCurrentRevision().rootShadowNode;
114
+ return root->getChildren().front();
115
+ }
116
+
117
+ const ViewProps& viewPropsInTree() const {
118
+ return static_cast<const ViewProps&>(*currentViewNode()->getProps());
119
+ }
120
+
121
+ SurfaceId surfaceId_{0};
122
+ Tag viewTag_{42};
123
+ std::shared_ptr<ContextContainer> contextContainer_;
124
+ std::unique_ptr<ComponentBuilder> builder_;
125
+ std::unique_ptr<UIManager> uiManager_;
126
+ ShadowTree* shadowTreePtr_{nullptr};
127
+ };
128
+
129
+ // Demonstrates the merge between props set by `setNativeProps_DEPRECATED`
130
+ // (the legacy native-side prop override path) and props supplied by a
131
+ // regular React re-render via `cloneNode`. The native override must
132
+ // survive a React render that does not touch the overridden key, and
133
+ // other React-supplied keys must still apply.
134
+ TEST_F(FabricUIManagerTest, SetNativePropsMergesWithReactRender) {
135
+ ASSERT_EQ(viewPropsInTree().nativeId, "initial");
136
+ ASSERT_FLOAT_EQ(viewPropsInTree().opacity, 1.0);
137
+
138
+ // Native override on `opacity` only. The committed tree picks up the new
139
+ // opacity and leaves the unrelated `nativeId` untouched.
140
+ uiManager_->setNativeProps_DEPRECATED(
141
+ currentViewNode(), RawProps(folly::dynamic::object("opacity", 0.5)));
142
+ EXPECT_EQ(viewPropsInTree().nativeId, "initial");
143
+ EXPECT_FLOAT_EQ(viewPropsInTree().opacity, 0.5);
144
+
145
+ // Simulate a React re-render that updates `nativeID` only. The native
146
+ // `opacity` override must survive (it is not present in rawProps and
147
+ // therefore not refreshed away by React), and the new `nativeID` must
148
+ // apply on top.
149
+ auto rerendered = uiManager_->cloneNode(
150
+ *currentViewNode(),
151
+ /*children=*/nullptr,
152
+ RawProps(folly::dynamic::object("nativeID", "from-react")));
153
+ auto& merged = static_cast<const ViewProps&>(*rerendered->getProps());
154
+ EXPECT_EQ(merged.nativeId, "from-react");
155
+ EXPECT_FLOAT_EQ(merged.opacity, 0.5);
17
156
  }
157
+
158
+ } // namespace facebook::react
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "../../..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "../../..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "../../../../..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "..", "..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -8,7 +8,7 @@ require "json"
8
8
  package = JSON.parse(File.read(File.join(__dir__, "..", "..", "package.json")))
9
9
  version = package['version']
10
10
 
11
- source = { :git => 'https://github.com/facebook/react-native.git' }
11
+ source = { :git => 'https://github.com/react/react-native.git' }
12
12
  if version == '1000.0.0'
13
13
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14
14
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -6,7 +6,7 @@
6
6
  package = JSON.parse(File.read(File.expand_path('../../package.json', __dir__)))
7
7
  version = package['version']
8
8
 
9
- source = { :git => ENV['INSTALL_YOGA_FROM_LOCATION'] || 'https://github.com/facebook/react-native.git' }
9
+ source = { :git => ENV['INSTALL_YOGA_FROM_LOCATION'] || 'https://github.com/react/react-native.git' }
10
10
  if version == '1000.0.0'
11
11
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
12
12
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -61,6 +61,6 @@ Pod::Spec.new do |spec|
61
61
  # Fabric must be able to access private headers (which should not be included in the umbrella header)
62
62
  all_header_files = 'yoga/**/*.h'
63
63
  all_header_files = File.join('ReactCommon/yoga', all_header_files) if ENV['INSTALL_YOGA_WITHOUT_PATH_OPTION']
64
- spec.private_header_files = Dir.glob(all_header_files) - Dir.glob(public_header_files)
64
+ spec.private_header_files = Dir.glob(all_header_files).sort - Dir.glob(public_header_files).sort
65
65
  spec.preserve_paths = [all_header_files]
66
66
  end
@@ -558,7 +558,6 @@ bool layoutAbsoluteDescendants(
558
558
  // we need to mutate these descendents. Make sure the path of
559
559
  // nodes to them is mutable before positioning.
560
560
  child->cloneChildrenIfNeeded();
561
- cleanupContentsNodesRecursively(child);
562
561
  const Direction childDirection =
563
562
  child->resolveDirection(currentNodeDirection);
564
563
  // By now all descendants of the containing block that are not absolute
@@ -584,6 +583,8 @@ bool layoutAbsoluteDescendants(
584
583
  containingNodeAvailableInnerHeight) ||
585
584
  hasNewLayout;
586
585
 
586
+ cleanupContentsNodesRecursively(
587
+ child, /* didPerformLayout */ hasNewLayout);
587
588
  if (hasNewLayout) {
588
589
  child->setHasNewLayout(hasNewLayout);
589
590
  }
@@ -506,7 +506,9 @@ void zeroOutLayoutRecursively(yoga::Node* const node) {
506
506
  }
507
507
  }
508
508
 
509
- void cleanupContentsNodesRecursively(yoga::Node* const node) {
509
+ void cleanupContentsNodesRecursively(
510
+ yoga::Node* const node,
511
+ bool didPerformLayout) {
510
512
  if (node->hasContentsChildren()) [[unlikely]] {
511
513
  node->cloneContentsChildrenIfNeeded();
512
514
  for (auto child : node->getChildren()) {
@@ -514,11 +516,13 @@ void cleanupContentsNodesRecursively(yoga::Node* const node) {
514
516
  child->getLayout() = {};
515
517
  child->setLayoutDimension(0, Dimension::Width);
516
518
  child->setLayoutDimension(0, Dimension::Height);
517
- child->setHasNewLayout(true);
519
+ if (didPerformLayout) {
520
+ child->setHasNewLayout(true);
521
+ }
518
522
  child->setDirty(false);
519
523
  child->cloneChildrenIfNeeded();
520
524
 
521
- cleanupContentsNodesRecursively(child);
525
+ cleanupContentsNodesRecursively(child, didPerformLayout);
522
526
  }
523
527
  }
524
528
  }
@@ -1360,7 +1364,7 @@ static void calculateLayoutImpl(
1360
1364
 
1361
1365
  // Clean and update all display: contents nodes with a direct path to the
1362
1366
  // current node as they will not be traversed
1363
- cleanupContentsNodesRecursively(node);
1367
+ cleanupContentsNodesRecursively(node, performLayout);
1364
1368
  return;
1365
1369
  }
1366
1370
 
@@ -1378,7 +1382,7 @@ static void calculateLayoutImpl(
1378
1382
 
1379
1383
  // Clean and update all display: contents nodes with a direct path to the
1380
1384
  // current node as they will not be traversed
1381
- cleanupContentsNodesRecursively(node);
1385
+ cleanupContentsNodesRecursively(node, performLayout);
1382
1386
  return;
1383
1387
  }
1384
1388
 
@@ -1396,7 +1400,7 @@ static void calculateLayoutImpl(
1396
1400
  ownerHeight)) {
1397
1401
  // Clean and update all display: contents nodes with a direct path to the
1398
1402
  // current node as they will not be traversed
1399
- cleanupContentsNodesRecursively(node);
1403
+ cleanupContentsNodesRecursively(node, /* didPerformLayout */ false);
1400
1404
  return;
1401
1405
  }
1402
1406
 
@@ -1408,7 +1412,7 @@ static void calculateLayoutImpl(
1408
1412
 
1409
1413
  // Clean and update all display: contents nodes with a direct path to the
1410
1414
  // current node as they will not be traversed
1411
- cleanupContentsNodesRecursively(node);
1415
+ cleanupContentsNodesRecursively(node, performLayout);
1412
1416
 
1413
1417
  // STEP 1: CALCULATE VALUES FOR REMAINDER OF ALGORITHM
1414
1418
  const FlexDirection mainAxis =
@@ -55,6 +55,6 @@ float calculateAvailableInnerDimension(
55
55
 
56
56
  void zeroOutLayoutRecursively(yoga::Node* const node);
57
57
 
58
- void cleanupContentsNodesRecursively(yoga::Node* const node);
58
+ void cleanupContentsNodesRecursively(yoga::Node* node, bool didPerformLayout);
59
59
 
60
60
  } // namespace facebook::yoga
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.86.0",
3
+ "version": "0.86.3",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/facebook/react-native.git",
8
+ "url": "git+https://github.com/react/react-native.git",
9
9
  "directory": "packages/react-native"
10
10
  },
11
11
  "homepage": "https://reactnative.dev/",
@@ -19,7 +19,7 @@
19
19
  "app-framework",
20
20
  "mobile-development"
21
21
  ],
22
- "bugs": "https://github.com/facebook/react-native/issues",
22
+ "bugs": "https://github.com/react/react-native/issues",
23
23
  "engines": {
24
24
  "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0"
25
25
  },
@@ -149,7 +149,7 @@
149
149
  "featureflags": "node ./scripts/featureflags/index.js"
150
150
  },
151
151
  "peerDependencies": {
152
- "@react-native/jest-preset": "0.86.0",
152
+ "@react-native/jest-preset": "0.86.3",
153
153
  "@types/react": "^19.1.1",
154
154
  "react": "^19.2.3"
155
155
  },
@@ -162,13 +162,13 @@
162
162
  }
163
163
  },
164
164
  "dependencies": {
165
- "@react-native/assets-registry": "0.86.0",
166
- "@react-native/codegen": "0.86.0",
167
- "@react-native/community-cli-plugin": "0.86.0",
168
- "@react-native/gradle-plugin": "0.86.0",
169
- "@react-native/js-polyfills": "0.86.0",
170
- "@react-native/normalize-colors": "0.86.0",
171
- "@react-native/virtualized-lists": "0.86.0",
165
+ "@react-native/assets-registry": "0.86.3",
166
+ "@react-native/codegen": "0.86.3",
167
+ "@react-native/community-cli-plugin": "0.86.3",
168
+ "@react-native/gradle-plugin": "0.86.3",
169
+ "@react-native/js-polyfills": "0.86.3",
170
+ "@react-native/normalize-colors": "0.86.3",
171
+ "@react-native/virtualized-lists": "0.86.3",
172
172
  "abort-controller": "^3.0.0",
173
173
  "anser": "^1.4.9",
174
174
  "ansi-regex": "^5.0.0",
@@ -176,7 +176,7 @@
176
176
  "base64-js": "^1.5.1",
177
177
  "commander": "^12.0.0",
178
178
  "flow-enums-runtime": "^0.0.6",
179
- "hermes-compiler": "250829098.0.14",
179
+ "hermes-compiler": "250829098.0.17",
180
180
  "invariant": "^2.2.4",
181
181
  "memoize-one": "^5.0.0",
182
182
  "metro-runtime": "^0.84.3",
@@ -45,7 +45,7 @@ class SPMManager
45
45
  log_warning "If you're using Xcode 15 or earlier you might need to close and reopen the Xcode workspace"
46
46
  unless ENV["USE_FRAMEWORKS"] == "dynamic"
47
47
  @dependencies_by_pod.each do |pod_name, dependencies|
48
- log_warning "Pod #{pod_name} is using swift package(s) #{dependencies.map{|i| i[:products]}.flatten.uniq.join(", ")} with static linking, this might cause linker errors. Consider using USE_FRAMEWORKS=dynamic, see https://github.com/facebook/react-native/pull/44627#issuecomment-2123119711 for more information"
48
+ log_warning "Pod #{pod_name} is using swift package(s) #{dependencies.map{|i| i[:products]}.flatten.uniq.join(", ")} with static linking, this might cause linker errors. Consider using USE_FRAMEWORKS=dynamic, see https://github.com/react/react-native/pull/44627#issuecomment-2123119711 for more information"
49
49
  end
50
50
  end
51
51
  end
@@ -76,7 +76,7 @@ class ReactNativePodsUtils
76
76
  end
77
77
 
78
78
  def self.turn_off_resource_bundle_react_core(installer)
79
- # this is needed for Xcode 14, see more details here https://github.com/facebook/react-native/issues/34673
79
+ # this is needed for Xcode 14, see more details here https://github.com/react/react-native/issues/34673
80
80
  # we should be able to remove this once CocoaPods catches up to it, see more details here https://github.com/CocoaPods/CocoaPods/issues/11402
81
81
  installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result|
82
82
  if pod_name.to_s == 'React-Core'
@@ -244,7 +244,7 @@ class ReactNativePodsUtils
244
244
  # When installing pods with a yarn alias, yarn creates a fake yarn and node executables
245
245
  # in a temporary folder.
246
246
  # Using `node --print "process.argv[0]";` we are able to retrieve the actual path from which node is running.
247
- # see https://github.com/facebook/react-native/issues/43285 for more info. We've tweaked this slightly.
247
+ # see https://github.com/react/react-native/issues/43285 for more info. We've tweaked this slightly.
248
248
  node_binary = Shellwords.escape(`node --print "process.argv[0]"`.strip)
249
249
  system("echo 'export NODE_BINARY=#{node_binary}' > #{file_path}.local")
250
250
  end
@@ -4,7 +4,7 @@
4
4
  # LICENSE file in the root directory of this source tree.
5
5
 
6
6
  version = "{react-native-version}"
7
- source = { :git => 'https://github.com/facebook/react-native.git' }
7
+ source = { :git => 'https://github.com/react/react-native.git' }
8
8
  if version == '1000.0.0'
9
9
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
10
10
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -4,7 +4,7 @@
4
4
  # LICENSE file in the root directory of this source tree.
5
5
 
6
6
  version = "{react-native-version}"
7
- source = { :git => 'https://github.com/facebook/react-native.git' }
7
+ source = { :git => 'https://github.com/react/react-native.git' }
8
8
  if version == '1000.0.0'
9
9
  # This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
10
10
  source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
@@ -62,7 +62,7 @@ if [ -h "test-driver" ]; then
62
62
  rm test-driver
63
63
  fi
64
64
 
65
- # Manually disable gflags include to fix issue https://github.com/facebook/react-native/issues/28446
65
+ # Manually disable gflags include to fix issue https://github.com/react/react-native/issues/28446
66
66
  sed -i.bak -e 's/\@ac_cv_have_libgflags\@/0/' src/glog/logging.h.in && rm src/glog/logging.h.in.bak
67
67
  sed -i.bak -e 's/HAVE_LIB_GFLAGS/HAVE_LIB_GFLAGS_DISABLED/' src/config.h.in && rm src/config.h.in.bak
68
68
 
@@ -1 +1 @@
1
- hermes-v250829098.0.14
1
+ hermes-v250829098.0.17
@@ -4,6 +4,7 @@
4
4
  # LICENSE file in the root directory of this source tree.
5
5
 
6
6
  require "json"
7
+ require "pathname"
7
8
  require_relative "./hermes-utils.rb"
8
9
 
9
10
  begin
@@ -74,7 +75,7 @@ Pod::Spec.new do |spec|
74
75
  else
75
76
  # Hermes v1 is shipping a jsi/hermes.h header which is imported by the hermes.h header
76
77
  # and that file is not present in React Native's JSI
77
- # (see https://github.com/facebook/react-native/tree/main/packages/react-native/ReactCommon/jsi/jsi/ where there is
78
+ # (see https://github.com/react/react-native/tree/main/packages/react-native/ReactCommon/jsi/jsi/ where there is
78
79
  # hermes-interface.h but not hermes.h)
79
80
  ss.source_files = ["destroot/include/hermes/**/*.h", "destroot/include/jsi/hermes.h"]
80
81
  end
@@ -91,9 +92,13 @@ Pod::Spec.new do |spec|
91
92
  hermes_compiler_path = File.dirname(Pod::Executable.execute_command('node', ['-p',
92
93
  "require.resolve(\"hermes-compiler\", {paths: [\"#{react_native_path}\"]})", __dir__]).strip
93
94
  )
95
+ hermesc_path = File.join(hermes_compiler_path, 'hermesc', 'osx-bin', 'hermesc')
96
+
97
+ pods_root = Pod::Config.instance.sandbox.root
98
+ relative_hermesc = Pathname.new(hermesc_path).relative_path_from(pods_root)
94
99
 
95
100
  spec.user_target_xcconfig = {
96
- 'HERMES_CLI_PATH' => "#{hermes_compiler_path}/hermesc/osx-bin/hermesc"
101
+ 'HERMES_CLI_PATH' => "$(PODS_ROOT)/#{relative_hermesc}"
97
102
  }
98
103
  end
99
104
 
@@ -1,2 +1,2 @@
1
1
  HERMES_VERSION_NAME=0.17.0
2
- HERMES_V1_VERSION_NAME=250829098.0.14
2
+ HERMES_V1_VERSION_NAME=250829098.0.17
@@ -42,7 +42,7 @@ export type MeasureLayoutOnSuccessCallback = (
42
42
  * Note, however, that they are not available on composite components that aren't directly backed by a
43
43
  * native view. This will generally include most components that you define in your own app.
44
44
  * For more information, see [Direct Manipulation](https://reactnative.dev/docs/the-new-architecture/direct-manipulation-new-architecture).
45
- * @see https://github.com/facebook/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87
45
+ * @see https://github.com/react/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87
46
46
  */
47
47
  export interface LegacyHostInstanceMethods {
48
48
  /**
@@ -41,7 +41,7 @@ declare global {
41
41
  *
42
42
  * global.XMLHttpRequest = global.originalXMLHttpRequest;
43
43
  *
44
- * @see https://github.com/facebook/react-native/issues/934
44
+ * @see https://github.com/react/react-native/issues/934
45
45
  */
46
46
  const originalXMLHttpRequest: any;
47
47
 
@@ -237,7 +237,7 @@ declare global {
237
237
  /**
238
238
  * React Native's implementation of fetch allows this syntax for uploading files from
239
239
  * local filesystem.
240
- * See https://github.com/facebook/react-native/blob/master/Libraries/Network/convertRequestBody.js#L22
240
+ * See https://github.com/react/react-native/blob/master/Libraries/Network/convertRequestBody.js#L22
241
241
  */
242
242
  interface _SourceUri {
243
243
  uri: string;
@@ -74,7 +74,7 @@ Pod::Spec.new do |spec|
74
74
  'folly/portability/*.h',
75
75
  'folly/system/*.h',
76
76
 
77
- # workaround for https://github.com/facebook/react-native/issues/14326
77
+ # workaround for https://github.com/react/react-native/issues/14326
78
78
  spec.preserve_paths = 'folly/*.h',
79
79
  'folly/algorithm/simd/*.h',
80
80
  'folly/algorithm/simd/detail/*.h',
@@ -28,7 +28,7 @@ Pod::Spec.new do |spec|
28
28
  spec.version = version
29
29
  spec.summary = 'React Native Dependencies'
30
30
  spec.description = 'ReactNativeDependencies is a podspec that contains all the third-party dependencies of React Native.'
31
- spec.homepage = 'https://github.com/facebook/react-native'
31
+ spec.homepage = 'https://github.com/react/react-native'
32
32
  spec.license = package['license']
33
33
  spec.authors = 'meta'
34
34
  spec.platforms = min_supported_versions
@@ -27,7 +27,7 @@ Pod::Spec.new do |spec|
27
27
  'src/symbolize.cc',
28
28
  'src/utilities.cc',
29
29
  'src/vlog_is_on.cc'
30
- # workaround for https://github.com/facebook/react-native/issues/14326
30
+ # workaround for https://github.com/react/react-native/issues/14326
31
31
  spec.preserve_paths = 'src/*.h',
32
32
  'src/base/*.h'
33
33
  spec.exclude_files = "src/windows/**/*"
@@ -40,7 +40,7 @@ export type MeasureLayoutOnSuccessCallback = (
40
40
  * Note, however, that they are not available on composite components that aren't directly backed by a
41
41
  * native view. This will generally include most components that you define in your own app.
42
42
  * For more information, see [Direct Manipulation](https://reactnative.dev/docs/the-new-architecture/direct-manipulation-new-architecture).
43
- * @see https://github.com/facebook/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87
43
+ * @see https://github.com/react/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87
44
44
  */
45
45
  export interface NativeMethods {
46
46
  /**
@@ -123,7 +123,7 @@ export type NativeMethodsMixinType = NativeMethods;
123
123
  /**
124
124
  * Represents a native component, such as those returned from `requireNativeComponent`.
125
125
  *
126
- * @see https://github.com/facebook/react-native/blob/v0.62.0-rc.5/Libraries/Renderer/shims/ReactNativeTypes.js
126
+ * @see https://github.com/react/react-native/blob/v0.62.0-rc.5/Libraries/Renderer/shims/ReactNativeTypes.js
127
127
  *
128
128
  * @todo This should eventually be defined as an AbstractComponent, but that
129
129
  * should first be introduced in the React typings.
@@ -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<<6770958805f9935f28150e371b774f6c>>
7
+ * @generated SignedSource<<ccca8e1da0d30d12a67984ccadfcc654>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Animated/components/AnimatedScrollView.js
@@ -16,7 +16,7 @@ import * as React from "react";
16
16
  type AnimatedScrollViewInstance = React.ComponentRef<typeof ScrollView>;
17
17
  declare const AnimatedScrollView: AnimatedComponentType<ScrollViewProps, AnimatedScrollViewInstance>;
18
18
  /**
19
- * @see https://github.com/facebook/react-native/commit/b8c8562
19
+ * @see https://github.com/react/react-native/commit/b8c8562
20
20
  */
21
21
  declare const $$AnimatedScrollView: typeof AnimatedScrollView;
22
22
  declare type $$AnimatedScrollView = typeof $$AnimatedScrollView;
@@ -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<<c9de7b7b7e9d2c6170460f127e7a2659>>
7
+ * @generated SignedSource<<16bd195d08a4af6933b187a19c8bfc16>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/Button.js
@@ -92,7 +92,7 @@ export type ButtonProps = Readonly<{
92
92
  accessibilityLabel?: string | undefined;
93
93
  /**
94
94
  * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel
95
- * https://github.com/facebook/react-native/issues/34424
95
+ * https://github.com/react/react-native/issues/34424
96
96
  */
97
97
  "aria-label"?: string | undefined;
98
98
  /**
@@ -140,7 +140,7 @@ export type ButtonProps = Readonly<{
140
140
  [button:examples].
141
141
 
142
142
  [button:source]:
143
- https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js
143
+ https://github.com/react/react-native/blob/HEAD/Libraries/Components/Button.js
144
144
 
145
145
  ```jsx
146
146
  <Button
@@ -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<<44061f57137cd78ebc62461ed113f41c>>
7
+ * @generated SignedSource<<6267ad68eabd062fa17a7dbc2291a089>>
8
8
  *
9
9
  * This file was translated from Flow by scripts/js-api/build-types/index.js.
10
10
  * Original file: packages/react-native/Libraries/Components/TextInput/TextInput.flow.js
@@ -732,7 +732,7 @@ type TextInputBaseProps = Readonly<{
732
732
  * - `borderBottomRightRadius`
733
733
  * - `borderBottomLeftRadius`
734
734
  *
735
- * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)
735
+ * see [Issue#7070](https://github.com/react/react-native/issues/7070)
736
736
  * for more detail.
737
737
  *
738
738
  * [Styles](docs/style.html)