@office-iss/react-native-win32 0.0.0-canary.295 → 0.0.0-canary.297

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 (143) hide show
  1. package/.flowconfig +3 -1
  2. package/CHANGELOG.json +37 -1
  3. package/CHANGELOG.md +25 -8
  4. package/Libraries/Animated/Animated.js +0 -1
  5. package/Libraries/Animated/Animated.js.flow +0 -1
  6. package/Libraries/Animated/AnimatedExports.js +0 -1
  7. package/Libraries/Animated/AnimatedExports.js.flow +1 -2
  8. package/Libraries/Animated/animations/Animation.js +5 -2
  9. package/Libraries/Animated/components/AnimatedScrollView.js +53 -52
  10. package/Libraries/Animated/createAnimatedComponent.js +37 -33
  11. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  12. package/Libraries/Animated/nodes/AnimatedProps.js +1 -1
  13. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  14. package/Libraries/AppState/AppState.js +6 -1
  15. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -18
  16. package/Libraries/Components/Button.js +2 -2
  17. package/Libraries/Components/Button.win32.js +2 -2
  18. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +2 -3
  19. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +2 -1
  20. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  21. package/Libraries/Components/Pressable/Pressable.js +9 -6
  22. package/Libraries/Components/Pressable/Pressable.win32.js +9 -6
  23. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  24. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +13 -1
  25. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  26. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -5
  27. package/Libraries/Components/ScrollView/ScrollView.js +18 -12
  28. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  29. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  30. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  31. package/Libraries/Components/Switch/Switch.js +8 -2
  32. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -5
  33. package/Libraries/Components/TextInput/TextInput.flow.js +1 -5
  34. package/Libraries/Components/TextInput/TextInput.flow.win32.js +1 -5
  35. package/Libraries/Components/TextInput/TextInput.js +26 -25
  36. package/Libraries/Components/TextInput/TextInput.win32.js +27 -25
  37. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  38. package/Libraries/Components/Touchable/TouchableHighlight.js +9 -4
  39. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  40. package/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +2 -0
  41. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -3
  42. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  43. package/Libraries/Components/View/View.js +111 -25
  44. package/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  45. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  46. package/Libraries/Core/Devtools/loadBundleFromServer.win32.js +49 -7
  47. package/Libraries/Core/InitializeCore.js +1 -22
  48. package/Libraries/Core/ReactNativeVersion.js +3 -2
  49. package/Libraries/Debugging/DebuggingOverlay.js +6 -8
  50. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  51. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  52. package/Libraries/EventEmitter/NativeEventEmitter.js +1 -1
  53. package/Libraries/Image/AssetRegistry.js +4 -10
  54. package/Libraries/Image/AssetSourceResolver.js +17 -4
  55. package/Libraries/Image/Image.android.js +112 -106
  56. package/Libraries/Image/Image.ios.js +10 -2
  57. package/Libraries/Image/Image.win32.js +11 -3
  58. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  59. package/Libraries/Image/RelativeImageStub.js +1 -0
  60. package/Libraries/Lists/FlatList.d.ts +9 -5
  61. package/Libraries/Lists/FlatList.js +1 -1
  62. package/Libraries/Lists/SectionListModern.js +9 -3
  63. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  64. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  65. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +2 -1
  66. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  67. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.win32.js +3 -2
  68. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  69. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  70. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  71. package/Libraries/ReactNative/RootTag.js +2 -2
  72. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  73. package/Libraries/Renderer/shims/ReactNativeTypes.js +21 -25
  74. package/Libraries/Renderer/shims/ReactNativeTypes.win32.js +270 -0
  75. package/Libraries/StyleSheet/StyleSheetExports.js.flow +3 -1
  76. package/Libraries/StyleSheet/StyleSheetTypes.js +4 -3
  77. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  78. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  79. package/Libraries/StyleSheet/processFilter.js +0 -1
  80. package/Libraries/Text/Text.d.ts +7 -0
  81. package/Libraries/Text/Text.js +255 -244
  82. package/Libraries/Text/Text.win32.js +293 -284
  83. package/Libraries/Text/TextAncestor.js +3 -2
  84. package/Libraries/Text/TextProps.js +2 -34
  85. package/Libraries/Text/TextProps.win32.js +2 -33
  86. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  87. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  88. package/Libraries/Utilities/PlatformTypes.js +1 -1
  89. package/Libraries/vendor/core/ErrorUtils.js +28 -4
  90. package/index.js +0 -1
  91. package/jest/mockNativeComponent.js +2 -1
  92. package/jest/renderer.js +0 -1
  93. package/jest/resolver.js +31 -0
  94. package/jest/setup.js +1 -1
  95. package/overrides.json +27 -20
  96. package/package.json +13 -13
  97. package/src/private/animated/NativeAnimatedHelper.js +6 -1
  98. package/src/private/animated/NativeAnimatedHelper.win32.js +6 -1
  99. package/src/private/animated/createAnimatedPropsHook.js +11 -4
  100. package/src/private/animated/createAnimatedPropsMemoHook.js +0 -1
  101. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  102. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  103. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  104. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  105. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  106. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  107. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.win32.js +8 -9
  108. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  109. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  110. package/src/private/featureflags/ReactNativeFeatureFlags.js +39 -4
  111. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -2
  112. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  113. package/src/private/styles/composeStyles.js +12 -5
  114. package/src/private/webapis/dom/events/Event.js +3 -0
  115. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  116. package/src/private/webapis/dom/nodes/ReactNativeElement.js +6 -23
  117. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +3 -1
  118. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  119. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +3 -0
  120. package/src/private/webapis/dom/oldstylecollections/NodeList.js +3 -0
  121. package/src/private/webapis/errors/DOMException.js +166 -0
  122. package/src/private/webapis/geometry/DOMRect.js +5 -0
  123. package/src/private/webapis/geometry/DOMRectList.js +3 -0
  124. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  125. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  126. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  127. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +80 -18
  128. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  129. package/src/private/webapis/mutationobserver/MutationObserver.js +23 -33
  130. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  131. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +56 -24
  132. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -1
  133. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  134. package/src/private/webapis/performance/Performance.js +19 -8
  135. package/src/private/webapis/performance/PerformanceEntry.js +4 -0
  136. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  137. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +2 -0
  138. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  139. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  140. package/src/types/globals.d.ts +42 -0
  141. package/src-win/Libraries/Components/View/ViewAccessibility.d.ts +1 -0
  142. package/src-win/Libraries/Text/Text.d.ts +7 -0
  143. package/types/index.d.ts +1 -1
