react-native-tvos 0.82.0-0rc0 → 0.82.0-0rc3

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 (101) hide show
  1. package/Libraries/BatchedBridge/BatchedBridge.js +1 -0
  2. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  3. package/Libraries/Components/Button.js +0 -1
  4. package/Libraries/Components/Touchable/TouchableHighlight.js +0 -3
  5. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +0 -1
  6. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +0 -1
  7. package/Libraries/Components/Touchable/TouchableOpacity.js +0 -1
  8. package/Libraries/Components/View/ViewPropTypes.d.ts +1 -5
  9. package/Libraries/Components/View/ViewPropTypes.js +1 -1
  10. package/Libraries/Core/ReactNativeVersion.js +1 -1
  11. package/Libraries/Core/Timers/JSTimers.js +1 -0
  12. package/Libraries/Core/Timers/NativeTiming.js +1 -0
  13. package/Libraries/Core/Timers/immediateShim.js +1 -0
  14. package/Libraries/Core/setUpPerformance.js +3 -5
  15. package/React/Base/RCTVersion.m +1 -1
  16. package/React/CoreModules/RCTAlertController.mm +6 -1
  17. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
  18. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
  19. package/ReactAndroid/build.gradle.kts +7 -0
  20. package/ReactAndroid/gradle.properties +2 -1
  21. package/ReactAndroid/hermes-engine/build.gradle.kts +28 -7
  22. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  23. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  24. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  25. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  26. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  27. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +3 -1
  28. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  29. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  30. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -0
  31. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  32. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  33. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +4 -0
  34. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +4 -0
  35. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +4 -0
  36. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  37. package/ReactCommon/hermes/executor/CMakeLists.txt +4 -0
  38. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +8 -5
  39. package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +4 -0
  40. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +2 -2
  41. package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +2 -2
  42. package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +2 -2
  43. package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +2 -2
  44. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +2 -0
  45. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  46. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  47. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +44 -26
  48. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  49. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  50. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  51. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +5 -1
  52. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  53. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  54. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +8 -0
  55. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  56. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
  57. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
  58. package/ReactCommon/react/nativemodule/webperformance/CMakeLists.txt +1 -1
  59. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +9 -9
  60. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.h +3 -0
  61. package/ReactCommon/react/nativemodule/webperformance/React-webperformancenativemodule.podspec +58 -0
  62. package/ReactCommon/react/runtime/CMakeLists.txt +4 -0
  63. package/ReactCommon/react/runtime/hermes/CMakeLists.txt +4 -0
  64. package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +7 -3
  65. package/ReactCommon/react/timing/primitives.h +12 -0
  66. package/flow/bom.js.flow +158 -1
  67. package/package.json +9 -8
  68. package/scripts/cocoapods/autolinking.rb +6 -0
  69. package/scripts/cocoapods/codegen_utils.rb +1 -1
  70. package/scripts/cocoapods/jsengine.rb +2 -1
  71. package/scripts/cocoapods/utils.rb +8 -2
  72. package/scripts/codegen/generate-artifacts-executor/index.js +5 -6
  73. package/scripts/codegen/generate-artifacts-executor/utils.js +41 -10
  74. package/scripts/react_native_pods.rb +1 -0
  75. package/scripts/replace-rncore-version.js +4 -2
  76. package/sdks/hermes-engine/hermes-engine.podspec +35 -12
  77. package/sdks/hermes-engine/hermes-utils.rb +41 -10
  78. package/sdks/hermes-engine/utils/build-apple-framework.sh +7 -1
  79. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +8 -1
  80. package/sdks/hermes-engine/utils/build-hermesc-xcode.sh +1 -1
  81. package/sdks/hermes-engine/utils/replace_hermes_version.js +4 -2
  82. package/sdks/hermes-engine/version.properties +1 -0
  83. package/sdks/hermesc/osx-bin/hermes +0 -0
  84. package/sdks/hermesc/osx-bin/hermesc +0 -0
  85. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  86. package/settings.gradle.kts +9 -0
  87. package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
  88. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
  89. package/src/private/setup/{setUpPerformanceObserver.js → setUpPerformanceModern.js} +43 -18
  90. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -0
  91. package/src/private/webapis/performance/EventTiming.js +34 -15
  92. package/src/private/webapis/performance/LongTasks.js +35 -2
  93. package/src/private/webapis/performance/Performance.js +49 -13
  94. package/src/private/webapis/performance/PerformanceEntry.js +21 -8
  95. package/src/private/webapis/performance/PerformanceObserver.js +30 -1
  96. package/src/private/webapis/performance/ReactNativeStartupTiming.js +3 -24
  97. package/src/private/webapis/performance/ResourceTiming.js +29 -18
  98. package/src/private/webapis/performance/UserTiming.js +33 -28
  99. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -4
  100. package/src/private/webapis/performance/specs/NativePerformance.js +2 -0
  101. package/third-party-podspecs/replace_dependencies_version.js +4 -2
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
+ * @deprecated
9
10
  */
