react-native 0.84.0-nightly-20251202-b0e754bc7 → 0.84.0-nightly-20251204-5bb3a6d68

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 (50) hide show
  1. package/Libraries/Animated/animations/Animation.js +1 -2
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/React/Base/RCTVersion.m +1 -1
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +186 -194
  5. package/ReactAndroid/gradle.properties +1 -1
  6. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -0
  7. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +1 -7
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +1 -11
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +1 -3
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +1 -3
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +1 -12
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +1 -3
  13. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +0 -8
  15. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +1 -15
  16. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +1 -4
  17. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +1 -0
  18. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +11 -0
  19. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  20. package/ReactCommon/jsi/jsi/jsi.cpp +4 -0
  21. package/ReactCommon/jsi/jsi/jsi.h +66 -0
  22. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +18 -0
  23. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +13 -4
  24. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +14 -1
  25. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +24 -0
  26. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +13 -1
  27. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +1 -1
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +1 -5
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +1 -6
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +87 -105
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +2 -4
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +1 -5
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +1 -10
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +1 -2
  35. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +1 -6
  36. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +1 -3
  37. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +2 -6
  38. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +130 -0
  39. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +5 -1
  40. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +4 -0
  41. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
  42. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +6 -22
  43. package/ReactCommon/react/runtime/ReactInstance.cpp +1 -1
  44. package/package.json +10 -10
  45. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
  46. package/sdks/hermes-engine/version.properties +1 -1
  47. package/src/private/animated/createAnimatedPropsHook.js +1 -2
  48. package/src/private/featureflags/ReactNativeFeatureFlags.js +1 -6
  49. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +1 -2
  50. /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
@@ -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<<95616bb241e59e35a9f4b3667cbc0822>>
7
+ * @generated SignedSource<<66f2c701d95db2fbeefb2705ae326e08>>
8
8
  */
9
9
 
10
10
  /**
@@ -57,12 +57,6 @@ class ReactNativeFeatureFlagsJavaProvider
57
57
  return method(javaProvider_);
58
58
  }
59
59
 
60
- bool cxxNativeAnimatedRemoveJsSync() override {
61
- static const auto method =
62
- getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("cxxNativeAnimatedRemoveJsSync");
63
- return method(javaProvider_);
64
- }
65
-
66
60
  bool disableEarlyViewCommandExecution() override {
67
61
  static const auto method =
68
62
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("disableEarlyViewCommandExecution");
@@ -598,11 +592,6 @@ bool JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedEnabled(
598
592
  return ReactNativeFeatureFlags::cxxNativeAnimatedEnabled();
599
593
  }
600
594
 
601
- bool JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedRemoveJsSync(
602
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
603
- return ReactNativeFeatureFlags::cxxNativeAnimatedRemoveJsSync();
604
- }
605
-
606
595
  bool JReactNativeFeatureFlagsCxxInterop::disableEarlyViewCommandExecution(
607
596
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
608
597
  return ReactNativeFeatureFlags::disableEarlyViewCommandExecution();
@@ -1073,9 +1062,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1073
1062
  makeNativeMethod(
1074
1063
  "cxxNativeAnimatedEnabled",
1075
1064
  JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedEnabled),
1076
- makeNativeMethod(
1077
- "cxxNativeAnimatedRemoveJsSync",
1078
- JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedRemoveJsSync),
1079
1065
  makeNativeMethod(
1080
1066
  "disableEarlyViewCommandExecution",
1081
1067
  JReactNativeFeatureFlagsCxxInterop::disableEarlyViewCommandExecution),
@@ -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<<4c8932d29eda2db32a3e82cfae202bab>>
7
+ * @generated SignedSource<<f14600a85cec20388ba1a5bc63010a68>>
8
8
  */
9
9
 
