react-native 0.86.2 → 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.
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +10 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.kt +7 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +10 -4
- package/ReactCommon/react/renderer/core/EventEmitter.cpp +20 -4
- package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +1 -1
- package/ReactCommon/yoga/Yoga.podspec +1 -1
- package/package.json +10 -10
- package/sdks/.hermesv1version +1 -1
- package/sdks/hermes-engine/hermes-engine.podspec +6 -1
- package/sdks/hermes-engine/version.properties +1 -1
package/React/Base/RCTVersion.m
CHANGED
package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt
CHANGED
|
@@ -900,7 +900,16 @@ internal constructor(
|
|
|
900
900
|
return
|
|
901
901
|
}
|
|
902
902
|
|
|
903
|
-
val viewState =
|
|
903
|
+
val viewState = getNullableViewState(reactTag)
|
|
904
|
+
if (viewState == null) {
|
|
905
|
+
ReactSoftExceptionLogger.logSoftException(
|
|
906
|
+
ReactSoftExceptionLogger.Categories.SURFACE_MOUNTING_MANAGER_MISSING_VIEWSTATE,
|
|
907
|
+
ReactNoCrashSoftException(
|
|
908
|
+
"Unable to find viewState for tag $reactTag for updateOverflowInset"
|
|
909
|
+
),
|
|
910
|
+
)
|
|
911
|
+
return
|
|
912
|
+
}
|
|
904
913
|
// Do not layout Root Views
|
|
905
914
|
if (viewState.isRoot) {
|
|
906
915
|
return
|
|
@@ -87,11 +87,15 @@ public open class IntentModule(reactContext: ReactApplicationContext) :
|
|
|
87
87
|
override fun onHostResume() {
|
|
88
88
|
reactApplicationContext.removeLifecycleEventListener(this)
|
|
89
89
|
synchronized(this@IntentModule) {
|
|
90
|
-
|
|
90
|
+
// getInitialURL can re-enter and re-add to pendingOpenURLPromises when the activity
|
|
91
|
+
// is still null at resume, so drain a snapshot (after clearing the list and listener)
|
|
92
|
+
// to avoid mutating the list being iterated (ConcurrentModificationException).
|
|
93
|
+
val pendingPromises = ArrayList(pendingOpenURLPromises)
|
|
94
|
+
pendingOpenURLPromises.clear()
|
|
95
|
+
initialURLListener = null
|
|
96
|
+
for (pendingPromise in pendingPromises) {
|
|
91
97
|
getInitialURL(pendingPromise)
|
|
92
98
|
}
|
|
93
|
-
initialURLListener = null
|
|
94
|
-
pendingOpenURLPromises.clear()
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
|
|
15
15
|
#define REACT_NATIVE_VERSION_MAJOR 0
|
|
16
16
|
#define REACT_NATIVE_VERSION_MINOR 86
|
|
17
|
-
#define REACT_NATIVE_VERSION_PATCH
|
|
17
|
+
#define REACT_NATIVE_VERSION_PATCH 3
|
|
18
18
|
|
|
19
19
|
namespace facebook::react {
|
|
20
20
|
|
|
21
21
|
struct ReactNativeVersionType {
|
|
22
22
|
int32_t Major = 0;
|
|
23
23
|
int32_t Minor = 86;
|
|
24
|
-
int32_t Patch =
|
|
24
|
+
int32_t Patch = 3;
|
|
25
25
|
std::string_view Prerelease = "";
|
|
26
26
|
};
|
|
27
27
|
|
|
@@ -198,10 +198,6 @@ jsi::Value NativeDOM::getParentNode(
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
auto shadowNode = getShadowNode(rt, nativeNodeReference);
|
|
201
|
-
if (isRootShadowNode(*shadowNode)) {
|
|
202
|
-
// The parent of the root node is the document.
|
|
203
|
-
return jsi::Value{shadowNode->getSurfaceId()};
|
|
204
|
-
}
|
|
205
201
|
|
|
206
202
|
auto currentRevision =
|
|
207
203
|
getCurrentShadowTreeRevision(rt, shadowNode->getSurfaceId());
|
|
@@ -209,6 +205,16 @@ jsi::Value NativeDOM::getParentNode(
|
|
|
209
205
|
return jsi::Value::undefined();
|
|
210
206
|
}
|
|
211
207
|
|
|
208
|
+
// The parent of the surface's root node is the document. Only the actual
|
|
209
|
+
// root node qualifies: nested nodes that carry the `RootNodeKind` trait
|
|
210
|
+
// (e.g. <Modal>, portals/overlays) still have a real parent in the shadow
|
|
211
|
+
// tree and must report it. Otherwise capture/bubble event propagation is
|
|
212
|
+
// silently severed at that boundary (a listener on an ancestor rendered
|
|
213
|
+
// above the modal would never receive descendant focus/blur, etc.).
|
|
214
|
+
if (ShadowNode::sameFamily(*currentRevision, *shadowNode)) {
|
|
215
|
+
return jsi::Value{shadowNode->getSurfaceId()};
|
|
216
|
+
}
|
|
217
|
+
|
|
212
218
|
auto parentShadowNode = dom::getParentNode(currentRevision, *shadowNode);
|
|
213
219
|
if (parentShadowNode == nullptr) {
|
|
214
220
|
return jsi::Value::undefined();
|
|
@@ -134,11 +134,19 @@ void EventEmitter::dispatchEvent(
|
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
SharedEventTarget eventTarget;
|
|
138
|
+
std::weak_ptr<const ShadowNodeFamily> shadowNodeFamily;
|
|
139
|
+
{
|
|
140
|
+
std::scoped_lock lock(DispatchMutex());
|
|
141
|
+
eventTarget = eventTarget_;
|
|
142
|
+
shadowNodeFamily = shadowNodeFamily_;
|
|
143
|
+
}
|
|
144
|
+
|
|
137
145
|
eventDispatcher->dispatchEvent(RawEvent(
|
|
138
146
|
normalizeEventType(std::move(type)),
|
|
139
147
|
std::move(payload),
|
|
140
|
-
|
|
141
|
-
|
|
148
|
+
std::move(eventTarget),
|
|
149
|
+
std::move(shadowNodeFamily),
|
|
142
150
|
category,
|
|
143
151
|
false,
|
|
144
152
|
eventTimestamp));
|
|
@@ -180,11 +188,19 @@ void EventEmitter::dispatchUniqueEvent(
|
|
|
180
188
|
return;
|
|
181
189
|
}
|
|
182
190
|
|
|
191
|
+
SharedEventTarget eventTarget;
|
|
192
|
+
std::weak_ptr<const ShadowNodeFamily> shadowNodeFamily;
|
|
193
|
+
{
|
|
194
|
+
std::scoped_lock lock(DispatchMutex());
|
|
195
|
+
eventTarget = eventTarget_;
|
|
196
|
+
shadowNodeFamily = shadowNodeFamily_;
|
|
197
|
+
}
|
|
198
|
+
|
|
183
199
|
eventDispatcher->dispatchUniqueEvent(RawEvent(
|
|
184
200
|
normalizeEventType(std::move(type)),
|
|
185
201
|
std::move(payload),
|
|
186
|
-
|
|
187
|
-
|
|
202
|
+
std::move(eventTarget),
|
|
203
|
+
std::move(shadowNodeFamily),
|
|
188
204
|
RawEvent::Category::Continuous,
|
|
189
205
|
true,
|
|
190
206
|
eventTimestamp));
|
|
@@ -361,7 +361,7 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
|
|
|
361
361
|
font = [UIFont fontWithName:fontProperties.family size:effectiveFontSize];
|
|
362
362
|
if (font != nullptr) {
|
|
363
363
|
fontNames = [UIFont fontNamesForFamilyName:font.familyName];
|
|
364
|
-
fontWeight = (fontWeight != 0.0)
|
|
364
|
+
fontWeight = (fontWeight != 0.0) ? fontWeight : RCTGetFontWeight(font);
|
|
365
365
|
} else {
|
|
366
366
|
// Failback to system font.
|
|
367
367
|
font = RCTDefaultFontWithFontProperties(fontProperties);
|
|
@@ -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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.86.
|
|
3
|
+
"version": "0.86.3",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"featureflags": "node ./scripts/featureflags/index.js"
|
|
150
150
|
},
|
|
151
151
|
"peerDependencies": {
|
|
152
|
-
"@react-native/jest-preset": "0.86.
|
|
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.
|
|
166
|
-
"@react-native/codegen": "0.86.
|
|
167
|
-
"@react-native/community-cli-plugin": "0.86.
|
|
168
|
-
"@react-native/gradle-plugin": "0.86.
|
|
169
|
-
"@react-native/js-polyfills": "0.86.
|
|
170
|
-
"@react-native/normalize-colors": "0.86.
|
|
171
|
-
"@react-native/virtualized-lists": "0.86.
|
|
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.
|
|
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",
|
package/sdks/.hermesv1version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
hermes-v250829098.0.
|
|
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
|
|
@@ -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' => "
|
|
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.
|
|
2
|
+
HERMES_V1_VERSION_NAME=250829098.0.17
|