10
11
 
11
12
  'use strict';
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
+ * @deprecated
9
10
  */
10
11
 
11
12
  'use strict';
@@ -63,7 +63,6 @@ export type ButtonProps = $ReadOnly<{
63
63
  @platform tv
64
64
 
65
65
  @default false
66
- @deprecated Use `focusable` instead
67
66
  */
68
67
  hasTVPreferredFocus?: ?boolean,
69
68
 
@@ -33,9 +33,6 @@ type AndroidProps = $ReadOnly<{
33
33
  }>;
34
34
 
35
35
  type IOSProps = $ReadOnly<{
36
- /**
37
- * @deprecated Use `focusable` instead
38
- */
39
36
  hasTVPreferredFocus?: ?boolean,
40
37
  isTVSelectable?: ?boolean,
41
38
  tvParallaxProperties?: TVParallaxPropertiesType,
@@ -30,7 +30,6 @@ type TouchableNativeFeedbackTVProps = {
30
30
  * *(Apple TV only)* TV preferred focus (see documentation for the View component).
31
31
  *
32
32
  * @platform ios
33
- * @deprecated Use `focusable` instead
34
33
  */
35
34
  hasTVPreferredFocus?: ?boolean,
36
35
 
@@ -16,7 +16,6 @@ export interface TVProps {
16
16
  * *(Apple TV only)* TV preferred focus (see documentation for the View component).
17
17
  *
18
18
  * @platform ios
19
- * @deprecated Use `focusable` instead
20
19
  */
21
20
  hasTVPreferredFocus?: boolean | undefined;
22
21
 
@@ -28,7 +28,6 @@ export type TouchableOpacityTVProps = $ReadOnly<{
28
28
  * *(Apple TV only)* TV preferred focus (see documentation for the View component).
29
29
  *
30
30
  * @platform ios
31
- * @deprecated Use `focusable` instead
32
31
  */
33
32
  hasTVPreferredFocus?: ?boolean,
34
33
  isTVSelectable?: ?boolean,
@@ -26,9 +26,6 @@ import {Touchable} from '../Touchable/Touchable';
26
26
  import {AccessibilityProps} from './ViewAccessibility';
27
27
  import type {BubblingEventHandler} from 'react-native/Libraries/Types/CodegenTypes';
28
28
 
29
- /**
30
- * @deprecated These properties are not implemented natively.
31
- */
32
29
  export interface TVViewPropsIOS {
33
30
  /**
34
31
  * *(Apple TV only)* When set to true, this view will be focusable
@@ -39,10 +36,9 @@ export interface TVViewPropsIOS {
39
36
  isTVSelectable?: boolean | undefined;
40
37
 
41
38
  /**
42
- * *(Apple TV only)* May be set to true to force the Apple TV focus engine to move focus to this view.
39
+ * *(Apple TV and Android TV)* May be set to true to force the Apple TV focus engine to move focus to this view.
43
40
  *
44
41
  * @platform ios
45
- * @deprecated Use `focusable` instead
46
42
  */
47
43
  hasTVPreferredFocus?: boolean | undefined;
48
44
 
@@ -328,7 +328,7 @@ export type TVViewPropsIOS = $ReadOnly<{
328
328
  isTVSelectable?: boolean,
329
329
 
330
330
  /**
331
- * *(Apple TV only)* May be set to true to force the Apple TV focus engine to move focus to this view.
331
+ * *(Apple TV and Android TV)* May be set to true to force the Apple TV focus engine to move focus to this view.
332
332
  *
333
333
  * @platform ios
334
334
  */
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 82;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = '0rc0';
32
+ static prerelease: string | null = '0rc3';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @flow
8
8
  * @format
9
+ * @deprecated
9
10
  */
10
11
 
11
12
  import NativeTiming from './NativeTiming';
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
+ * @deprecated
9
10
  */
10
11
 
11
12
  export * from '../../../src/private/specs_DEPRECATED/modules/NativeTiming';
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @flow
8
8
  * @format
9
+ * @deprecated
9
10
  */
10
11
 
11
12
  'use strict';
@@ -4,19 +4,17 @@
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
- * @flow strict
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
+ import setUpPerformanceModern from '../../src/private/setup/setUpPerformanceModern';
11
12
  import NativePerformance from '../../src/private/webapis/performance/specs/NativePerformance';
12
13
 
13
14
  // In case if the native implementation of the Performance API is available, use it,
14
15
  // otherwise fall back to the legacy/default one, which only defines 'Performance.now()'
15
16
  if (NativePerformance) {
16
- const Performance =
17
- require('../../src/private/webapis/performance/Performance').default;
18
- // $FlowExpectedError[cannot-write]
19
- global.performance = new Performance();
17
+ setUpPerformanceModern();
20
18
  } else {
21
19
  if (!global.performance) {
22
20
  // $FlowExpectedError[cannot-write]
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(82),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"0rc0",
27
+ RCTVersionPrerelease: @"0rc3",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -20,7 +20,12 @@
20
20
  - (UIWindow *)alertWindow
21
21
  {
22
22
  if (_alertWindow == nil) {
23
- _alertWindow = [[UIWindow alloc] initWithWindowScene:RCTKeyWindow().windowScene];
23
+ UIWindowScene *scene = RCTKeyWindow().windowScene;
24
+ if (scene != nil) {
25
+ _alertWindow = [[UIWindow alloc] initWithWindowScene:scene];
26
+ } else {
27
+ _alertWindow = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
28
+ }
24
29
 
25
30
  if (_alertWindow) {
26
31
  _alertWindow.rootViewController = [UIViewController new];
@@ -307,6 +307,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableV
307
307
  rt
308
308
  );
309
309
  }
310
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableWebPerformanceAPIsByDefault(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
311
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->enableWebPerformanceAPIsByDefault(
312
+ rt
313
+ );
314
+ }
310
315
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixMappingOfEventPrioritiesBetweenFabricAndReact(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
311
316
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->fixMappingOfEventPrioritiesBetweenFabricAndReact(
312
317
  rt
@@ -480,6 +485,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
480
485
  methodMap_["enableVirtualViewDebugFeatures"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableVirtualViewDebugFeatures};
481
486
  methodMap_["enableVirtualViewRenderState"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableVirtualViewRenderState};
482
487
  methodMap_["enableVirtualViewWindowFocusDetection"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableVirtualViewWindowFocusDetection};
488
+ methodMap_["enableWebPerformanceAPIsByDefault"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableWebPerformanceAPIsByDefault};
483
489
  methodMap_["fixMappingOfEventPrioritiesBetweenFabricAndReact"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixMappingOfEventPrioritiesBetweenFabricAndReact};
484
490
  methodMap_["fuseboxEnabledRelease"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fuseboxEnabledRelease};
485
491
  methodMap_["fuseboxNetworkInspectionEnabled"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fuseboxNetworkInspectionEnabled};
@@ -3213,6 +3219,11 @@ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_now(jsi::Runtime &r
3213
3219
  rt
3214
3220
  );
3215
3221
  }
3222
+ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_timeOrigin(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
3223
+ return static_cast<NativePerformanceCxxSpecJSI *>(&turboModule)->timeOrigin(
3224
+ rt
3225
+ );
3226
+ }
3216
3227
  static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_reportMark(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
3217
3228
  static_cast<NativePerformanceCxxSpecJSI *>(&turboModule)->reportMark(
3218
3229
  rt,
@@ -3335,6 +3346,7 @@ static jsi::Value __hostFunction_NativePerformanceCxxSpecJSI_clearEventCountsFor
3335
3346
  NativePerformanceCxxSpecJSI::NativePerformanceCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
3336
3347
  : TurboModule("NativePerformanceCxx", jsInvoker) {
3337
3348
  methodMap_["now"] = MethodMetadata {0, __hostFunction_NativePerformanceCxxSpecJSI_now};
3349
+ methodMap_["timeOrigin"] = MethodMetadata {0, __hostFunction_NativePerformanceCxxSpecJSI_timeOrigin};
3338
3350
  methodMap_["reportMark"] = MethodMetadata {3, __hostFunction_NativePerformanceCxxSpecJSI_reportMark};
3339
3351
  methodMap_["reportMeasure"] = MethodMetadata {4, __hostFunction_NativePerformanceCxxSpecJSI_reportMeasure};
3340
3352
  methodMap_["getMarkTime"] = MethodMetadata {1, __hostFunction_NativePerformanceCxxSpecJSI_getMarkTime};
@@ -371,6 +371,7 @@ public:
371
371
  virtual bool enableVirtualViewDebugFeatures(jsi::Runtime &rt) = 0;
372
372
  virtual bool enableVirtualViewRenderState(jsi::Runtime &rt) = 0;
373
373
  virtual bool enableVirtualViewWindowFocusDetection(jsi::Runtime &rt) = 0;
374
+ virtual bool enableWebPerformanceAPIsByDefault(jsi::Runtime &rt) = 0;
374
375
  virtual bool fixMappingOfEventPrioritiesBetweenFabricAndReact(jsi::Runtime &rt) = 0;
375
376
  virtual bool fuseboxEnabledRelease(jsi::Runtime &rt) = 0;
376
377
  virtual bool fuseboxNetworkInspectionEnabled(jsi::Runtime &rt) = 0;
@@ -786,6 +787,14 @@ private:
786
787
  return bridging::callFromJs<bool>(
787
788
  rt, &T::enableVirtualViewWindowFocusDetection, jsInvoker_, instance_);
788
789
  }
790
+ bool enableWebPerformanceAPIsByDefault(jsi::Runtime &rt) override {
791
+ static_assert(
792
+ bridging::getParameterCount(&T::enableWebPerformanceAPIsByDefault) == 1,
793
+ "Expected enableWebPerformanceAPIsByDefault(...) to have 1 parameters");
794
+
795
+ return bridging::callFromJs<bool>(
796
+ rt, &T::enableWebPerformanceAPIsByDefault, jsInvoker_, instance_);
797
+ }
789
798
  bool fixMappingOfEventPrioritiesBetweenFabricAndReact(jsi::Runtime &rt) override {
790
799
  static_assert(
791
800
  bridging::getParameterCount(&T::fixMappingOfEventPrioritiesBetweenFabricAndReact) == 1,
@@ -8841,6 +8850,7 @@ protected:
8841
8850
 
8842
8851
  public:
8843
8852
  virtual double now(jsi::Runtime &rt) = 0;
8853
+ virtual double timeOrigin(jsi::Runtime &rt) = 0;
8844
8854
  virtual void reportMark(jsi::Runtime &rt, jsi::String name, double startTime, jsi::Value entry) = 0;
8845
8855
  virtual void reportMeasure(jsi::Runtime &rt, jsi::String name, double startTime, double duration, jsi::Value entry) = 0;
8846
8856
  virtual std::optional<double> getMarkTime(jsi::Runtime &rt, jsi::String name) = 0;
@@ -8897,6 +8907,14 @@ private:
8897
8907
  return bridging::callFromJs<double>(
8898
8908
  rt, &T::now, jsInvoker_, instance_);
8899
8909
  }
8910
+ double timeOrigin(jsi::Runtime &rt) override {
8911
+ static_assert(
8912
+ bridging::getParameterCount(&T::timeOrigin) == 1,
8913
+ "Expected timeOrigin(...) to have 1 parameters");
8914
+
8915
+ return bridging::callFromJs<double>(
8916
+ rt, &T::timeOrigin, jsInvoker_, instance_);
8917
+ }
8900
8918
  void reportMark(jsi::Runtime &rt, jsi::String name, double startTime, jsi::Value entry) override {
8901
8919
  static_assert(
8902
8920
  bridging::getParameterCount(&T::reportMark) == 4,
@@ -41,6 +41,9 @@ val downloadsDir =
41
41
  val thirdPartyNdkDir = File("$buildDir/third-party-ndk")
42
42
  val reactNativeRootDir = projectDir.parent
43
43
 
44
+ val hermesV1Enabled =
45
+ rootProject.extensions.getByType(PrivateReactExtension::class.java).hermesV1Enabled.get()
46
+
44
47
  // We put the publishing version from gradle.properties inside ext. so other
45
48
  // subprojects can access it as well.
46
49
  extra["publishing_version"] = project.findProperty("VERSION_NAME")?.toString()!!
@@ -567,6 +570,10 @@ android {
567
570
  "-DCMAKE_POLICY_DEFAULT_CMP0069=NEW",
568
571
  )
569
572
 
573
+ if (hermesV1Enabled) {
574
+ arguments("-DHERMES_V1_ENABLED=1")
575
+ }
576
+
570
577
  targets(
571
578
  "reactnative",
572
579
  "jsi",
@@ -1,5 +1,6 @@
1
- VERSION_NAME=0.82.0-0rc0
1
+ VERSION_NAME=0.82.0-0rc3
2
2
  react.internal.publishingGroup=io.github.react-native-tvos
3
+ react.internal.hermesPublishingGroup=com.facebook.hermes
3
4
 
4
5
  android.useAndroidX=true
5
6
 
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ import com.facebook.react.internal.PrivateReactExtension
8
9
  import com.facebook.react.tasks.internal.*
9
10
  import de.undercouch.gradle.tasks.download.Download
10
11
  import org.apache.tools.ant.taskdefs.condition.Os
@@ -52,6 +53,8 @@ fun getSDKManagerPath(): String {
52
53
  }
53
54
  }
54
55
 
56
+ val hermesV1Enabled =
57
+ rootProject.extensions.getByType(PrivateReactExtension::class.java).hermesV1Enabled.get()
55
58
  val reactNativeRootDir = project(":packages:react-native:ReactAndroid").projectDir.parent
56
59
  val customDownloadDir = System.getenv("REACT_NATIVE_DOWNLOADS_DIR")
57
60
  val downloadsDir =
@@ -81,12 +84,21 @@ val hermesBuildOutputFileTree =
81
84
  fileTree(hermesBuildDir.toString())
82
85
  .include("**/*.cmake", "**/*.marks", "**/compiler_depends.ts", "**/Makefile", "**/link.txt")
83
86
 
84
- var hermesVersion = "main"
85
- val hermesVersionFile = File(reactNativeRootDir, "sdks/.hermesversion")
87
+ val hermesVersionProvider: Provider<String> =
88
+ providers.provider {
89
+ var hermesVersion = if (hermesV1Enabled) "250829098.0.0-stable" else "main"
90
+ val hermesVersionFile =
91
+ File(
92
+ reactNativeRootDir,
93
+ if (hermesV1Enabled) "sdks/.hermesv1version" else "sdks/.hermesversion",
94
+ )
86
95
 
87
- if (hermesVersionFile.exists()) {
88
- hermesVersion = hermesVersionFile.readText()
89
- }
96
+ if (hermesVersionFile.exists()) {
97
+ hermesVersion = hermesVersionFile.readText()
98
+ }
99
+
100
+ hermesVersion
101
+ }
90
102
 
91
103
  val ndkBuildJobs = Runtime.getRuntime().availableProcessors().toString()
92
104
  val prefabHeadersDir = File("$buildDir/prefab-headers")
@@ -97,7 +109,11 @@ val jsiDir = File(reactNativeRootDir, "ReactCommon/jsi")
97
109
  val downloadHermesDest = File(downloadsDir, "hermes.tar.gz")
98
110
  val downloadHermes by
99
111
  tasks.registering(Download::class) {
100
- src("https://github.com/facebook/hermes/tarball/${hermesVersion}")
112
+ src(
113
+ providers.provider {
114
+ "https://github.com/facebook/hermes/tarball/${hermesVersionProvider.get()}"
115
+ }
116
+ )
101
117
  onlyIfModified(true)
102
118
  overwrite(true)
103
119
  quiet(true)
@@ -153,6 +169,7 @@ val configureBuildForHermes by
153
169
  "-B",
154
170
  hermesBuildDir.toString(),
155
171
  "-DJSI_DIR=" + jsiDir.absolutePath,
172
+ "-DCMAKE_BUILD_TYPE=Release",
156
173
  )
157
174
  if (Os.isFamily(Os.FAMILY_WINDOWS)) {
158
175
  cmakeCommandLine = cmakeCommandLine + "-GNMake Makefiles"
@@ -297,7 +314,11 @@ android {
297
314
  // Therefore we're passing as build type Release, to provide a faster build.
298
315
  // This has the (unlucky) side effect of letting AGP call the build
299
316
  // tasks `configureCMakeRelease` while is actually building the debug flavor.
300
- arguments("-DCMAKE_BUILD_TYPE=Release")
317
+ arguments(
318
+ "-DCMAKE_BUILD_TYPE=Release",
319
+ // For debug builds, explicitly enable the Hermes Debugger.
320
+ "-DHERMES_ENABLE_DEBUGGER=True",
321
+ )
301
322
  }
302
323
  }
303
324
  }
@@ -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<<34c12f5a31aab5bfb874953f1beefef1>>
7
+ * @generated SignedSource<<2ecd46fdcab0202d62304dd9cdff76e0>>
8
8
  */
9
9
 
10
10
  /**
@@ -294,6 +294,12 @@ public object ReactNativeFeatureFlags {
294
294
  @JvmStatic
295
295
  public fun enableVirtualViewWindowFocusDetection(): Boolean = accessor.enableVirtualViewWindowFocusDetection()
296
296
 
297
+ /**
298
+ * Enable Web Performance APIs (Performance Timeline, User Timings, etc.) by default.
299
+ */
300
+ @JvmStatic
301
+ public fun enableWebPerformanceAPIsByDefault(): Boolean = accessor.enableWebPerformanceAPIsByDefault()
302
+
297
303
  /**
298
304
  * Uses the default event priority instead of the discreet event priority by default when dispatching events from Fabric to React.
299
305
  */
@@ -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<<392da016e0bf4193b72c44a508811e10>>
7
+ * @generated SignedSource<<3cbd83777e0840419fee9d582b4da692>>
8
8
  */
9
9
 
10
10
  /**
@@ -64,6 +64,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
64
64
  private var enableVirtualViewDebugFeaturesCache: Boolean? = null
65
65
  private var enableVirtualViewRenderStateCache: Boolean? = null
66
66
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
67
+ private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
67
68
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
68
69
  private var fuseboxEnabledReleaseCache: Boolean? = null
69
70
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
@@ -486,6 +487,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
486
487
  return cached
487
488
  }
488
489
 
490
+ override fun enableWebPerformanceAPIsByDefault(): Boolean {
491
+ var cached = enableWebPerformanceAPIsByDefaultCache
492
+ if (cached == null) {
493
+ cached = ReactNativeFeatureFlagsCxxInterop.enableWebPerformanceAPIsByDefault()
494
+ enableWebPerformanceAPIsByDefaultCache = cached
495
+ }
496
+ return cached
497
+ }
498
+
489
499
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean {
490
500
  var cached = fixMappingOfEventPrioritiesBetweenFabricAndReactCache
491
501
  if (cached == null) {
@@ -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<<a0453230524ebca2bfb8fad656a6f54a>>
7
+ * @generated SignedSource<<b92c1fc5d527033d0f7988d88533eb03>>
8
8
  */
9
9
 
10
10
  /**
@@ -116,6 +116,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
116
116
 
117
117
  @DoNotStrip @JvmStatic public external fun enableVirtualViewWindowFocusDetection(): Boolean
118
118
 
119
+ @DoNotStrip @JvmStatic public external fun enableWebPerformanceAPIsByDefault(): Boolean
120
+
119
121
  @DoNotStrip @JvmStatic public external fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
120
122
 
121
123
  @DoNotStrip @JvmStatic public external fun fuseboxEnabledRelease(): Boolean
@@ -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<<719706a983a073b6c286c49d993f7f80>>
7
+ * @generated SignedSource<<71354bd41b222239b80129659f5f5d21>>
8
8
  */
9
9
 
10
10
  /**
@@ -111,6 +111,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
111
111
 
112
112
  override fun enableVirtualViewWindowFocusDetection(): Boolean = false
113
113
 
114
+ override fun enableWebPerformanceAPIsByDefault(): Boolean = false
115
+
114
116
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = false
115
117
 
116
118
  override fun fuseboxEnabledRelease(): Boolean = false
@@ -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<<594815ba6a984c460ab8bddd91c5cae2>>
7
+ * @generated SignedSource<<4ad6fc15663277c2c8b4843f42a078f8>>
8
8
  */
9
9
 
10
10
  /**
@@ -68,6 +68,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
68
68
  private var enableVirtualViewDebugFeaturesCache: Boolean? = null
69
69
  private var enableVirtualViewRenderStateCache: Boolean? = null
70
70
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
71
+ private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
71
72
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
72
73
  private var fuseboxEnabledReleaseCache: Boolean? = null
73
74
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
@@ -534,6 +535,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
534
535
  return cached
535
536
  }
536
537
 
538
+ override fun enableWebPerformanceAPIsByDefault(): Boolean {
539
+ var cached = enableWebPerformanceAPIsByDefaultCache
540
+ if (cached == null) {
541
+ cached = currentProvider.enableWebPerformanceAPIsByDefault()
542
+ accessedFeatureFlags.add("enableWebPerformanceAPIsByDefault")
543
+ enableWebPerformanceAPIsByDefaultCache = cached
544
+ }
545
+ return cached
546
+ }
547
+
537
548
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean {
538
549
  var cached = fixMappingOfEventPrioritiesBetweenFabricAndReactCache
539
550
  if (cached == null) {
@@ -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<<f82b5905d822f8009c054a9443f86e39>>
7
+ * @generated SignedSource<<4464982256b8ce543d9235fccbf67054>>
8
8
  */
9
9
 
10
10
  /**
@@ -27,6 +27,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android : ReactN
27
27
 
28
28
  override fun enableFabricRenderer(): Boolean = true
29
29
 
30
+ override fun enableWebPerformanceAPIsByDefault(): Boolean = true
31
+
30
32
  override fun useNativeViewConfigsInBridgelessMode(): Boolean = true
31
33
 
32
34
  override fun useTurboModuleInterop(): Boolean = true
@@ -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<<dfbd5e84392f1fda0e68324582c328b2>>
7
+ * @generated SignedSource<<51e9b65c32aa4a990f21afd4f0244223>>
8
8
  */
9
9
 
10
10
  /**
@@ -111,6 +111,8 @@ public interface ReactNativeFeatureFlagsProvider {
111
111
 
112
112
  @DoNotStrip public fun enableVirtualViewWindowFocusDetection(): Boolean
113
113
 
114
+ @DoNotStrip public fun enableWebPerformanceAPIsByDefault(): Boolean
115
+
114
116
  @DoNotStrip public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
115
117
 
116
118
  @DoNotStrip public fun fuseboxEnabledRelease(): Boolean
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 82,
17
17
  "patch" to 0,
18
- "prerelease" to "0rc0"
18
+ "prerelease" to "0rc3"
19
19
  )
20
20
  }
@@ -22,6 +22,8 @@ file(TO_CMAKE_PATH "${REACT_ANDROID_DIR}" REACT_ANDROID_DIR)
22
22
  file(TO_CMAKE_PATH "${REACT_BUILD_DIR}" REACT_BUILD_DIR)
23
23
  file(TO_CMAKE_PATH "${REACT_COMMON_DIR}" REACT_COMMON_DIR)
24
24
 
25
+ set(HERMES_V1_ENABLED OFF CACHE BOOL "Build with support for Hermes v1")
26
+
25
27
  # If you have ccache installed, we're going to honor it.
26
28
  find_program(CCACHE_FOUND ccache)
27
29
  if(CCACHE_FOUND)
@@ -122,6 +124,7 @@ add_react_common_subdir(react/nativemodule/dom)
122
124
  add_react_common_subdir(react/nativemodule/featureflags)
123
125
  add_react_common_subdir(react/nativemodule/microtasks)
124
126
  add_react_common_subdir(react/nativemodule/idlecallbacks)
127
+ add_react_common_subdir(react/nativemodule/webperformance)
125
128
  add_react_common_subdir(jserrorhandler)
126
129
  add_react_common_subdir(react/runtime)
127
130
  add_react_common_subdir(react/runtime/hermes)
@@ -188,6 +191,7 @@ add_library(reactnative
188
191
  $<TARGET_OBJECTS:react_nativemodule_featureflags>
189
192
  $<TARGET_OBJECTS:react_nativemodule_idlecallbacks>
190
193
  $<TARGET_OBJECTS:react_nativemodule_microtasks>
194
+ $<TARGET_OBJECTS:react_nativemodule_webperformance>
191
195
  $<TARGET_OBJECTS:react_newarchdefaults>
192
196
  $<TARGET_OBJECTS:react_performance_cdpmetrics>
193
197
  $<TARGET_OBJECTS:react_performance_timeline>
@@ -277,6 +281,7 @@ target_include_directories(reactnative
277
281
  $<TARGET_PROPERTY:react_nativemodule_featureflags,INTERFACE_INCLUDE_DIRECTORIES>
278
282
  $<TARGET_PROPERTY:react_nativemodule_idlecallbacks,INTERFACE_INCLUDE_DIRECTORIES>
279
283
  $<TARGET_PROPERTY:react_nativemodule_microtasks,INTERFACE_INCLUDE_DIRECTORIES>
284
+ $<TARGET_PROPERTY:react_nativemodule_webperformance,INTERFACE_INCLUDE_DIRECTORIES>
280
285
  $<TARGET_PROPERTY:react_newarchdefaults,INTERFACE_INCLUDE_DIRECTORIES>
281
286
  $<TARGET_PROPERTY:react_performance_cdpmetrics,INTERFACE_INCLUDE_DIRECTORIES>
282
287
  $<TARGET_PROPERTY:react_performance_timeline,INTERFACE_INCLUDE_DIRECTORIES>
@@ -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<<16b12024bb363358ef09b9a42cb2fc97>>
7
+ * @generated SignedSource<<f4ec3b7b6f99dd3409d872470872ece6>>
8
8
  */
9
9
 
10
10
  /**
@@ -303,6 +303,12 @@ class ReactNativeFeatureFlagsJavaProvider
303
303
  return method(javaProvider_);
304
304
  }
305
305
 
306
+ bool enableWebPerformanceAPIsByDefault() override {
307
+ static const auto method =
308
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableWebPerformanceAPIsByDefault");
309
+ return method(javaProvider_);
310
+ }
311
+
306
312
  bool fixMappingOfEventPrioritiesBetweenFabricAndReact() override {
307
313
  static const auto method =
308
314
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fixMappingOfEventPrioritiesBetweenFabricAndReact");
@@ -677,6 +683,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableVirtualViewWindowFocusDetection(
677
683
  return ReactNativeFeatureFlags::enableVirtualViewWindowFocusDetection();
678
684
  }
679
685
 
686
+ bool JReactNativeFeatureFlagsCxxInterop::enableWebPerformanceAPIsByDefault(
687
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
688
+ return ReactNativeFeatureFlags::enableWebPerformanceAPIsByDefault();
689
+ }
690
+
680
691
  bool JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabricAndReact(
681
692
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
682
693
  return ReactNativeFeatureFlags::fixMappingOfEventPrioritiesBetweenFabricAndReact();
@@ -965,6 +976,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
965
976
  makeNativeMethod(
966
977
  "enableVirtualViewWindowFocusDetection",
967
978
  JReactNativeFeatureFlagsCxxInterop::enableVirtualViewWindowFocusDetection),
979
+ makeNativeMethod(
980
+ "enableWebPerformanceAPIsByDefault",
981
+ JReactNativeFeatureFlagsCxxInterop::enableWebPerformanceAPIsByDefault),
968
982
  makeNativeMethod(
969
983
  "fixMappingOfEventPrioritiesBetweenFabricAndReact",
970
984
  JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabricAndReact),
@@ -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<<54118ccd475a8bf1d7db83304b1f17d0>>
7
+ * @generated SignedSource<<d34119ad2e9a068463e8a31ecced59d9>>
8
8
  */
9
9
 
10
10
  /**
@@ -162,6 +162,9 @@ class JReactNativeFeatureFlagsCxxInterop
162
162
  static bool enableVirtualViewWindowFocusDetection(
163
163
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
164
164
 
165
+ static bool enableWebPerformanceAPIsByDefault(
166
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
167
+
165
168
  static bool fixMappingOfEventPrioritiesBetweenFabricAndReact(
166
169
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
167
170