10
10
  /**
@@ -39,9 +39,6 @@ class JReactNativeFeatureFlagsCxxInterop
39
39
  static bool cxxNativeAnimatedEnabled(
40
40
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
41
41
 
42
- static bool cxxNativeAnimatedRemoveJsSync(
43
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
44
-
45
42
  static bool disableEarlyViewCommandExecution(
46
43
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
47
44
 
@@ -300,6 +300,7 @@ void JReactHostInspectorTarget::recordFrameTimings(
300
300
  frameTimingSequence->getBeginDrawingTimestamp(),
301
301
  frameTimingSequence->getCommitTimestamp(),
302
302
  frameTimingSequence->getEndDrawingTimestamp(),
303
+ frameTimingSequence->getScreenshot(),
303
304
  });
304
305
  }
305
306
 
@@ -67,6 +67,17 @@ struct JFrameTimingSequence : public jni::JavaClass<JFrameTimingSequence> {
67
67
  return HighResTimeStamp::fromChronoSteadyClockTimePoint(
68
68
  std::chrono::steady_clock::time_point(std::chrono::nanoseconds(getFieldValue(field))));
69
69
  }
70
+
71
+ std::optional<std::string> getScreenshot() const
72
+ {
73
+ auto field = javaClassStatic()->getField<jstring>("screenshot");
74
+ auto javaScreenshot = getFieldValue(field);
75
+ if (javaScreenshot) {
76
+ auto jstring = jni::static_ref_cast<jni::JString>(javaScreenshot);
77
+ return jstring->toStdString();
78
+ }
79
+ return std::nullopt;
80
+ }
70
81
  };
71
82
 
72
83
  struct JReactHostImpl : public jni::JavaClass<JReactHostImpl> {
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 84;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20251202-b0e754bc7";
25
+ std::string_view Prerelease = "nightly-20251204-5bb3a6d68";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -284,6 +284,10 @@ HostObject::~HostObject() {}
284
284
 
285
285
  NativeState::~NativeState() {}
286
286
 
287
+ #ifdef JSI_UNSTABLE
288
+ Serialized::~Serialized() {}
289
+ #endif
290
+
287
291
  Runtime::~Runtime() {}
288
292
 
289
293
  ICast* Runtime::castInterface(const UUID& /*interfaceUUID*/) {
@@ -257,6 +257,72 @@ class JSI_EXPORT NativeState {
257
257
  // the future. Until released, these features may be subject to change. After
258
258
  // release, these features will be moved out of JSI_UNSTABLE and become frozen.
259
259
  #ifdef JSI_UNSTABLE
260
+ /// Opaque class that is used to store serialized object from a runtime. The
261
+ /// lifetime of this object is orthogonal to the original runtime object, and
262
+ /// may outlive the original object.
263
+ class JSI_EXPORT Serialized {
264
+ public:
265
+ /// Uses \p secretAddr to validate if the Serialized data is supported. If so,
266
+ /// return the pointer to the underlying serialized data. Otherwise, return a
267
+ /// nullptr. This should be used by the runtime to deserialize the data.
268
+ virtual void* getPrivate(const void* secretAddr) = 0;
269
+ virtual ~Serialized();
270
+ };
271
+
272
+ /// Provides a set of APIs that allows copying objects between different
273
+ /// runtime instances. The runtimes instances must be of the same type. As an
274
+ /// example, a serialized object from Hermes runtime may only be deserialized by
275
+ /// another Hermes runtime.
276
+ class JSI_EXPORT ISerialization : public ICast {
277
+ public:
278
+ static constexpr jsi::UUID uuid{
279
+ 0xd40fe0ec,
280
+ 0xa47c,
281
+ 0x42c9,
282
+ 0x8c09,
283
+ 0x661aeab832d8};
284
+
285
+ /// Serializes the given Value \p value using the structured clone algorithm.
286
+ /// It returns a shared pointer of an opaque Serialized object that can be
287
+ /// deserialized multiple times. The lifetime of the Serialized object is not
288
+ /// tied to the lifetime of the original object.
289
+ virtual std::shared_ptr<Serialized> serialize(Value& value) = 0;
290
+
291
+ /// Given a Serialized object provided by \p serialized, deserialize it using
292
+ /// the structured clone algorithm into a JS value in the current runtime.
293
+ /// Returns the deserialized JS value.
294
+ virtual Value deserialize(const std::shared_ptr<Serialized>& serialized) = 0;
295
+
296
+ /// Serializes the given jsi::Value \p value using the structured clone
297
+ /// algorithm. \p transferList must be a JS Array. Given the length property
298
+ /// of \p transferList, this API will transfer everything at index [0, length
299
+ /// - 1] to the serialized object. The transferred values will no longer be
300
+ /// usable in the original runtime. It returns a unique pointer of an opaque
301
+ /// Serialized object that can be deserialized once only by
302
+ /// deserializeWithTransfer. The lifetime of the Serialized object is not tied
303
+ /// to the lifetime of the original object.
304
+ virtual std::unique_ptr<Serialized> serializeWithTransfer(
305
+ Value& value,
306
+ const Array& transferList) = 0;
307
+
308
+ /// Using the structure clone algorithm, deserialize the object provided by \p
309
+ /// serialized into a JS value in the current runtime. \p serialized must be
310
+ /// created by serializeWithTransfer. If the current runtime does not support
311
+ /// the serialization scheme in \p serialized, then this method will throw and
312
+ /// \p serialized will remain unmodified. Otherwise, this will consume the
313
+ /// serialized data entirely and make the serialized objects in the current
314
+ /// runtime. Any transferred values in the serialized object will be owned by
315
+ /// the current runtime.
316
+ // This method returns an Array containing the deserialized values, where the
317
+ // first element is the value passed into serializeWithTransfer,
318
+ /// followed by all transferred values.
319
+ virtual Array deserializeWithTransfer(
320
+ std::unique_ptr<Serialized>& serialized) = 0;
321
+
322
+ protected:
323
+ ~ISerialization() = default;
324
+ };
325
+
260
326
  #endif // JSI_UNSTABLE
261
327
 
262
328
  /// Represents a JS runtime. Movable, but not copyable. Note that
@@ -95,4 +95,22 @@ TEST_F(TracingTest, EmitsRecordedFrameTimingSequences) {
95
95
  EXPECT_THAT(allTraceEvents, Contains(AtJsonPtr("/name", "DrawFrame")));
96
96
  }
97
97
 
98
+ TEST_F(TracingTest, EmitsScreenshotEventWhenScreenshotValuePassed) {
99
+ InSequence s;
100
+
101
+ startTracing({tracing::Category::Screenshot});
102
+ auto now = HighResTimeStamp::now();
103
+ page_->recordFrameTimings(
104
+ tracing::FrameTimingSequence(
105
+ 1, // id
106
+ 11, // threadId
107
+ now,
108
+ now + HighResDuration::fromNanoseconds(10),
109
+ now + HighResDuration::fromNanoseconds(50),
110
+ "base64EncodedScreenshotData"));
111
+
112
+ auto allTraceEvents = endTracingAndCollectEvents();
113
+ EXPECT_THAT(allTraceEvents, Contains(AtJsonPtr("/name", "Screenshot")));
114
+ }
115
+
98
116
  } // namespace facebook::react::jsinspector_modern
@@ -13,6 +13,8 @@
13
13
 
14
14
  namespace facebook::react::jsinspector_modern::tracing {
15
15
 
16
+ using FrameSequenceId = uint64_t;
17
+
16
18
  /**
17
19
  * A struct representing a sequence of frame timings that happened on the Host side.
18
20
  */
@@ -20,23 +22,25 @@ struct FrameTimingSequence {
20
22
  FrameTimingSequence() = delete;
21
23
 
22
24
  FrameTimingSequence(
23
- uint64_t id,
25
+ FrameSequenceId id,
24
26
  ThreadId threadId,
25
27
  HighResTimeStamp beginDrawingTimestamp,
26
28
  HighResTimeStamp commitTimestamp,
27
- HighResTimeStamp endDrawingTimestamp)
29
+ HighResTimeStamp endDrawingTimestamp,
30
+ std::optional<std::string> screenshot = std::nullopt)
28
31
  : id(id),
29
32
  threadId(threadId),
30
33
  beginDrawingTimestamp(beginDrawingTimestamp),
31
34
  commitTimestamp(commitTimestamp),
32
- endDrawingTimestamp(endDrawingTimestamp)
35
+ endDrawingTimestamp(endDrawingTimestamp),
36
+ screenshot(std::move(screenshot))
33
37
  {
34
38
  }
35
39
 
36
40
  /**
37
41
  * Unique ID of the sequence, used by Chrome DevTools Frontend to identify the events that form one sequence.
38
42
  */
39
- uint64_t id;
43
+ FrameSequenceId id;
40
44
 
41
45
  /**
42
46
  * The ID of the native thread that is associated with the frame.
@@ -46,6 +50,11 @@ struct FrameTimingSequence {
46
50
  HighResTimeStamp beginDrawingTimestamp;
47
51
  HighResTimeStamp commitTimestamp;
48
52
  HighResTimeStamp endDrawingTimestamp;
53
+
54
+ /**
55
+ * Optional screenshot data (base64 encoded) captured during the frame.
56
+ */
57
+ std::optional<std::string> screenshot;
49
58
  };
50
59
 
51
60
  } // namespace facebook::react::jsinspector_modern::tracing
