@office-iss/react-native-win32 0.0.0-canary.258 → 0.0.0-canary.259

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 (55) hide show
  1. package/.flowconfig +2 -4
  2. package/CHANGELOG.json +16 -1
  3. package/CHANGELOG.md +16 -8
  4. package/Libraries/Alert/Alert.js +3 -0
  5. package/Libraries/Animated/nodes/AnimatedValue.js +1 -0
  6. package/Libraries/Animated/useAnimatedProps.js +68 -3
  7. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  8. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -0
  9. package/Libraries/Components/TextInput/TextInput.js +204 -73
  10. package/Libraries/Components/TextInput/TextInput.win32.js +204 -79
  11. package/Libraries/Components/View/ReactNativeStyleAttributes.js +11 -0
  12. package/Libraries/Core/ErrorHandlers.js +9 -0
  13. package/Libraries/Core/ExceptionsManager.js +2 -0
  14. package/Libraries/Core/ReactFiberErrorDialog.js +3 -0
  15. package/Libraries/Core/ReactNativeVersion.js +1 -1
  16. package/Libraries/Core/setUpReactRefresh.js +0 -4
  17. package/Libraries/Image/ImageViewNativeComponent.js +1 -0
  18. package/Libraries/Interaction/TaskQueue.js +1 -0
  19. package/Libraries/Lists/SectionList.js +1 -1
  20. package/Libraries/LogBox/Data/LogBoxData.js +1 -0
  21. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  22. package/Libraries/NativeComponent/BaseViewConfig.ios.js +3 -0
  23. package/Libraries/NativeComponent/BaseViewConfig.win32.js +3 -0
  24. package/Libraries/NativeComponent/NativeComponentRegistry.js +9 -2
  25. package/Libraries/ReactNative/BridgelessUIManager.js +1 -0
  26. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
  27. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +46 -19
  28. package/Libraries/StyleSheet/StyleSheetTypes.js +48 -23
  29. package/Libraries/StyleSheet/processBoxShadow.js +211 -0
  30. package/Libraries/StyleSheet/processFilter.js +24 -14
  31. package/Libraries/Text/Text.js +394 -212
  32. package/Libraries/Text/Text.win32.js +442 -245
  33. package/Libraries/TurboModule/TurboModuleRegistry.js +13 -50
  34. package/Libraries/Types/CodegenTypes.js +3 -1
  35. package/Libraries/Utilities/HMRClient.js +1 -0
  36. package/Libraries/Utilities/Platform.android.js +1 -1
  37. package/Libraries/Utilities/Platform.d.ts +1 -1
  38. package/Libraries/Utilities/Platform.flow.js +2 -2
  39. package/Libraries/Utilities/Platform.flow.win32.js +3 -3
  40. package/Libraries/Utilities/Platform.ios.js +1 -1
  41. package/Libraries/Utilities/Platform.win32.js +1 -1
  42. package/Libraries/vendor/emitter/EventEmitter.js +1 -0
  43. package/jest/setup.js +8 -1
  44. package/overrides.json +9 -9
  45. package/package.json +12 -12
  46. package/src/private/featureflags/ReactNativeFeatureFlags.js +65 -18
  47. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +11 -4
  48. package/src/private/specs/modules/NativeLinkingManager.js +1 -1
  49. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +1 -1
  50. package/src/private/specs/modules/NativePlatformConstantsIOS.js +1 -1
  51. package/src/private/specs/modules/NativePlatformConstantsWin.js +8 -1
  52. package/src/private/webapis/performance/PerformanceEntry.js +1 -1
  53. package/src/private/webapis/performance/RawPerformanceEntry.js +5 -0
  54. package/types/experimental.d.ts +12 -1
  55. package/Libraries/Text/TextOptimized.js +0 -538
@@ -16,52 +16,25 @@ const NativeModules = require('../BatchedBridge/NativeModules');
16
16
 
17
17
  const turboModuleProxy = global.__turboModuleProxy;
18
18
 
19
- const moduleLoadHistory = {
20
- NativeModules: ([]: Array<string>),
21
- TurboModules: ([]: Array<string>),
22
- NotFound: ([]: Array<string>),
23
- };
19
+ const useLegacyNativeModuleInterop =
20
+ global.RN$Bridgeless !== true || global.RN$TurboInterop === true;
24
21
 
