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

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 (47) hide show
  1. package/.flowconfig +8 -1
  2. package/CHANGELOG.json +70 -1
  3. package/CHANGELOG.md +26 -6
  4. package/IntegrationTests/ImageCachePolicyTest.js +1 -1
  5. package/IntegrationTests/LayoutEventsTest.js +1 -4
  6. package/Libraries/Animated/AnimatedExports.js.flow +126 -0
  7. package/Libraries/Animated/AnimatedImplementation.js +0 -121
  8. package/Libraries/Animated/animations/Animation.js +8 -4
  9. package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
  10. package/Libraries/Animated/nodes/AnimatedValue.js +8 -4
  11. package/Libraries/BatchedBridge/NativeModules.js +2 -0
  12. package/Libraries/Blob/BlobManager.js +1 -0
  13. package/Libraries/Components/ScrollView/ScrollView.d.ts +1 -1
  14. package/Libraries/Components/ScrollView/ScrollView.js +1 -0
  15. package/Libraries/Components/TextInput/TextInput.js +1 -0
  16. package/Libraries/Components/View/ViewAccessibility.js +16 -0
  17. package/Libraries/Core/ReactNativeVersion.js +1 -1
  18. package/Libraries/NativeComponent/BaseViewConfig.android.js +1 -0
  19. package/Libraries/NativeComponent/BaseViewConfig.ios.js +1 -0
  20. package/Libraries/ReactNative/FabricUIManager.js +10 -0
  21. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -0
  22. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js.flow +51 -0
  23. package/Libraries/Renderer/shims/ReactFabric.js +1 -3
  24. package/Libraries/Renderer/shims/ReactFeatureFlags.js +1 -3
  25. package/Libraries/Renderer/shims/ReactNative.js +1 -3
  26. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +1 -3
  27. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +1 -3
  28. package/Libraries/Settings/Settings.ios.js +1 -0
  29. package/overrides.json +6 -6
  30. package/package.json +23 -23
  31. package/src/private/featureflags/ReactNativeFeatureFlags.js +31 -6
  32. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +7 -2
  33. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +1 -1
  34. package/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js +1 -1
  35. package/src/private/webapis/performance/PerformanceEntry.js +6 -1
  36. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -0
  37. package/src/private/webapis/performance/specs/NativePerformance.js +10 -1
  38. package/types/index.d.ts +0 -1
  39. package/Libraries/NewAppScreen/components/Colors.js +0 -19
  40. package/Libraries/NewAppScreen/components/DebugInstructions.js +0 -39
  41. package/Libraries/NewAppScreen/components/Header.js +0 -75
  42. package/Libraries/NewAppScreen/components/HermesBadge.js +0 -51
  43. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +0 -146
  44. package/Libraries/NewAppScreen/components/ReloadInstructions.js +0 -37
  45. package/Libraries/NewAppScreen/components/logo.png +0 -0
  46. package/Libraries/NewAppScreen/index.js +0 -25
  47. package/types/modules/LaunchScreen.d.ts +0 -26
package/.flowconfig CHANGED
@@ -5,6 +5,9 @@
5
5
  .*/*[.]macos.js
6
6
  .*/*[.]windesktop.js
7
7
 
8
+ ; Ignore fb_internal modules
9
+ <PROJECT_ROOT>/packages/react-native/src/fb_internal/.*
10
+
8
11
  ; These modules have base components and win32 versions.
9
12
  ; Ideally we'd delete the base versions of files that had .win32 overrides as part of the
10
13
  ; initRNLibraries build step
@@ -39,6 +42,10 @@
39
42
  <PROJECT_ROOT>/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js
40
43
  <PROJECT_ROOT>/Libraries/LogBox/UI/LogBoxStyle.js
41
44
 
45
+ <PROJECT_ROOT>/IntegrationTests/ImageCachePolicyTest.js
46
+ <PROJECT_ROOT>/IntegrationTests/LayoutEventsTest.js
47
+ <PROJECT_ROOT>/IntegrationTests/IntegrationTestsApp.js
48
+
42
49
  ; Ignore react-native files in node_modules since they are copied into project root
43
50
  .*/node_modules/react-native/.*
44
51
 