@@ -13,12 +13,14 @@ import type {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';
13
13
  import Pressability, {
14
14
  type PressabilityConfig,
15
15
  } from '../../Pressability/Pressability';
16
+ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
16
17
  import {findHostInstance_DEPRECATED} from '../../ReactNative/RendererProxy';
17
18
  import processColor from '../../StyleSheet/processColor';
18
19
  import Platform from '../../Utilities/Platform';
19
20
  import {Commands} from '../View/ViewNativeComponent';
20
21
  import invariant from 'invariant';
21
22
  import * as React from 'react';
23
+ import {cloneElement} from 'react';
22
24
 
23
25
  type TVProps = {
24
26
  /**
@@ -379,9 +379,13 @@ class TouchableOpacity extends React.Component<
379
379
  const Touchable: component(
380
380
  ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
381
381
  ...props: TouchableOpacityProps
382
- ) = React.forwardRef((props, ref) => (
383
- <TouchableOpacity {...props} hostRef={ref} />
384
- ));
382
+ ) = ({
383
+ ref,
384
+ ...props
385
+ }: {
386
+ ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,
387
+ ...TouchableOpacityProps,
388
+ }) => <TouchableOpacity {...props} hostRef={ref} />;
385
389
 
386
390
  Touchable.displayName = 'TouchableOpacity';
387
391
 
@@ -23,7 +23,7 @@ import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
23
23
  import usePressability from '../../Pressability/usePressability';
24
24
  import {type ViewStyleProp} from '../../StyleSheet/StyleSheet';
25
25
  import * as React from 'react';
26
- import {useMemo} from 'react';
26
+ import {cloneElement, useMemo} from 'react';
27
27
 
28
28
  export type TouchableWithoutFeedbackPropsIOS = {};
29
29
 
@@ -283,5 +283,5 @@ export default function TouchableWithoutFeedback(
283
283
  }
284
284
 
285
285
  // $FlowFixMe[incompatible-call]
286
- return React.cloneElement(element, elementProps, ...children);
286
+ return cloneElement(element, elementProps, ...children);
287
287
  }
@@ -10,12 +10,19 @@
10
10
 
11
11
  import type {ViewProps} from './ViewPropTypes';
12
12
 
13
+ import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
13
14
  import TextAncestor from '../../Text/TextAncestor';
14
15
  import ViewNativeComponent from './ViewNativeComponent';
15
16
  import * as React from 'react';
17
+ import {use} from 'react';
16
18
 
17
19
  export type Props = ViewProps;
18
20
 
21
+ type PropsWithRef = $ReadOnly<{
22
+ ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
23
+ ...ViewProps,
24
+ }>;
25
+
19
26
  /**
20
27
  * The most fundamental component for building a UI, View is a container that
21
28
  * supports layout with flexbox, style, some touch handling, and accessibility
@@ -23,12 +30,99 @@ export type Props = ViewProps;
23
30
  *
24
31
  * @see https://reactnative.dev/docs/view
25
32
  */
26
- const View: component(
27
- ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
28
- ...props: ViewProps
29
- ) = React.forwardRef(
30
- (
31
- {
33
+ function View(props: PropsWithRef): React.Node {
34
+ const hasTextAncestor = use(TextAncestor);
35
+
36
+ let actualView;
37
+ if (ReactNativeFeatureFlags.reduceDefaultPropsInView()) {
38
+ const {
39
+ accessibilityState,
40
+ accessibilityValue,
41
+ 'aria-busy': ariaBusy,
42
+ 'aria-checked': ariaChecked,
43
+ 'aria-disabled': ariaDisabled,
44
+ 'aria-expanded': ariaExpanded,
45
+ 'aria-hidden': ariaHidden,
46
+ 'aria-label': ariaLabel,
47
+ 'aria-labelledby': ariaLabelledBy,
48
+ 'aria-live': ariaLive,
49
+ 'aria-selected': ariaSelected,
50
+ 'aria-valuemax': ariaValueMax,
51
+ 'aria-valuemin': ariaValueMin,
52
+ 'aria-valuenow': ariaValueNow,
53
+ 'aria-valuetext': ariaValueText,
54
+ id,
55
+ tabIndex,
56
+ ...otherProps
57
+ } = props;
58
+
59
+ // Since we destructured props, we can now treat it as mutable
60
+ const processedProps = otherProps as {...PropsWithRef};
61
+
62
+ const parsedAriaLabelledBy = ariaLabelledBy?.split(/\s*,\s*/g);
63
+ if (parsedAriaLabelledBy !== undefined) {
64
+ processedProps.accessibilityLabelledBy = parsedAriaLabelledBy;
65
+ }
66
+
67
+ if (ariaLabel !== undefined) {
68
+ processedProps.accessibilityLabel = ariaLabel;
69
+ }
70
+
71
+ if (ariaLive !== undefined) {
72
+ processedProps.accessibilityLiveRegion =
73
+ ariaLive === 'off' ? 'none' : ariaLive;
74
+ }
75
+
76
+ if (ariaHidden !== undefined) {
77
+ processedProps.accessibilityElementsHidden = ariaHidden;
78
+ if (ariaHidden === true) {
79
+ processedProps.importantForAccessibility = 'no-hide-descendants';
80
+ }
81
+ }
82
+
83
+ if (id !== undefined) {
84
+ processedProps.nativeID = id;
85
+ }
86
+
87
+ if (tabIndex !== undefined) {
88
+ processedProps.focusable = !tabIndex;
89
+ }
90
+
91
+ if (
92
+ accessibilityState != null ||
93
+ ariaBusy != null ||
94
+ ariaChecked != null ||
95
+ ariaDisabled != null ||
96
+ ariaExpanded != null ||
97
+ ariaSelected != null
98
+ ) {
99
+ processedProps.accessibilityState = {
100
+ busy: ariaBusy ?? accessibilityState?.busy,
101
+ checked: ariaChecked ?? accessibilityState?.checked,
102
+ disabled: ariaDisabled ?? accessibilityState?.disabled,
103
+ expanded: ariaExpanded ?? accessibilityState?.expanded,
104
+ selected: ariaSelected ?? accessibilityState?.selected,
105
+ };
106
+ }
107
+
108
+ if (
109
+ accessibilityValue != null ||
110
+ ariaValueMax != null ||
111
+ ariaValueMin != null ||
112
+ ariaValueNow != null ||
113
+ ariaValueText != null
114
+ ) {
115
+ processedProps.accessibilityValue = {
116
+ max: ariaValueMax ?? accessibilityValue?.max,
117
+ min: ariaValueMin ?? accessibilityValue?.min,
118
+ now: ariaValueNow ?? accessibilityValue?.now,
119
+ text: ariaValueText ?? accessibilityValue?.text,
120
+ };
121
+ }
122
+
123
+ actualView = <ViewNativeComponent {...processedProps} />;
124
+ } else {
125
+ const {
32
126
  accessibilityElementsHidden,
33
127
  accessibilityLabel,
34
128
  accessibilityLabelledBy,
@@ -54,10 +148,7 @@ const View: component(
54
148
  nativeID,
55
149
  tabIndex,
56
150
  ...otherProps
57
- }: ViewProps,
58
- forwardedRef,
59
- ) => {
60
- const hasTextAncestor = React.useContext(TextAncestor);
151
+ } = props;
61
152
  const _accessibilityLabelledBy =
62
153
  ariaLabelledBy?.split(/\s*,\s*/g) ?? accessibilityLabelledBy;
63
154
 
@@ -91,7 +182,7 @@ const View: component(
91
182
  }
92
183
  : undefined;
93
184
 
94
- const actualView = (
185
+ actualView = (
95
186
  <ViewNativeComponent
96
187
  {...otherProps}
97
188
  accessibilityLiveRegion={
@@ -109,22 +200,17 @@ const View: component(
109
200
  : importantForAccessibility
110
201
  }
111
202
  nativeID={id ?? nativeID}
112
- ref={forwardedRef}
113
203
  />
114
204
  );
205
+ }
115
206
 
116
- if (hasTextAncestor) {
117
- return (
118
- <TextAncestor.Provider value={false}>
119
- {actualView}
120
- </TextAncestor.Provider>
121
- );
122
- }
207
+ if (hasTextAncestor) {
208
+ return <TextAncestor value={false}>{actualView}</TextAncestor>;
209
+ }
210
+ return actualView;
211
+ }
123
212
 
124
- return actualView;
125
- },
213
+ export default View as component(
214
+ ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,
215
+ ...props: ViewProps
126
216
  );
127
-
128
- View.displayName = 'View';
129
-
130
- export default View;
@@ -417,6 +417,7 @@ export type AccessibilityAnnotationInfo = Readonly<{
417
417
  author?: string;
418
418
  dateTime?: string;
419
419
  target?: string;
420
+ replyCount?: number;
420
421
  }>;
421
422
 
422
423
  // [Win32]
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import Networking from '../../Network/RCTNetworking';
@@ -20,6 +19,34 @@ let pendingRequests = 0;
20
19
 
21
20
  const cachedPromisesByUrl = new Map<string, Promise<void>>();
22
21
 
22
+ export class LoadBundleFromServerError extends Error {
23
+ url: string;
24
+ isTimeout: boolean;
25
+ constructor(
26
+ message: string,
27
+ url: string,
28
+ isTimeout: boolean,
29
+ options?: {cause: mixed, ...},
30
+ ): void {
31
+ super(message, options);
32
+ this.url = url;
33
+ this.isTimeout = isTimeout;
34
+ this.name = 'LoadBundleFromServerError';
35
+ }
36
+ }
37
+
38
+ export class LoadBundleFromServerRequestError extends LoadBundleFromServerError {
39
+ constructor(
40
+ message: string,
41
+ url: string,
42
+ isTimeout: boolean,
43
+ options?: {cause: mixed, ...},
44
+ ): void {
45
+ super(message, url, isTimeout, options);
46
+ this.name = 'LoadBundleFromServerRequestError';
47
+ }
48
+ }
49
+
23
50
  function asyncRequest(
24
51
  url: string,
25
52
  ): Promise<{body: string, headers: {[string]: string}}> {
@@ -62,10 +89,19 @@ function asyncRequest(
62
89
  );
63
90
  completeListener = Networking.addListener(
64
91
  'didCompleteNetworkResponse',
65
- ([requestId, error]) => {
92
+ ([requestId, errorMessage, isTimeout]) => {
66
93
  if (requestId === id) {
67
- if (error) {
68
- reject(error);
94
+ if (errorMessage) {
95
+ reject(
96
+ new LoadBundleFromServerRequestError(
97
+ 'Could not load bundle',
98
+ url,
99
+ isTimeout,
100
+ {
101
+ cause: errorMessage,
102
+ },
103
+ ),
104
+ );
69
105
  } else {
70
106
  //$FlowFixMe[incompatible-call]
71
107
  resolve({body: responseText, headers});
@@ -122,9 +158,15 @@ export default function loadBundleFromServer(
122
158
  headers['Content-Type'].indexOf('application/json') >= 0
123
159
  ) {
124
160
  // Errors are returned as JSON.
125
- throw new Error(
126
- JSON.parse(body).message ||
127
- `Unknown error fetching '${bundlePathAndQuery}'`,
161
+ throw new LoadBundleFromServerError(
162
+ 'Could not load bundle',
163
+ bundlePathAndQuery,
164
+ false, // isTimeout
165
+ {
166
+ cause:
167
+ JSON.parse(body).message ||
168
+ `Unknown error fetching '${bundlePathAndQuery}'`,
169
+ },
128
170
  );
129
171
  }
130
172
 
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import Networking from '../../Network/RCTNetworking';
@@ -20,6 +19,34 @@ let pendingRequests = 0;
20
19
 
21
20
  const cachedPromisesByUrl = new Map<string, Promise<void>>();
22
21
 
22
+ export class LoadBundleFromServerError extends Error {
23
+ url: string;
24
+ isTimeout: boolean;
25
+ constructor(
26
+ message: string,
27
+ url: string,
28
+ isTimeout: boolean,
29
+ options?: {cause: mixed, ...},
30
+ ): void {
31
+ super(message, options);
32
+ this.url = url;
33
+ this.isTimeout = isTimeout;
34
+ this.name = 'LoadBundleFromServerError';
35
+ }
36
+ }
37
+
38
+ export class LoadBundleFromServerRequestError extends LoadBundleFromServerError {
39
+ constructor(
40
+ message: string,
41
+ url: string,
42
+ isTimeout: boolean,
43
+ options?: {cause: mixed, ...},
44
+ ): void {
45
+ super(message, url, isTimeout, options);
46
+ this.name = 'LoadBundleFromServerRequestError';
47
+ }
48
+ }
49
+
23
50
  function asyncRequest(
24
51
  url: string,
25
52
  ): Promise<{body: string, headers: {[string]: string}}> {
@@ -62,10 +89,19 @@ function asyncRequest(
62
89
  );
63
90
  completeListener = Networking.addListener(
64
91
  'didCompleteNetworkResponse',
65
- ([requestId, error]) => {
92
+ ([requestId, errorMessage, isTimeout]) => {
66
93
  if (requestId === id) {
67
- if (error) {
68
- reject(error);
94
+ if (errorMessage) {
95
+ reject(
96
+ new LoadBundleFromServerRequestError(
97
+ 'Could not load bundle',
98
+ url,
99
+ isTimeout,
100
+ {
101
+ cause: errorMessage,
102
+ },
103
+ ),
104
+ );
69
105
  } else {
70
106
  //$FlowFixMe[incompatible-call]
71
107
  resolve({body: responseText, headers});
@@ -122,9 +158,15 @@ export default function loadBundleFromServer(
122
158
  headers['Content-Type'].indexOf('application/json') >= 0
123
159
  ) {
124
160
  // Errors are returned as JSON.
125
- throw new Error(
126
- JSON.parse(body).message ||
127
- `Unknown error fetching '${bundlePathAndQuery}'`,
161
+ throw new LoadBundleFromServerError(
162
+ 'Could not load bundle',
163
+ bundlePathAndQuery,
164
+ false, // isTimeout
165
+ {
166
+ cause:
167
+ JSON.parse(body).message ||
168
+ `Unknown error fetching '${bundlePathAndQuery}'`,
169
+ },
128
170
  );
129
171
  }
130
172
 
@@ -28,28 +28,7 @@
28
28
 
29
29
  const start = Date.now();
30
30
 
31
- require('./setUpGlobals');
32
- require('../../src/private/setup/setUpDOM').default();
33
- require('./setUpPerformance');
34
- require('./polyfillPromise');
35
- require('./setUpTimers');
36
- if (__DEV__) {
37
- require('./setUpReactDevTools');
38
- }
39
- require('./setUpErrorHandling');
40
- require('./setUpRegeneratorRuntime');
41
- require('./setUpXHR');
42
- require('./setUpAlert');
43
- require('./setUpNavigator');
44
- require('./setUpBatchedBridge');
45
- require('./setUpSegmentFetcher');
46
- if (__DEV__) {
47
- require('./checkNativeVersion');
48
- require('./setUpDeveloperTools');
49
- require('../LogBox/LogBox').default.install();
50
- }
51
-
52
- require('../ReactNative/AppRegistry');
31
+ require('../../src/private/setup/setUpDefaultReactNativeEnvironment').default();
53
32
 
54
33
  const GlobalPerformanceLogger =
55
34
  require('../Utilities/GlobalPerformanceLogger').default;
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  * @flow strict
8
+ * @noformat
8
9
  * @generated by scripts/releases/set-version.js
9
10
  */
10
11
 
@@ -15,7 +16,7 @@ export const version: $ReadOnly<{
15
16
  prerelease: string | null,
16
17
  }> = {
17
18
  major: 0,
18
- minor: 80,
19
+ minor: 81,
19
20
  patch: 0,
20
- prerelease: 'nightly-20250506-3ac16dd6a',
21
+ prerelease: 'nightly-20250521-3cb70bb6a',
21
22
  };
@@ -31,10 +31,11 @@ type DebuggingOverlayHandle = {
31
31
  clearElementsHighlight(): void,
32
32
  };
33
33
 
34
- function DebuggingOverlay(
35
- _props: {},
34
+ function DebuggingOverlay({
35
+ ref,
36
+ }: {
36
37
  ref: React.RefSetter<DebuggingOverlayHandle>,
37
- ): React.Node {
38
+ }): React.Node {
38
39
  useImperativeHandle(
39
40
  ref,
40
41
  () => ({
@@ -102,9 +103,6 @@ const styles = StyleSheet.create({
102
103
  },
103
104
  });
104
105
 
105
- const DebuggingOverlayWithForwardedRef: component(
106
+ export default DebuggingOverlay as component(
106
107
  ref: React.RefSetter<DebuggingOverlayHandle>,
107
- ...props: {}
108
- ) = React.forwardRef(DebuggingOverlay);
109
-
110
- export default DebuggingOverlayWithForwardedRef;
108
+ );
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {HostInstance} from '../../src/private/types/HostInstance';
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {
@@ -52,7 +52,7 @@ export default class NativeEventEmitter<
52
52
  {
53
53
  _nativeModule: ?NativeModule;
54
54
 
55
- constructor(nativeModule: ?NativeModule) {
55
+ constructor(nativeModule?: ?NativeModule) {
56
56
  if (Platform.OS === 'ios') {
57
57
  invariant(
58
58
  nativeModule != null,
@@ -8,13 +8,7 @@
8
8
  * @format
9
9
  */
10
10
 
11
- 'use strict';
12
-
13
- import type {PackagerAsset} from '@react-native/assets-registry/registry';
14
-
15
- const AssetRegistry = require('@react-native/assets-registry/registry') as {
16
- registerAsset: (asset: PackagerAsset) => number,
17
- getAssetByID: (assetId: number) => PackagerAsset,
18
- };
19
-
20
- module.exports = AssetRegistry;
11
+ export {
12
+ registerAsset,
13
+ getAssetByID,
14
+ } from '@react-native/assets-registry/registry';
@@ -18,10 +18,23 @@ export type ResolvedAssetSource = {
18
18
  +scale: number,
19
19
  };
20
20
 
21
- import type {
22
- AssetDestPathResolver,
23
- PackagerAsset,
24
- } from '@react-native/assets-registry/registry';
21
+ // From @react-native/assets-registry
22
+ type AssetDestPathResolver = 'android' | 'generic';
23
+
24
+ // From @react-native/assets-registry
25
+ type PackagerAsset = $ReadOnly<{
26
+ __packager_asset: boolean,
27
+ fileSystemLocation: string,
28
+ httpServerLocation: string,
29
+ width: ?number,
30
+ height: ?number,
31
+ scales: Array<number>,
32
+ hash: string,
33
+ name: string,
34
+ type: string,
35
+ resolver?: AssetDestPathResolver,
36
+ ...
37
+ }>;
25
38
 
26
39
  const PixelRatio = require('../Utilities/PixelRatio').default;
27
40
  const Platform = require('../Utilities/Platform').default;