25
- function isBridgeless() {
26
- return global.RN$Bridgeless === true;
27
- }
28
-
29
- function isTurboModuleInteropEnabled() {
30
- return global.RN$TurboInterop === true;
31
- }
32
-
33
- // TODO(154308585): Remove "module not found" debug info logging
34
- function shouldReportDebugInfo() {
35
- return true;
36
- }
37
-
38
- // TODO(148943970): Consider reversing the lookup here:
39
- // Lookup on __turboModuleProxy, then lookup on nativeModuleProxy
40
22
  function requireModule<T: TurboModule>(name: string): ?T {
41
- if (!isBridgeless() || isTurboModuleInteropEnabled()) {
42
- // Backward compatibility layer during migration.
43
- const legacyModule = NativeModules[name];
44
- if (legacyModule != null) {
45
- if (shouldReportDebugInfo()) {
46
- moduleLoadHistory.NativeModules.push(name);
47
- }
48
- return ((legacyModule: $FlowFixMe): T);
49
- }
50
- }
51
-
52
23
  if (turboModuleProxy != null) {
53
24
  const module: ?T = turboModuleProxy(name);
54
25
  if (module != null) {
55
- if (shouldReportDebugInfo()) {
56
- moduleLoadHistory.TurboModules.push(name);
57
- }
58
26
  return module;
59
27
  }
60
28
  }
61
29
 
62
- if (shouldReportDebugInfo() && !moduleLoadHistory.NotFound.includes(name)) {
63
- moduleLoadHistory.NotFound.push(name);
30
+ if (useLegacyNativeModuleInterop) {
31
+ // Backward compatibility layer during migration.
32
+ const legacyModule: ?T = NativeModules[name];
33
+ if (legacyModule != null) {
34
+ return legacyModule;
35
+ }
64
36
  }
37
+
65
38
  return null;
66
39
  }
67
40
 
@@ -71,20 +44,10 @@ export function get<T: TurboModule>(name: string): ?T {
71
44
 
72
45
  export function getEnforcing<T: TurboModule>(name: string): T {
73
46
  const module = requireModule<T>(name);
74
- let message =
47
+ invariant(
48
+ module != null,
75
49
  `TurboModuleRegistry.getEnforcing(...): '${name}' could not be found. ` +
76
- 'Verify that a module by this name is registered in the native binary.';
77
-
78
- if (shouldReportDebugInfo()) {
79
- message +=
80
- ' Bridgeless mode: ' + (isBridgeless() ? 'true' : 'false') + '. ';
81
- message +=
82
- 'TurboModule interop: ' +
83
- (isTurboModuleInteropEnabled() ? 'true' : 'false') +
84
- '. ';
85
- message += 'Modules loaded: ' + JSON.stringify(moduleLoadHistory);
86
- }
87
-
88
- invariant(module != null, message);
50
+ 'Verify that a module by this name is registered in the native binary.',
51
+ );
89
52
  return module;
90
53
  }
@@ -42,4 +42,6 @@ type DefaultTypes = number | boolean | string | $ReadOnlyArray<string>;
42
42
  // eslint-disable-next-line no-unused-vars
43
43
  export type WithDefault<Type: DefaultTypes, Value: ?Type | string> = ?Type;
44
44
 
45
- export type EventEmitter<T> = (handler: (T) => mixed) => EventSubscription;
45
+ export type EventEmitter<T> = (
46
+ handler: (T) => void | Promise<void>,
47
+ ) => EventSubscription;
@@ -379,6 +379,7 @@ function showCompileError() {
379
379
 
380
380
  /* $FlowFixMe[class-object-subtyping] added when improving typing for this
381
381
  * parameters */
382
+ // $FlowFixMe[incompatible-type]
382
383
  const error: ExtendedError = new Error(message);
383
384
  // Symbolicating compile errors is wasted effort
384
385
  // because the stack trace is meaningless:
@@ -31,7 +31,7 @@ const Platform: PlatformType = {
31
31
  major: number,
32
32
  minor: number,
33
33
  patch: number,
34
- prerelease: ?number,
34
+ prerelease: ?string,
35
35
  |},
36
36
  Version: number,
37
37
  Release: string,
@@ -24,7 +24,7 @@ type PlatformConstants = {
24
24
  major: number;
25
25
  minor: number;
26
26
  patch: number;
27
- prerelease?: number | null | undefined;
27
+ prerelease?: string | null | undefined;
28
28
  };
29
29
  };
30
30
  interface PlatformStatic {
@@ -32,7 +32,7 @@ type IOSPlatform = {
32
32
  major: number,
33
33
  minor: number,
34
34
  patch: number,
35
- prerelease: ?number,
35
+ prerelease: ?string,
36
36
  |},
37
37
  systemName: string,
38
38
  isMacCatalyst?: boolean,
@@ -65,7 +65,7 @@ type AndroidPlatform = {
65
65
  major: number,
66
66
  minor: number,
67
67
  patch: number,
68
- prerelease: ?number,
68
+ prerelease: ?string,
69
69
  |},
70
70
  Version: number,
71
71
  Release: string,
@@ -34,7 +34,7 @@ type IOSPlatform = {
34
34
  major: number,
35
35
  minor: number,
36
36
  patch: number,
37
- prerelease: ?string | number,
37
+ prerelease: ?string,
38
38
  |},
39
39
  isMacCatalyst?: boolean,
40
40
  |},
@@ -66,7 +66,7 @@ type AndroidPlatform = {
66
66
  major: number,
67
67
  minor: number,
68
68
  patch: number,
69
- prerelease: ?number,
69
+ prerelease: ?string,
70
70
  |},
71
71
  Version: number,
72
72
  Release: string,
@@ -105,7 +105,7 @@ type Win32Platform = {
105
105
  major: number,
106
106
  minor: number,
107
107
  patch: number,
108
- prerelease: ?string | number,
108
+ prerelease: ?string,
109
109
  |},
110
110
  systemName: string,
111
111
  isMacCatalyst?: boolean,
@@ -34,7 +34,7 @@ const Platform: PlatformType = {
34
34
  major: number,
35
35
  minor: number,
36
36
  patch: number,
37
- prerelease: ?number,
37
+ prerelease: ?string,
38
38
  |},
39
39
  systemName: string,
40
40
  isMacCatalyst?: boolean,
@@ -32,7 +32,7 @@ const Platform: PlatformType = {
32
32
  major: number,
33
33
  minor: number,
34
34
  patch: number,
35
- prerelease: ?string | number,
35
+ prerelease: ?string,
36
36
  |},
37
37
  systemName: string,
38
38
  isMacCatalyst?: boolean,
@@ -113,6 +113,7 @@ export default class EventEmitter<TEventToArgsMap: {...}>
113
113
  // Copy `registrations` to take a snapshot when we invoke `emit`, in case
114
114
  // registrations are added or removed when listeners are invoked.
115
115
  for (const registration of Array.from(registrations)) {
116
+ // $FlowFixMe[incompatible-call]
116
117
  registration.listener.apply(registration.context, args);
117
118
  }
118
119
  }
package/jest/setup.js CHANGED
@@ -287,7 +287,14 @@ jest
287
287
  },