@@ -100,7 +100,7 @@ constexpr int FALLBACK_LAYER_TREE_ID = 1;
100
100
  chunk.push_back(
101
101
  TraceEventSerializer::serialize(std::move(setLayerTreeIdEvent)));
102
102
 
103
- for (const auto& frameTimingSequence : frameTimings) {
103
+ for (auto&& frameTimingSequence : frameTimings) {
104
104
  if (chunk.size() >= chunkSize) {
105
105
  chunkCallback(std::move(chunk));
106
106
  chunk = generateNewChunk(chunkSize);
@@ -121,6 +121,19 @@ constexpr int FALLBACK_LAYER_TREE_ID = 1;
121
121
  chunk.push_back(TraceEventSerializer::serialize(std::move(commitEvent)));
122
122
  chunk.push_back(
123
123
  TraceEventSerializer::serialize(std::move(endDrawingEvent)));
124
+
125
+ if (frameTimingSequence.screenshot.has_value()) {
126
+ auto screenshotEvent = TraceEventGenerator::createScreenshotEvent(
127
+ frameTimingSequence.id,
128
+ FALLBACK_LAYER_TREE_ID,
129
+ std::move(frameTimingSequence.screenshot.value()),
130
+ frameTimingSequence.endDrawingTimestamp,
131
+ processId,
132
+ frameTimingSequence.threadId);
133
+
134
+ chunk.push_back(
135
+ TraceEventSerializer::serialize(std::move(screenshotEvent)));
136
+ }
124
137
  }
125
138
 
126
139
  if (!chunk.empty()) {
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  #include "TraceEventGenerator.h"
9
+ #include "Timing.h"
9
10
  #include "TracingCategory.h"
10
11
 
11
12
  namespace facebook::react::jsinspector_modern::tracing {
@@ -77,4 +78,27 @@ TraceEventGenerator::createFrameTimingsEvents(
77
78
  return {std::move(beginEvent), std::move(commitEvent), std::move(drawEvent)};
78
79
  }
79
80
 
81
+ /* static */ TraceEvent TraceEventGenerator::createScreenshotEvent(
82
+ FrameSequenceId frameSequenceId,
83
+ int sourceId,
84
+ std::string&& snapshot,
85
+ HighResTimeStamp expectedDisplayTime,
86
+ ProcessId processId,
87
+ ThreadId threadId) {
88
+ folly::dynamic args = folly::dynamic::object("snapshot", std::move(snapshot))(
89
+ "source_id", sourceId)("frame_sequence", frameSequenceId)(
90
+ "expected_display_time",
91
+ highResTimeStampToTracingClockTimeStamp(expectedDisplayTime));
92
+
93
+ return TraceEvent{
94
+ .name = "Screenshot",
95
+ .cat = {Category::Screenshot},
96
+ .ph = 'O',
97
+ .ts = expectedDisplayTime,
98
+ .pid = processId,
99
+ .tid = threadId,
100
+ .args = std::move(args),
101
+ };
102
+ }
103
+
80
104
  }; // namespace facebook::react::jsinspector_modern::tracing
@@ -9,6 +9,7 @@
9
9
 
10
10
  #include "TraceEvent.h"
11
11
 
12
+ #include <jsinspector-modern/tracing/FrameTimingSequence.h>
12
13
  #include <react/timing/primitives.h>
13
14
 
14
15
  #include <tuple>
@@ -35,13 +36,24 @@ class TraceEventGenerator {
35
36
  * Creates canonical "BeginFrame", "Commit", "DrawFrame" trace events.
36
37
  */
37
38
  static std::tuple<TraceEvent, TraceEvent, TraceEvent> createFrameTimingsEvents(
38
- uint64_t sequenceId,
39
+ FrameSequenceId sequenceId,
39
40
  int layerTreeId,
40
41
  HighResTimeStamp beginDrawingTimestamp,
41
42
  HighResTimeStamp commitTimestamp,
42
43
  HighResTimeStamp endDrawingTimestamp,
43
44
  ProcessId processId,
44
45
  ThreadId threadId);
46
+
47
+ /**
48
+ * Creates canonical "Screenshot" trace event.
49
+ */
50
+ static TraceEvent createScreenshotEvent(
51
+ FrameSequenceId frameSequenceId,
52
+ int sourceId,
53
+ std::string &&snapshot,
54
+ HighResTimeStamp expectedDisplayTime,
55
+ ProcessId processId,
56
+ ThreadId threadId);
45
57
  };
46
58
 
47
59
  }; // namespace facebook::react::jsinspector_modern::tracing
@@ -58,7 +58,7 @@ inline std::optional<Category> getTracingCategoryFromString(const std::string &s
58
58
  } else if (str == "v8.execute") {
59
59
  return Category::RuntimeExecution;
60
60
  } else if (str == "disabled-by-default-devtools.screenshot") {
61
- return Category::RuntimeExecution;
61
+ return Category::Screenshot;
62
62
  } else {
63
63
  return std::nullopt;
64
64
  }
@@ -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<<46aafe1d22354ad53f81db7ab41b967e>>
7
+ * @generated SignedSource<<34d260e51b2f70825c4867c98bbcf3de>>
8
8
  */
9
9
 
10
10
  /**
@@ -38,10 +38,6 @@ bool ReactNativeFeatureFlags::cxxNativeAnimatedEnabled() {
38
38
  return getAccessor().cxxNativeAnimatedEnabled();
39
39
  }
40
40
 
41
- bool ReactNativeFeatureFlags::cxxNativeAnimatedRemoveJsSync() {
42
- return getAccessor().cxxNativeAnimatedRemoveJsSync();
43
- }
44
-
45
41
  bool ReactNativeFeatureFlags::disableEarlyViewCommandExecution() {
46
42
  return getAccessor().disableEarlyViewCommandExecution();
47
43
  }
@@ -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<<e3acef3e3c9b032fce0902019fa6ff3f>>
7
+ * @generated SignedSource<<502fa8935abd547231be7980d768b817>>
8
8
  */
9
9
 
10
10
  /**
@@ -54,11 +54,6 @@ class ReactNativeFeatureFlags {
54
54
  */
55
55
  RN_EXPORT static bool cxxNativeAnimatedEnabled();
56
56
 
57
- /**
58
- * Removes JS sync at end of native animation
59
- */
60
- RN_EXPORT static bool cxxNativeAnimatedRemoveJsSync();
61
-
62
57
  /**
63
58
  * Dispatch view commands in mount item order.
64
59
  */