@@ -167,4 +174,4 @@ untyped-import
167
174
  untyped-type-import
168
175
 
169
176
  [version]
170
- ^0.268.0
177
+ ^0.269.1
package/CHANGELOG.json CHANGED
@@ -2,7 +2,76 @@
2
2
  "name": "@office-iss/react-native-win32",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 17 Jul 2025 05:25:18 GMT",
5
+ "date": "Sat, 23 Aug 2025 05:28:06 GMT",
6
+ "version": "0.0.0-canary.295",
7
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.295",
8
+ "comments": {
9
+ "prerelease": [
10
+ {
11
+ "author": "10109130+sharath2727@users.noreply.github.com",
12
+ "package": "@office-iss/react-native-win32",
13
+ "commit": "8d0845243469a6c9901f4a48f701a8ddf907af7f",
14
+ "comment": "Upgrade to node22"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@office-iss/react-native-win32",
19
+ "comment": "Bump @rnw-scripts/eslint-config to v1.2.37",
20
+ "commit": "not available"
21
+ },
22
+ {
23
+ "author": "beachball",
24
+ "package": "@office-iss/react-native-win32",
25
+ "comment": "Bump @rnw-scripts/jest-out-of-tree-snapshot-resolver to v1.1.41",
26
+ "commit": "not available"
27
+ },
28
+ {
29
+ "author": "beachball",
30
+ "package": "@office-iss/react-native-win32",
31
+ "comment": "Bump @rnw-scripts/just-task to v2.3.55",
32
+ "commit": "not available"
33
+ },
34
+ {
35
+ "author": "beachball",
36
+ "package": "@office-iss/react-native-win32",
37
+ "comment": "Bump react-native-platform-override to v1.9.57",
38
+ "commit": "not available"
39
+ }
40
+ ]
41
+ }
42
+ },
43
+ {
44
+ "date": "Sat, 26 Jul 2025 05:26:13 GMT",
45
+ "version": "0.0.0-canary.294",
46
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.294",
47
+ "comments": {
48
+ "prerelease": [
49
+ {
50
+ "author": "54227869+anupriya13@users.noreply.github.com",
51
+ "package": "@office-iss/react-native-win32",
52
+ "commit": "d27755fed3d7f5451f73a8ba5b2027bc4023ea83",
53
+ "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250506-3ac16dd6a"
54
+ }
55
+ ]
56
+ }
57
+ },
58
+ {
59
+ "date": "Fri, 18 Jul 2025 05:27:00 GMT",
60
+ "version": "0.0.0-canary.293",
61
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.293",
62
+ "comments": {
63
+ "none": [
64
+ {
65
+ "author": "chpurrer@meta.com",
66
+ "package": "@office-iss/react-native-win32",
67
+ "commit": "af04d4d517f95d7773e4744edf2cef42fa0870c8",
68
+ "comment": "[react-native-windows] Use new LongLivedObject.h header namespace"
69
+ }
70
+ ]
71
+ }
72
+ },
73
+ {
74
+ "date": "Thu, 17 Jul 2025 05:27:00 GMT",
6
75
  "version": "0.0.0-canary.293",
7
76
  "tag": "@office-iss/react-native-win32_v0.0.0-canary.293",
8
77
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,19 +1,39 @@
1
1
  # Change Log - @office-iss/react-native-win32
2
2
 
3
- <!-- This log was last generated on Thu, 17 Jul 2025 05:25:18 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Sat, 23 Aug 2025 05:28:06 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.0.0-canary.293
7
+ ## 0.0.0-canary.295
8
8
 
9
- Thu, 17 Jul 2025 05:25:18 GMT
9
+ Sat, 23 Aug 2025 05:28:06 GMT
10
10
 
11
11
  ### Changes
12
12
 
13
- - Integrate RN Nightly Build 0.80.0-nightly-20250428-9efcdc091 (10109130+sharath2727@users.noreply.github.com)
14
- - Bump @rnw-scripts/just-task to v2.3.54
15
- - Bump react-native-platform-override to v1.9.56
13
+ - Upgrade to node22 (10109130+sharath2727@users.noreply.github.com)
14
+ - Bump @rnw-scripts/eslint-config to v1.2.37
15
+ - Bump @rnw-scripts/jest-out-of-tree-snapshot-resolver to v1.1.41
16
+ - Bump @rnw-scripts/just-task to v2.3.55
17
+ - Bump react-native-platform-override to v1.9.57
16
18
 
19
+ ## 0.0.0-canary.294
20
+
21
+ Sat, 26 Jul 2025 05:26:13 GMT
22
+
23
+ ### Changes
24
+
25
+ - Integrate RN Nightly Build 0.80.0-nightly-20250506-3ac16dd6a (54227869+anupriya13@users.noreply.github.com)
26
+
27
+ ## 0.0.0-canary.293
28
+
29
+ Thu, 17 Jul 2025 05:27:00 GMT
30
+
31
+ ### Changes
32
+
33
+ - Integrate RN Nightly Build 0.80.0-nightly-20250428-9efcdc091 (10109130+sharath2727@users.noreply.github.com)
34
+ - Bump @rnw-scripts/just-task to v2.3.54
35
+ - Bump react-native-platform-override to v1.9.56
36
+
17
37
  ## 0.0.0-canary.292
18
38
 
19
39
  Thu, 03 Jul 2025 05:24:24 GMT
@@ -10,7 +10,7 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {ImageURISource} from 'react-native/Libraries/Image/ImageSource';
13
+ import type {ImageURISource} from 'react-native';
14
14
 
15
15
  import * as React from 'react';
16
16
  import {useEffect, useState} from 'react';
@@ -10,11 +10,8 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ import type {LayoutChangeEvent, LayoutRectangle} from 'react-native';
13
14
  import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
14
- import type {
15
- LayoutChangeEvent,
16
- LayoutRectangle,
17
- } from 'react-native/Libraries/Types/CoreEventTypes';
18
15
 
19
16
  const React = require('react');
20
17
  const ReactNative = require('react-native');
@@ -40,23 +40,149 @@ export type {default as AnimatedSubtraction} from './nodes/AnimatedSubtraction';
40
40
  export type {WithAnimatedValue} from './createAnimatedComponent';
41
41
  export type {AnimatedComponentType as AnimatedComponent} from './createAnimatedComponent';
42
42
 
43
+ /**
44
+ * Creates a new Animated value composed from two Animated values added
45
+ * together.
46
+ *
47
+ * See https://reactnative.dev/docs/animated#add
48
+ */
43
49
  export const add = AnimatedImplementation.add;
50
+
51
+ /**
52
+ * Imperative API to attach an animated value to an event on a view. Prefer
53
+ * using `Animated.event` with `useNativeDrive: true` if possible.
54
+ *
55
+ * See https://reactnative.dev/docs/animated#attachnativeevent
56
+ */
44
57
  export const attachNativeEvent = AnimatedImplementation.attachNativeEvent;
58
+
59
+ /**
60
+ * Make any React component Animatable. Used to create `Animated.View`, etc.
61
+ *
62
+ * See https://reactnative.dev/docs/animated#createanimatedcomponent
63
+ */
45
64
  export const createAnimatedComponent =
46
65
  AnimatedImplementation.createAnimatedComponent;
66
+
67
+ /**
68
+ * Animates a value from an initial velocity to zero based on a decay
69
+ * coefficient.
70
+ *
71
+ * See https://reactnative.dev/docs/animated#decay
72
+ */
47
73
  export const decay = AnimatedImplementation.decay;
74
+
75
+ /**
76
+ * Starts an animation after the given delay.
77
+ *
78
+ * See https://reactnative.dev/docs/animated#delay
79
+ */
48
80
  export const delay = AnimatedImplementation.delay;
81
+
82
+ /**
83
+ * Create a new Animated value that is limited between 2 values. It uses the
84
+ * difference between the last value so even if the value is far from the
85
+ * bounds it will start changing when the value starts getting closer again.
86
+ *
87
+ * See https://reactnative.dev/docs/animated#diffclamp
88
+ */
49
89
  export const diffClamp = AnimatedImplementation.diffClamp;
90
+
91
+ /**
92
+ * Creates a new Animated value composed by dividing the first Animated value
93
+ * by the second Animated value.
94
+ *
95
+ * See https://reactnative.dev/docs/animated#divide
96
+ */
50
97
  export const divide = AnimatedImplementation.divide;
98
+
99
+ /**
100
+ * Takes an array of mappings and extracts values from each arg accordingly,
101
+ * then calls `setValue` on the mapped outputs.
102
+ *
103
+ * See https://reactnative.dev/docs/animated#event
104
+ */
51
105
  export const event = AnimatedImplementation.event;
106
+
107
+ /**
108
+ * Advanced imperative API for snooping on animated events that are passed in
109
+ * through props. Use values directly where possible.
110
+ *
111
+ * See https://reactnative.dev/docs/animated#forkevent
112
+ */
52
113
  export const forkEvent = AnimatedImplementation.forkEvent;
114
+
115
+ /**
116
+ * Loops a given animation continuously, so that each time it reaches the
117
+ * end, it resets and begins again from the start.
118
+ *
119
+ * See https://reactnative.dev/docs/animated#loop
120
+ */
53
121
  export const loop = AnimatedImplementation.loop;
122
+
123
+ /**
124
+ * Creates a new Animated value that is the (non-negative) modulo of the
125
+ * provided Animated value.
126
+ *
127
+ * See https://reactnative.dev/docs/animated#modulo
128
+ */
54
129
  export const modulo = AnimatedImplementation.modulo;
130
+
131
+ /**
132
+ * Creates a new Animated value composed from two Animated values multiplied
133
+ * together.
134
+ *
135
+ * See https://reactnative.dev/docs/animated#multiply
136
+ */
55
137
  export const multiply = AnimatedImplementation.multiply;
138
+
139
+ /**
140
+ * Starts an array of animations all at the same time. By default, if one
141
+ * of the animations is stopped, they will all be stopped. You can override
142
+ * this with the `stopTogether` flag.
143
+ *
144
+ * See https://reactnative.dev/docs/animated#parallel
145
+ */
56
146
  export const parallel = AnimatedImplementation.parallel;
147
+
148
+ /**
149
+ * Starts an array of animations in order, waiting for each to complete
150
+ * before starting the next. If the current running animation is stopped, no
151
+ * following animations will be started.
152
+ *
153
+ * See https://reactnative.dev/docs/animated#sequence
154
+ */
57
155
  export const sequence = AnimatedImplementation.sequence;
156
+
157
+ /**
158
+ * Animates a value according to an analytical spring model based on
159
+ * damped harmonic oscillation.
160
+ *
161
+ * See https://reactnative.dev/docs/animated#spring
162
+ */
58
163
  export const spring = AnimatedImplementation.spring;
164
+
165
+ /**
166
+ * Array of animations may run in parallel (overlap), but are started in
167
+ * sequence with successive delays. Nice for doing trailing effects.
168
+ *
169
+ * See https://reactnative.dev/docs/animated#stagger
170
+ */
59
171
  export const stagger = AnimatedImplementation.stagger;
172
+
173
+ /**
174
+ * Creates a new Animated value composed by subtracting the second Animated
175
+ * value from the first Animated value.
176
+ *
177
+ * See https://reactnative.dev/docs/animated#subtract
178
+ */
60
179
  export const subtract = AnimatedImplementation.subtract;
180
+
181
+ /**
182
+ * Animates a value along a timed easing curve. The Easing module has tons of
183
+ * predefined curves, or you can use your own function.
184
+ *
185
+ * See https://reactnative.dev/docs/animated#timing
186
+ */
61
187
  export const timing = AnimatedImplementation.timing;
62
188
  export const unforkEvent = AnimatedImplementation.unforkEvent;
@@ -606,144 +606,23 @@ export default {
606
606
  * See https://reactnative.dev/docs/animated#node
607
607
  */
608
608
  Node: AnimatedNode,
609
-
610
- /**
611
- * Animates a value from an initial velocity to zero based on a decay
612
- * coefficient.
613
- *
614
- * See https://reactnative.dev/docs/animated#decay
615
- */
616
609
  decay,
617
- /**
618
- * Animates a value along a timed easing curve. The Easing module has tons of
619
- * predefined curves, or you can use your own function.
620
- *
621
- * See https://reactnative.dev/docs/animated#timing
622
- */
623
610
  timing,
624
- /**
625
- * Animates a value according to an analytical spring model based on
626
- * damped harmonic oscillation.
627
- *
628
- * See https://reactnative.dev/docs/animated#spring
629
- */
630
611
  spring,
631
-
632
- /**
633
- * Creates a new Animated value composed from two Animated values added
634
- * together.
635
- *
636
- * See https://reactnative.dev/docs/animated#add
637
- */
638
612
  add,
639
-
640
- /**
641
- * Creates a new Animated value composed by subtracting the second Animated
642
- * value from the first Animated value.
643
- *
644
- * See https://reactnative.dev/docs/animated#subtract
645
- */
646
613
  subtract,
647
-
648
- /**
649
- * Creates a new Animated value composed by dividing the first Animated value
650
- * by the second Animated value.
651
- *
652
- * See https://reactnative.dev/docs/animated#divide
653
- */
654
614
  divide,
655
-
656
- /**
657
- * Creates a new Animated value composed from two Animated values multiplied
658
- * together.
659
- *
660
- * See https://reactnative.dev/docs/animated#multiply
661
- */
662
615
  multiply,
663
-
664
- /**
665
- * Creates a new Animated value that is the (non-negative) modulo of the
666
- * provided Animated value.
667
- *
668
- * See https://reactnative.dev/docs/animated#modulo
669
- */
670
616
  modulo,
671
-
672
- /**
673
- * Create a new Animated value that is limited between 2 values. It uses the
674
- * difference between the last value so even if the value is far from the
675
- * bounds it will start changing when the value starts getting closer again.
676
- *
677
- * See https://reactnative.dev/docs/animated#diffclamp
678
- */
679
617
  diffClamp,
680
-
681
- /**
682
- * Starts an animation after the given delay.
683
- *
684
- * See https://reactnative.dev/docs/animated#delay
685
- */
686
618
  delay,
687
- /**
688
- * Starts an array of animations in order, waiting for each to complete
689
- * before starting the next. If the current running animation is stopped, no
690
- * following animations will be started.
691
- *
692
- * See https://reactnative.dev/docs/animated#sequence
693
- */
694
619
  sequence,
695
- /**
696
- * Starts an array of animations all at the same time. By default, if one
697
- * of the animations is stopped, they will all be stopped. You can override
698
- * this with the `stopTogether` flag.
699
- *
700
- * See https://reactnative.dev/docs/animated#parallel
701
- */
702
620
  parallel,
703
- /**
704
- * Array of animations may run in parallel (overlap), but are started in
705
- * sequence with successive delays. Nice for doing trailing effects.
706
- *
707
- * See https://reactnative.dev/docs/animated#stagger
708
- */
709
621
  stagger,
710
- /**
711
- * Loops a given animation continuously, so that each time it reaches the
712
- * end, it resets and begins again from the start.
713
- *
714
- * See https://reactnative.dev/docs/animated#loop
715
- */
716
622
  loop,
717
-
718
- /**
719
- * Takes an array of mappings and extracts values from each arg accordingly,
720
- * then calls `setValue` on the mapped outputs.
721
- *
722
- * See https://reactnative.dev/docs/animated#event
723
- */
724
623
  event,
725
-
726
- /**
727
- * Make any React component Animatable. Used to create `Animated.View`, etc.
728
- *
729
- * See https://reactnative.dev/docs/animated#createanimatedcomponent
730
- */
731
624
  createAnimatedComponent,
732
-
733
- /**
734
- * Imperative API to attach an animated value to an event on a view. Prefer
735
- * using `Animated.event` with `useNativeDrive: true` if possible.
736
- *
737
- * See https://reactnative.dev/docs/animated#attachnativeevent
738
- */
739
625
  attachNativeEvent,
740
-
741
- /**
742
- * Advanced imperative API for snooping on animated events that are passed in
743
- * through props. Use values directly where possible.
744
- *
745
- * See https://reactnative.dev/docs/animated#forkevent
746
- */
747
626
  forkEvent,
748
627
  unforkEvent,
749
628
 
@@ -13,10 +13,14 @@ import type AnimatedNode from '../nodes/AnimatedNode';
13
13
  import type AnimatedValue from '../nodes/AnimatedValue';
14
14
 
15
15
  import NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';
16
- import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';
17
16
  import AnimatedProps from '../nodes/AnimatedProps';
18
17
 
19
- export type EndResult = {finished: boolean, value?: number, ...};
18
+ export type EndResult = {
19
+ finished: boolean,
20
+ value?: number,
21
+ offset?: number,
22
+ ...
23
+ };
20
24
  export type EndCallback = (result: EndResult) => void;
21
25
 
22
26
  export type AnimationConfig = $ReadOnly<{
@@ -141,9 +145,9 @@ export default class Animation {
141
145
  // When using natively driven animations, once the animation completes,
142
146
  // we need to ensure that the JS side nodes are synced with the updated
143
147
  // values.
144
- const {value} = result;
148
+ const {value, offset} = result;
145
149
  if (value != null) {
146
- animatedValue.__onAnimatedValueUpdateReceived(value);
150
+ animatedValue.__onAnimatedValueUpdateReceived(value, offset);
147
151
 
148
152
  if (this.__isLooping === true) {
149
153
  return;
@@ -112,8 +112,8 @@ export default class AnimatedNode {
112
112
  return this.#listeners.size > 0;
113
113
  }
114
114
 
115
- __onAnimatedValueUpdateReceived(value: number): void {
116
- this.__callListeners(value);
115
+ __onAnimatedValueUpdateReceived(value: number, offset: number): void {
116
+ this.__callListeners(value + offset);
117
117
  }
118
118
 
119
119
  __callListeners(value: number): void {
@@ -52,7 +52,6 @@ const NativeAnimatedAPI = NativeAnimatedHelper.API;
52
52
  * transform which can receive values from multiple parents.
53
53
  */
54
54
  export function flushValue(rootNode: AnimatedNode): void {
55
- // eslint-disable-next-line func-call-spacing
56
55
  const leaves = new Set<{update: () => void, ...}>();
57
56
  function findAnimatedStyles(node: AnimatedNode) {
58
57
  // $FlowFixMe[prop-missing]
@@ -169,7 +168,7 @@ export default class AnimatedValue extends AnimatedWithChildren {
169
168
  'onAnimatedValueUpdate',
170
169
  data => {
171
170
  if (data.tag === nativeTag) {
172
- this.__onAnimatedValueUpdateReceived(data.value);
171
+ this.__onAnimatedValueUpdateReceived(data.value, data.offset);
173
172
  }
174
173
  },
175
174
  );
@@ -247,7 +246,9 @@ export default class AnimatedValue extends AnimatedWithChildren {
247
246
  this._offset += this._value;
248
247
  this._value = 0;
249
248
  if (this.__isNative) {
250
- NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag());
249
+ _executeAsAnimatedBatch(this.__getNativeTag().toString(), () =>
250
+ NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag()),
251
+ );
251
252
  }
252
253
  }
253
254
 
@@ -287,8 +288,11 @@ export default class AnimatedValue extends AnimatedWithChildren {
287
288
  }
288
289
  }
289
290
 
290
- __onAnimatedValueUpdateReceived(value: number): void {
291
+ __onAnimatedValueUpdateReceived(value: number, offset?: number): void {
291
292
  this._updateValue(value, false /*flush*/);
293
+ if (offset != null) {
294
+ this._offset = offset;
295
+ }
292
296
  }
293
297
 
294
298
  /**
@@ -65,6 +65,7 @@ function genModule(
65
65
  module[methodName] = genMethod(moduleID, methodID, methodType);
66
66
  });
67
67
 
68
+ // $FlowFixMe[unsafe-object-assign]
68
69
  Object.assign(module, constants);
69
70
 
70
71
  if (module.getConstants == null) {
@@ -173,6 +174,7 @@ function updateErrorWithErrorData(
173
174
  /* $FlowFixMe[class-object-subtyping] added when improving typing for this
174
175
  * parameters */
175
176
  // $FlowFixMe[incompatible-return]
177
+ // $FlowFixMe[unsafe-object-assign]
176
178
  return Object.assign(error, errorData || {});
177
179
  }
178
180
 
@@ -110,6 +110,7 @@ class BlobManager {
110
110
  static createFromOptions(options: BlobData): Blob {
111
111
  BlobRegistry.register(options.blobId);
112
112
  // $FlowFixMe[prop-missing]
113
+ // $FlowFixMe[unsafe-object-assign]
113
114
  return Object.assign(Object.create(Blob.prototype), {
114
115
  data:
115
116
  // Reuse the collector instance when creating from an existing blob.
@@ -365,7 +365,7 @@ export interface ScrollViewPropsIOS {
365
365
 
366
366
  /**
367
367
  * When true the scroll view bounces when it reaches the end of the
368
- * content if the content is larger then the scroll view along the axis of
368
+ * content if the content is larger than the scroll view along the axis of
369
369
  * the scroll direction. When false it disables all bouncing even if
370
370
  * the `alwaysBounce*` props are true. The default value is true.
371
371
  */
@@ -1165,6 +1165,7 @@ class ScrollView extends React.Component<ScrollViewProps, ScrollViewState> {
1165
1165
  // they are callable from the ref.
1166
1166
 
1167
1167
  // $FlowFixMe[prop-missing] - Known issue with appending custom methods.
1168
+ // $FlowFixMe[unsafe-object-assign]
1168
1169
  const publicInstance: PublicScrollViewInstance = Object.assign(
1169
1170
  nativeInstance,
1170
1171
  {
@@ -446,6 +446,7 @@ function InternalTextInput(props: TextInputProps): React.Node {
446
446
  */
447
447
  if (instance != null) {
448
448
  // $FlowFixMe[prop-missing] - See the explanation above.
449
+ // $FlowFixMe[unsafe-object-assign]
449
450
  Object.assign(instance, {
450
451
  clear(): void {
451
452
  if (inputRef.current != null) {
@@ -258,6 +258,14 @@ export type AccessibilityPropsAndroid = $ReadOnly<{
258
258
  * See https://reactnative.dev/docs/view#importantforaccessibility
259
259
  */
260
260
  importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),
261
+
262
+ /**
263
+ * Enables the view to be screen reader focusable, not keyboard focusable. This has lower priority
264
+ * than focusable or accessible props.
265
+ *
266
+ * @platform android
267
+ */
268
+ screenReaderFocusable?: boolean,
261
269
  }>;
262
270
 
263
271
  export type AccessibilityPropsIOS = $ReadOnly<{
@@ -320,6 +328,14 @@ export type AccessibilityPropsIOS = $ReadOnly<{
320
328
  * @platform ios
321
329
  */
322
330
  accessibilityLanguage?: ?Stringish,
331
+
332
+ /**
333
+ * Blocks the user from interacting with the component through keyboard while still allowing
334
+ * screen reader to interact with it if this View is still accessible.
335
+ *
336
+ * @platform ios
337
+ */
338
+ accessibilityRespondsToUserInteraction?: ?boolean,
323
339
  }>;
324
340
 
325
341
  export type AccessibilityProps = $ReadOnly<{
@@ -17,5 +17,5 @@ export const version: $ReadOnly<{
17
17
  major: 0,
18
18
  minor: 80,
19
19
  patch: 0,
20
- prerelease: 'nightly-20250428-9efcdc091',
20
+ prerelease: 'nightly-20250506-3ac16dd6a',
21
21
  };
@@ -205,6 +205,7 @@ const validAttributesForNonEventProps = {
205
205
  accessibilityValue: true,
206
206
  experimental_accessibilityOrder: true,
207
207
  importantForAccessibility: true,
208
+ screenReaderFocusable: true,
208
209
  role: true,
209
210
  rotation: true,
210
211
  scaleX: true,
@@ -198,6 +198,7 @@ const validAttributesForNonEventProps = {
198
198
  accessibilityShowsLargeContentViewer: true,
199
199
  accessibilityLargeContentTitle: true,
200
200
  experimental_accessibilityOrder: true,
201
+ accessibilityRespondsToUserInteraction: true,
201
202
  testID: true,
202
203
  backgroundColor: {process: require('../StyleSheet/processColor').default},
203
204
  backfaceVisibility: true,