288
288
  PlatformConstants: {
289
289
  getConstants() {
290
- return {};
290
+ return {
291
+ reactNativeVersion: {
292
+ major: 1000,
293
+ minor: 0,
294
+ patch: 0,
295
+ prerelease: undefined,
296
+ },
297
+ };
291
298
  },
292
299
  },
293
300
  PushNotificationManager: {
package/overrides.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "**/__snapshots__/**",
8
8
  "src-win/rntypes/**"
9
9
  ],
10
- "baseVersion": "0.76.0-nightly-20240701-9f6cb21ed",
10
+ "baseVersion": "0.76.0-nightly-20240719-6d56cea28",
11
11
  "overrides": [
12
12
  {
13
13
  "type": "derived",
14
14
  "file": ".flowconfig",
15
15
  "baseFile": ".flowconfig",
16
- "baseHash": "2b0a3c4f44b686f254516c51469500bf26c5b113"
16
+ "baseHash": "83d25eb077cc8d865039ec211f3fedeac9e57d39"
17
17
  },
18
18
  {
19
19
  "type": "derived",
@@ -29,7 +29,7 @@
29
29
  "type": "patch",
30
30
  "file": "src-win/Libraries/Alert/Alert.win32.js",
31
31
  "baseFile": "packages/react-native/Libraries/Alert/Alert.js",
32
- "baseHash": "897569d77df852480332b7ce7ec1b594cf40aa28"
32
+ "baseHash": "173b99e6ae120f14176cf3425877728787d3feed"
33
33
  },
34
34
  {
35
35
  "type": "derived",
@@ -116,7 +116,7 @@
116
116
  "type": "derived",
117
117
  "file": "src-win/Libraries/Components/TextInput/TextInput.win32.js",
118
118
  "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js",
119
- "baseHash": "dad569fd3dd81f212afd7b35ffe75108e926eb5e"
119
+ "baseHash": "2cc1ee09c4a71e79656db18576b4983cfca153ed"
120
120
  },
121
121
  {
122
122
  "type": "patch",
@@ -344,7 +344,7 @@
344
344
  "type": "derived",
345
345
  "file": "src-win/Libraries/NativeComponent/BaseViewConfig.win32.js",
346
346
  "baseFile": "packages/react-native/Libraries/NativeComponent/BaseViewConfig.ios.js",
347
- "baseHash": "d7b9540d5e637cb86b29d119838a4024bfc2b7d6"
347
+ "baseHash": "86178b8f2e04b5df9e4c8dc8ca412c22231e6673"
348
348
  },
349
349
  {
350
350
  "type": "copy",
@@ -439,7 +439,7 @@
439
439
  "type": "derived",
440
440
  "file": "src-win/Libraries/Text/Text.win32.js",
441
441
  "baseFile": "packages/react-native/Libraries/Text/Text.js",
442
- "baseHash": "3b40ec7def4177ef81ad2eb84a0f95bc00cec041"
442
+ "baseHash": "fa9abb0db816a992824228c520fc0381bf2a1f63"
443
443
  },
444
444
  {
445
445
  "type": "derived",
@@ -498,13 +498,13 @@
498
498
  "type": "derived",
499
499
  "file": "src-win/Libraries/Utilities/Platform.flow.win32.js",
500
500
  "baseFile": "packages/react-native/Libraries/Utilities/Platform.flow.js",
501
- "baseHash": "d07d4656dc872e92e873bcce248262132085bd99"
501
+ "baseHash": "f38efa527b9426ae0178bb2336be2e93af0392ba"
502
502
  },
503
503
  {
504
504
  "type": "derived",
505
505
  "file": "src-win/Libraries/Utilities/Platform.win32.js",
506
506
  "baseFile": "packages/react-native/Libraries/Utilities/Platform.android.js",
507
- "baseHash": "ddd8013d71adc13b3ef3016631012efd096a9518"
507
+ "baseHash": "33f07d6fddb5290d05c8d4cc490312e3af88c70b"
508
508
  },
509
509
  {
510
510
  "type": "copy",
@@ -528,7 +528,7 @@
528
528
  "type": "derived",
529
529
  "file": "src-win/src/private/specs/modules/NativePlatformConstantsWin.js",
530
530
  "baseFile": "packages/react-native/src/private/specs/modules/NativePlatformConstantsAndroid.js",
531
- "baseHash": "b4a125d9134f33aeaba9e06988e18cbb0b4e9e9c"
531
+ "baseHash": "fa0f34a2de33b641bd63863629087644796d8b59"
532
532
  }
533
533
  ]
534
534
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@office-iss/react-native-win32",
3
- "version": "0.0.0-canary.258",
3
+ "version": "0.0.0-canary.259",
4
4
  "description": "Implementation of react native on top of Office's Win32 platform.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,13 +30,13 @@
30
30
  "@react-native-community/cli-platform-android": "14.0.0-alpha.11",
31
31
  "@react-native-community/cli-platform-ios": "14.0.0-alpha.11",
32
32
  "@react-native/assets": "1.0.0",
33
- "@react-native/assets-registry": "0.76.0-nightly-20240701-9f6cb21ed",
34
- "@react-native/codegen": "0.76.0-nightly-20240701-9f6cb21ed",
35
- "@react-native/community-cli-plugin": "0.76.0-nightly-20240701-9f6cb21ed",
36
- "@react-native/gradle-plugin": "0.76.0-nightly-20240701-9f6cb21ed",
37
- "@react-native/js-polyfills": "0.76.0-nightly-20240701-9f6cb21ed",
38
- "@react-native/normalize-colors": "0.76.0-nightly-20240701-9f6cb21ed",
39
- "@react-native/virtualized-lists": "0.76.0-nightly-20240701-9f6cb21ed",
33
+ "@react-native/assets-registry": "0.76.0-nightly-20240719-6d56cea28",
34
+ "@react-native/codegen": "0.76.0-nightly-20240719-6d56cea28",
35
+ "@react-native/community-cli-plugin": "0.76.0-nightly-20240719-6d56cea28",
36
+ "@react-native/gradle-plugin": "0.76.0-nightly-20240719-6d56cea28",
37
+ "@react-native/js-polyfills": "0.76.0-nightly-20240719-6d56cea28",
38
+ "@react-native/normalize-colors": "0.76.0-nightly-20240719-6d56cea28",
39
+ "@react-native/virtualized-lists": "0.76.0-nightly-20240719-6d56cea28",
40
40
  "abort-controller": "^3.0.0",
41
41
  "anser": "^1.4.9",
42
42
  "ansi-regex": "^5.0.0",
@@ -57,7 +57,7 @@
57
57
  "pretty-format": "^26.5.2",
58
58
  "promise": "^8.3.0",
59
59
  "react-clone-referenced-element": "^1.0.1",
60
- "react-devtools-core": "^5.3.0",
60
+ "react-devtools-core": "^5.3.1",
61
61
  "react-refresh": "^0.14.0",
62
62
  "react-shallow-renderer": "^16.15.0",
63
63
  "regenerator-runtime": "^0.13.2",
@@ -82,19 +82,19 @@
82
82
  "@types/prop-types": "15.7.1",
83
83
  "@types/react": "^18.2.6",
84
84
  "eslint": "^8.19.0",
85
- "flow-bin": "^0.217.2",
85
+ "flow-bin": "^0.241.0",
86
86
  "jscodeshift": "^0.14.0",
87
87
  "just-scripts": "^1.3.3",
88
88
  "prettier": "2.8.8",
89
89
  "react": "19.0.0-rc-fb9a90fa48-20240614",
90
- "react-native": "0.76.0-nightly-20240701-9f6cb21ed",
90
+ "react-native": "0.76.0-nightly-20240719-6d56cea28",
91
91
  "react-native-platform-override": "^1.9.45",
92
92
  "typescript": "5.0.4"
93
93
  },
94
94
  "peerDependencies": {
95
95
  "@types/react": "^18.2.6",
96
96
  "react": "^19.0.0-rc-fb9a90fa48-20240614",
97
- "react-native": "0.76.0-nightly-20240701-9f6cb21ed"
97
+ "react-native": "0.76.0-nightly-20240719-6d56cea28"
98
98
  },
99
99
  "beachball": {
100
100
  "defaultNpmTag": "canary",
@@ -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<<522f11a571457cb932f451cf81bd384a>>
7
+ * @generated SignedSource<<7421319910b210753a1eddcf079aa151>>
8
8
  * @flow strict-local
9
9
  */
10
10
 
@@ -32,9 +32,11 @@ export type ReactNativeFeatureFlagsJsOnly = {
32
32
  enableAccessToHostTreeInFabric: Getter<boolean>,
33
33
  isLayoutAnimationEnabled: Getter<boolean>,
34
34
  shouldUseAnimatedObjectForTransform: Getter<boolean>,
35
- shouldUseOptimizedText: Getter<boolean>,
36
35
  shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean>,
37
36
  shouldUseSetNativePropsInFabric: Getter<boolean>,
37
+ shouldUseSetNativePropsInNativeAnimationsInFabric: Getter<boolean>,
38
+ usePassiveEffectsForAnimations: Getter<boolean>,
39
+ useRefsForTextInputState: Getter<boolean>,
38
40
  };
39
41
 
40
42
  export type ReactNativeFeatureFlagsJsOnlyOverrides = Partial<ReactNativeFeatureFlagsJsOnly>;
@@ -45,24 +47,31 @@ export type ReactNativeFeatureFlags = {
45
47
  allowCollapsableChildren: Getter<boolean>,
46
48
  allowRecursiveCommitsWithSynchronousMountOnAndroid: Getter<boolean>,
47
49
  batchRenderingUpdatesInEventLoop: Getter<boolean>,
50
+ changeOrderOfMountingInstructionsOnAndroid: Getter<boolean>,
48
51
  destroyFabricSurfacesInReactInstanceManager: Getter<boolean>,
49
- enableBackgroundExecutor: Getter<boolean>,
52
+ enableAlignItemsBaselineOnFabricIOS: Getter<boolean>,
50
53
  enableCleanTextInputYogaNode: Getter<boolean>,
51
54
  enableGranularShadowTreeStateReconciliation: Getter<boolean>,
55
+ enableLongTaskAPI: Getter<boolean>,
52
56
  enableMicrotasks: Getter<boolean>,
57
+ enablePropsUpdateReconciliationAndroid: Getter<boolean>,
53
58
  enableSynchronousStateUpdates: Getter<boolean>,
54
59
  enableUIConsistency: Getter<boolean>,
60
+ fetchImagesInViewPreallocation: Getter<boolean>,
61
+ fixIncorrectScrollViewStateUpdateOnAndroid: Getter<boolean>,
55
62
  fixMappingOfEventPrioritiesBetweenFabricAndReact: Getter<boolean>,
56
- fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak: Getter<boolean>,
63
+ fixMissedFabricStateUpdatesOnAndroid: Getter<boolean>,
57
64
  forceBatchingMountItemsOnAndroid: Getter<boolean>,
58
65
  fuseboxEnabledDebug: Getter<boolean>,
59
66
  fuseboxEnabledRelease: Getter<boolean>,
67
+ initEagerTurboModulesOnNativeModulesQueueAndroid: Getter<boolean>,
60
68
  lazyAnimationCallbacks: Getter<boolean>,
61
- preventDoubleTextMeasure: Getter<boolean>,
69
+ loadVectorDrawablesOnImages: Getter<boolean>,
62
70
  setAndroidLayoutDirection: Getter<boolean>,
63
71
  useImmediateExecutorInAndroidBridgeless: Getter<boolean>,
64
72
  useModernRuntimeScheduler: Getter<boolean>,
65
73
  useNativeViewConfigsInBridgelessMode: Getter<boolean>,
74
+ useNewReactImageViewBackgroundDrawing: Getter<boolean>,
66
75
  useRuntimeShadowNodeReferenceUpdate: Getter<boolean>,
67
76
  useRuntimeShadowNodeReferenceUpdateOnLayout: Getter<boolean>,
68
77
  useStateAlignmentMechanism: Getter<boolean>,
@@ -98,11 +107,6 @@ export const isLayoutAnimationEnabled: Getter<boolean> = createJavaScriptFlagGet
98
107
  */
99
108
  export const shouldUseAnimatedObjectForTransform: Getter<boolean> = createJavaScriptFlagGetter('shouldUseAnimatedObjectForTransform', false);
100
109
 
101
- /**
102
- * Use optimized version of <Text /> component.
103
- */
104
- export const shouldUseOptimizedText: Getter<boolean> = createJavaScriptFlagGetter('shouldUseOptimizedText', false);
105
-
106
110
  /**
107
111
  * removeClippedSubviews prop will be used as the default in FlatList on iOS to match Android
108
112
  */
@@ -113,6 +117,21 @@ export const shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean> = cre
113
117
  */
114
118
  export const shouldUseSetNativePropsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInFabric', true);
115
119
 
120
+ /**
121
+ * Enables use of setNativeProps in Native driven animations in Fabric.
122
+ */
123
+ export const shouldUseSetNativePropsInNativeAnimationsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInNativeAnimationsInFabric', false);
124
+
125
+ /**
126
+ * Enable a variant of useAnimatedPropsLifecycle hook that constructs the animation graph in passive effect instead of layout effect
127
+ */
128
+ export const usePassiveEffectsForAnimations: Getter<boolean> = createJavaScriptFlagGetter('usePassiveEffectsForAnimations', false);
129
+
130
+ /**
131
+ * Enable a variant of TextInput that moves some state to refs to avoid unnecessary re-renders
132
+ */
133
+ export const useRefsForTextInputState: Getter<boolean> = createJavaScriptFlagGetter('useRefsForTextInputState', false);
134
+
116
135
  /**
117
136
  * Common flag for testing. Do NOT modify.
118
137
  */
@@ -129,14 +148,18 @@ export const allowRecursiveCommitsWithSynchronousMountOnAndroid: Getter<boolean>
129
148
  * When enabled, the RuntimeScheduler processing the event loop will batch all rendering updates and dispatch them together at the end of each iteration of the loop.
130
149
  */
131
150
  export const batchRenderingUpdatesInEventLoop: Getter<boolean> = createNativeFlagGetter('batchRenderingUpdatesInEventLoop', false);
151
+ /**
152
+ * When enabled, insert of views on Android will be moved from the beginning of the IntBufferBatchMountItem to be after layout updates.
153
+ */
154
+ export const changeOrderOfMountingInstructionsOnAndroid: Getter<boolean> = createNativeFlagGetter('changeOrderOfMountingInstructionsOnAndroid', false);
132
155
  /**
133
156
  * When enabled, ReactInstanceManager will clean up Fabric surfaces on destroy().
134
157
  */
135
158
  export const destroyFabricSurfacesInReactInstanceManager: Getter<boolean> = createNativeFlagGetter('destroyFabricSurfacesInReactInstanceManager', false);
136
159
  /**
137
- * Enables the use of a background executor to compute layout and commit updates on Fabric (this system is deprecated and should not be used).
160
+ * Kill-switch to turn off support for aling-items:baseline on Fabric iOS.
138
161
  */
139
- export const enableBackgroundExecutor: Getter<boolean> = createNativeFlagGetter('enableBackgroundExecutor', false);
162
+ export const enableAlignItemsBaselineOnFabricIOS: Getter<boolean> = createNativeFlagGetter('enableAlignItemsBaselineOnFabricIOS', true);
140
163
  /**
141
164
  * Clean yoga node when <TextInput /> does not change.
142
165
  */
@@ -145,10 +168,18 @@ export const enableCleanTextInputYogaNode: Getter<boolean> = createNativeFlagGet
145
168
  * When enabled, the renderer would only fail commits when they propagate state and the last commit that updated state changed before committing.
146
169
  */
147
170
  export const enableGranularShadowTreeStateReconciliation: Getter<boolean> = createNativeFlagGetter('enableGranularShadowTreeStateReconciliation', false);
171
+ /**
172
+ * Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled.
173
+ */
174
+ export const enableLongTaskAPI: Getter<boolean> = createNativeFlagGetter('enableLongTaskAPI', false);
148
175
  /**
149
176
  * Enables the use of microtasks in Hermes (scheduling) and RuntimeScheduler (execution).
150
177
  */
151
178
  export const enableMicrotasks: Getter<boolean> = createNativeFlagGetter('enableMicrotasks', false);
179
+ /**
180
+ * When enabled, Android will receive prop updates based on the differences between the last rendered shadow node and the last committed shadow node.
181
+ */
182
+ export const enablePropsUpdateReconciliationAndroid: Getter<boolean> = createNativeFlagGetter('enablePropsUpdateReconciliationAndroid', false);
152
183
  /**
153
184
  * Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
154
185
  */
@@ -157,14 +188,22 @@ export const enableSynchronousStateUpdates: Getter<boolean> = createNativeFlagGe
157
188
  * Ensures that JavaScript always has a consistent view of the state of the UI (e.g.: commits done in other threads are not immediately propagated to JS during its execution).
158
189
  */
159
190
  export const enableUIConsistency: Getter<boolean> = createNativeFlagGetter('enableUIConsistency', false);
191
+ /**
192
+ * Start image fetching during view preallocation instead of waiting for layout pass
193
+ */
194
+ export const fetchImagesInViewPreallocation: Getter<boolean> = createNativeFlagGetter('fetchImagesInViewPreallocation', false);
195
+ /**
196
+ * When doing a smooth scroll animation, it stops setting the state with the final scroll position in Fabric before the animation starts.
197
+ */
198
+ export const fixIncorrectScrollViewStateUpdateOnAndroid: Getter<boolean> = createNativeFlagGetter('fixIncorrectScrollViewStateUpdateOnAndroid', false);
160
199
  /**
161
200
  * Uses the default event priority instead of the discreet event priority by default when dispatching events from Fabric to React.
162
201
  */
163
202
  export const fixMappingOfEventPrioritiesBetweenFabricAndReact: Getter<boolean> = createNativeFlagGetter('fixMappingOfEventPrioritiesBetweenFabricAndReact', false);
164
203
  /**
165
- * Fixes a leak in SurfaceMountingManager.mRemoveDeleteTreeUIFrameCallback
204
+ * Enables a fix to prevent the possibility of state updates in Fabric being missed due to race conditions with previous state updates.
166
205
  */
167
- export const fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak: Getter<boolean> = createNativeFlagGetter('fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak', false);
206
+ export const fixMissedFabricStateUpdatesOnAndroid: Getter<boolean> = createNativeFlagGetter('fixMissedFabricStateUpdatesOnAndroid', false);
168
207
  /**
169
208
  * Forces the mounting layer on Android to always batch mount items instead of dispatching them immediately. This might fix some crashes related to synchronous state updates, where some views dispatch state updates during mount.
170
209
  */
@@ -172,23 +211,27 @@ export const forceBatchingMountItemsOnAndroid: Getter<boolean> = createNativeFla
172
211
  /**
173
212
  * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in debug builds. This flag is global and should not be changed across React Host lifetimes.
174
213
  */
175
- export const fuseboxEnabledDebug: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledDebug', false);
214
+ export const fuseboxEnabledDebug: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledDebug', true);
176
215
  /**
177
216
  * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in release builds. This flag is global and should not be changed across React Host lifetimes.
178
217
  */
179
218
  export const fuseboxEnabledRelease: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledRelease', false);
219
+ /**
220
+ * Construct modules that requires eager init on the dedicate native modules thread
221
+ */
222
+ export const initEagerTurboModulesOnNativeModulesQueueAndroid: Getter<boolean> = createNativeFlagGetter('initEagerTurboModulesOnNativeModulesQueueAndroid', false);
180
223
  /**
181
224
  * Only enqueue Choreographer calls if there is an ongoing animation, instead of enqueueing every frame.
182
225
  */
183
226
  export const lazyAnimationCallbacks: Getter<boolean> = createNativeFlagGetter('lazyAnimationCallbacks', false);
184
227
  /**
185
- * When enabled, ParagraphShadowNode will no longer call measure twice.
228
+ * Adds support for loading vector drawable assets in the Image component (only on Android)
186
229
  */
187
- export const preventDoubleTextMeasure: Getter<boolean> = createNativeFlagGetter('preventDoubleTextMeasure', true);
230
+ export const loadVectorDrawablesOnImages: Getter<boolean> = createNativeFlagGetter('loadVectorDrawablesOnImages', false);
188
231
  /**
189
232
  * Propagate layout direction to Android views.
190
233
  */
191
- export const setAndroidLayoutDirection: Getter<boolean> = createNativeFlagGetter('setAndroidLayoutDirection', false);
234
+ export const setAndroidLayoutDirection: Getter<boolean> = createNativeFlagGetter('setAndroidLayoutDirection', true);
192
235
  /**
193
236
  * Invoke callbacks immediately on the ReactInstance rather than going through a background thread for synchronization
194
237
  */
@@ -201,6 +244,10 @@ export const useModernRuntimeScheduler: Getter<boolean> = createNativeFlagGetter
201
244
  * When enabled, the native view configs are used in bridgeless mode.
202
245
  */
203
246
  export const useNativeViewConfigsInBridgelessMode: Getter<boolean> = createNativeFlagGetter('useNativeViewConfigsInBridgelessMode', false);
247
+ /**
248
+ * Use shared background drawing code for ReactImageView instead of using Fresco to manipulate the bitmap
249
+ */
250
+ export const useNewReactImageViewBackgroundDrawing: Getter<boolean> = createNativeFlagGetter('useNewReactImageViewBackgroundDrawing', false);
204
251
  /**
205
252
  * When enabled, cloning shadow nodes within react native will update the reference held by the current JS fiber tree.
206
253
  */
@@ -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<<6715ba4954b31464c591597c53a2a0de>>
7
+ * @generated SignedSource<<29f4ec3c941708dc99dd38adac52d6dc>>
8
8
  * @flow strict-local
9
9
  */
10
10
 
@@ -27,24 +27,31 @@ export interface Spec extends TurboModule {
27
27
  +allowCollapsableChildren?: () => boolean;
28
28
  +allowRecursiveCommitsWithSynchronousMountOnAndroid?: () => boolean;
29
29
  +batchRenderingUpdatesInEventLoop?: () => boolean;
30
+ +changeOrderOfMountingInstructionsOnAndroid?: () => boolean;
30
31
  +destroyFabricSurfacesInReactInstanceManager?: () => boolean;
31
- +enableBackgroundExecutor?: () => boolean;
32
+ +enableAlignItemsBaselineOnFabricIOS?: () => boolean;
32
33
  +enableCleanTextInputYogaNode?: () => boolean;
33
34
  +enableGranularShadowTreeStateReconciliation?: () => boolean;
35
+ +enableLongTaskAPI?: () => boolean;
34
36
  +enableMicrotasks?: () => boolean;
37
+ +enablePropsUpdateReconciliationAndroid?: () => boolean;
35
38
  +enableSynchronousStateUpdates?: () => boolean;
36
39
  +enableUIConsistency?: () => boolean;
40
+ +fetchImagesInViewPreallocation?: () => boolean;
41
+ +fixIncorrectScrollViewStateUpdateOnAndroid?: () => boolean;
37
42
  +fixMappingOfEventPrioritiesBetweenFabricAndReact?: () => boolean;
38
- +fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak?: () => boolean;
43
+ +fixMissedFabricStateUpdatesOnAndroid?: () => boolean;
39
44
  +forceBatchingMountItemsOnAndroid?: () => boolean;
40
45
  +fuseboxEnabledDebug?: () => boolean;
41
46
  +fuseboxEnabledRelease?: () => boolean;
47
+ +initEagerTurboModulesOnNativeModulesQueueAndroid?: () => boolean;
42
48
  +lazyAnimationCallbacks?: () => boolean;
43
- +preventDoubleTextMeasure?: () => boolean;
49
+ +loadVectorDrawablesOnImages?: () => boolean;
44
50
  +setAndroidLayoutDirection?: () => boolean;
45
51
  +useImmediateExecutorInAndroidBridgeless?: () => boolean;
46
52
  +useModernRuntimeScheduler?: () => boolean;
47
53
  +useNativeViewConfigsInBridgelessMode?: () => boolean;
54
+ +useNewReactImageViewBackgroundDrawing?: () => boolean;
48
55
  +useRuntimeShadowNodeReferenceUpdate?: () => boolean;
49
56
  +useRuntimeShadowNodeReferenceUpdateOnLayout?: () => boolean;
50
57
  +useStateAlignmentMechanism?: () => boolean;
@@ -14,7 +14,7 @@ import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboMod
14
14
 
15
15
  export interface Spec extends TurboModule {
16
16
  // Common interface
17
- +getInitialURL: () => Promise<string>;
17
+ +getInitialURL: () => Promise<?string>;
18
18
  +canOpenURL: (url: string) => Promise<boolean>;
19
19
  +openURL: (url: string) => Promise<void>;
20
20
  +openSettings: () => Promise<void>;
@@ -16,7 +16,7 @@ export type ReactNativeVersionAndroid = {|
16
16
  major: number,
17
17
  minor: number,
18
18
  patch: number,
19
- prerelease: ?number,
19
+ prerelease: ?string,
20
20
  |};
21
21
 
22
22
  export type PlatformConstantsAndroid = {|
@@ -19,7 +19,7 @@ export type PlatformConstantsIOS = {|
19
19
  major: number,
20
20
  minor: number,
21
21
  patch: number,
22
- prerelease: ?number,
22
+ prerelease: ?string,
23
23
  |},
24
24
  forceTouchAvailable: boolean,
25
25
  osVersion: string,
@@ -12,6 +12,13 @@ import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
12
12
 
13
13
  import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
14
14
 
15
+ export type ReactNativeVersionAndroid = {|
16
+ major: number,
17
+ minor: number,
18
+ patch: number,
19
+ prerelease: ?string,
20
+ |};
21
+
15
22
  export type PlatformConstantsWin32 = {|
16
23
  isTesting: boolean,
17
24
  isDisableAnimations?: boolean,
@@ -19,7 +26,7 @@ export type PlatformConstantsWin32 = {|
19
26
  major: number,
20
27
  minor: number,
21
28
  patch: number,
22
- prerelease: ?string | number,
29
+ prerelease: ?string,
23
30
  |},
24
31
  forceTouchAvailable: boolean,
25
32
  osVersion: number,