react-native 0.81.1 → 0.81.3

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 (57) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTVersion.m +1 -1
  3. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
  5. package/ReactAndroid/build.gradle.kts +10 -1
  6. package/ReactAndroid/gradle.properties +1 -1
  7. package/ReactAndroid/hermes-engine/build.gradle.kts +6 -0
  8. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +9 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +5 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +19 -0
  18. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  19. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  20. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +3 -1
  21. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +2 -1
  22. package/ReactAndroid/src/main/jni/react/jni/NativeArray.h +4 -0
  23. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +2 -0
  24. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.cpp +6 -0
  25. package/ReactAndroid/src/main/jni/react/jni/ReadableNativeArray.h +1 -0
  26. package/ReactAndroid/src/main/jni/react/jni/TransformHelper.cpp +60 -0
  27. package/ReactAndroid/src/main/jni/react/jni/TransformHelper.h +22 -0
  28. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +3 -1
  29. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +3 -1
  30. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  31. package/ReactCommon/hermes/executor/CMakeLists.txt +1 -1
  32. package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +1 -1
  33. package/ReactCommon/jsinspector-modern/CMakeLists.txt +6 -4
  34. package/ReactCommon/react/debug/CMakeLists.txt +1 -1
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +44 -8
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  39. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  40. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  41. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +9 -1
  42. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  43. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  44. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  45. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -2
  46. package/ReactCommon/react/renderer/components/view/BaseViewProps.h +5 -0
  47. package/ReactCommon/react/runtime/CMakeLists.txt +3 -1
  48. package/ReactCommon/react/runtime/hermes/CMakeLists.txt +1 -1
  49. package/package.json +8 -8
  50. package/scripts/replace-rncore-version.js +4 -2
  51. package/sdks/hermes-engine/utils/replace_hermes_version.js +4 -2
  52. package/sdks/hermesc/osx-bin/hermes +0 -0
  53. package/sdks/hermesc/osx-bin/hermesc +0 -0
  54. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  55. package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
  56. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  57. package/third-party-podspecs/replace_dependencies_version.js +4 -2
@@ -17,6 +17,6 @@ export const version: $ReadOnly<{
17
17
  }> = {
18
18
  major: 0,
19
19
  minor: 81,
20
- patch: 1,
20
+ patch: 3,
21
21
  prerelease: null,
22
22
  };
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(81),
26
- RCTVersionPatch: @(1),
26
+ RCTVersionPatch: @(3),
27
27
  RCTVersionPrerelease: [NSNull null],
28
28
  };
29
29
  });
@@ -347,6 +347,16 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabr
347
347
  rt
348
348
  );
349
349
  }
350
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
351
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeEqualsInNativeReadableArrayAndroid(
352
+ rt
353
+ );
354
+ }
355
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
356
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeTransformHelperAndroid(
357
+ rt
358
+ );
359
+ }
350
360
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
351
361
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->useNativeViewConfigsInBridgelessMode(
352
362
  rt
@@ -438,6 +448,8 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
438
448
  methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_updateRuntimeShadowNodeReferencesOnCommit};
439
449
  methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useAlwaysAvailableJSErrorHandling};
440
450
  methodMap_["useFabricInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useFabricInterop};
451
+ methodMap_["useNativeEqualsInNativeReadableArrayAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeEqualsInNativeReadableArrayAndroid};
452
+ methodMap_["useNativeTransformHelperAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeTransformHelperAndroid};
441
453
  methodMap_["useNativeViewConfigsInBridgelessMode"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useNativeViewConfigsInBridgelessMode};
442
454
  methodMap_["useOptimizedEventBatchingOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useOptimizedEventBatchingOnAndroid};
443
455
  methodMap_["useRawPropsJsiValue"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useRawPropsJsiValue};
@@ -379,6 +379,8 @@ public:
379
379
  virtual bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) = 0;
380
380
  virtual bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) = 0;
381
381
  virtual bool useFabricInterop(jsi::Runtime &rt) = 0;
382
+ virtual bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) = 0;
383
+ virtual bool useNativeTransformHelperAndroid(jsi::Runtime &rt) = 0;
382
384
  virtual bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) = 0;
383
385
  virtual bool useOptimizedEventBatchingOnAndroid(jsi::Runtime &rt) = 0;
384
386
  virtual bool useRawPropsJsiValue(jsi::Runtime &rt) = 0;
@@ -840,6 +842,22 @@ private:
840
842
  return bridging::callFromJs<bool>(
841
843
  rt, &T::useFabricInterop, jsInvoker_, instance_);
842
844
  }
845
+ bool useNativeEqualsInNativeReadableArrayAndroid(jsi::Runtime &rt) override {
846
+ static_assert(
847
+ bridging::getParameterCount(&T::useNativeEqualsInNativeReadableArrayAndroid) == 1,
848
+ "Expected useNativeEqualsInNativeReadableArrayAndroid(...) to have 1 parameters");
849
+
850
+ return bridging::callFromJs<bool>(
851
+ rt, &T::useNativeEqualsInNativeReadableArrayAndroid, jsInvoker_, instance_);
852
+ }
853
+ bool useNativeTransformHelperAndroid(jsi::Runtime &rt) override {
854
+ static_assert(
855
+ bridging::getParameterCount(&T::useNativeTransformHelperAndroid) == 1,
856
+ "Expected useNativeTransformHelperAndroid(...) to have 1 parameters");
857
+
858
+ return bridging::callFromJs<bool>(
859
+ rt, &T::useNativeTransformHelperAndroid, jsInvoker_, instance_);
860
+ }
843
861
  bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) override {
844
862
  static_assert(
845
863
  bridging::getParameterCount(&T::useNativeViewConfigsInBridgelessMode) == 1,
@@ -598,7 +598,7 @@ android {
598
598
  publishing {
599
599
  multipleVariants {
600
600
  withSourcesJar()
601
- includeBuildTypeValues("debug", "release")
601
+ includeBuildTypeValues("debug", "release", "debugOptimized")
602
602
  }
603
603
  }
604
604
 
@@ -606,6 +606,15 @@ android {
606
606
  unitTests { isIncludeAndroidResources = true }
607
607
  targetSdk = libs.versions.targetSdk.get().toInt()
608
608
  }
609
+
610
+ buildTypes {
611
+ create("debugOptimized") {
612
+ initWith(getByName("debug"))
613
+ externalNativeBuild {
614
+ cmake { arguments("-DCMAKE_BUILD_TYPE=Release", "-DREACT_NATIVE_DEBUG_OPTIMIZED=True") }
615
+ }
616
+ }
617
+ }
609
618
  }
610
619
 
611
620
  tasks.withType<KotlinCompile>().configureEach {
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.81.1
1
+ VERSION_NAME=0.81.3
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
 
4
4
  android.useAndroidX=true
@@ -306,6 +306,12 @@ android {
306
306
  }
307
307
  }
308
308
  }
309
+ buildTypes {
310
+ create("debugOptimized") {
311
+ initWith(getByName("debug"))
312
+ externalNativeBuild { cmake { arguments("-DCMAKE_BUILD_TYPE=Release") } }
313
+ }
314
+ }
309
315
  }
310
316
 
311
317
  sourceSets.getByName("main") {
@@ -8,6 +8,7 @@
8
8
  package com.facebook.react.bridge
9
9
 
10
10
  import com.facebook.proguard.annotations.DoNotStrip
11
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
11
12
  import java.util.ArrayList
12
13
  import java.util.Arrays
13
14
  import kotlin.jvm.JvmStatic
@@ -65,9 +66,16 @@ public open class ReadableNativeArray protected constructor() : NativeArray(), R
65
66
  if (other !is ReadableNativeArray) {
66
67
  return false
67
68
  }
68
- return localArray.contentDeepEquals(other.localArray)
69
+
70
+ return if (ReactNativeFeatureFlags.useNativeEqualsInNativeReadableArrayAndroid()) {
71
+ nativeEquals(other)
72
+ } else {
73
+ localArray.contentDeepEquals(other.localArray)
74
+ }
69
75
  }
70
76
 
77
+ private external fun nativeEquals(other: ReadableNativeArray): Boolean
78
+
71
79
  override fun toArrayList(): ArrayList<Any?> {
72
80
  val arrayList = ArrayList<Any?>()
73
81
  repeat(size()) { i ->
@@ -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<<3e4d74a17c15742d35db9e4247f3e1c1>>
7
+ * @generated SignedSource<<c52f3977ea07f976e36177f13c1ec684>>
8
8
  */
9
9
 
10
10
  /**
@@ -342,6 +342,18 @@ public object ReactNativeFeatureFlags {
342
342
  @JvmStatic
343
343
  public fun useFabricInterop(): Boolean = accessor.useFabricInterop()
344
344
 
345
+ /**
346
+ * Use a native implementation of equals in NativeReadableArray.
347
+ */
348
+ @JvmStatic
349
+ public fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = accessor.useNativeEqualsInNativeReadableArrayAndroid()
350
+
351
+ /**
352
+ * Use a native implementation of TransformHelper
353
+ */
354
+ @JvmStatic
355
+ public fun useNativeTransformHelperAndroid(): Boolean = accessor.useNativeTransformHelperAndroid()
356
+
345
357
  /**
346
358
  * When enabled, the native view configs are used in bridgeless mode.
347
359
  */
@@ -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<<e7c1c6d184681d98320aac2a23c06288>>
7
+ * @generated SignedSource<<8e0125e82b359e6a175ffc49a4df5537>>
8
8
  */
9
9
 
10
10
  /**
@@ -72,6 +72,8 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
72
72
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
73
73
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
74
74
  private var useFabricInteropCache: Boolean? = null
75
+ private var useNativeEqualsInNativeReadableArrayAndroidCache: Boolean? = null
76
+ private var useNativeTransformHelperAndroidCache: Boolean? = null
75
77
  private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
76
78
  private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
77
79
  private var useRawPropsJsiValueCache: Boolean? = null
@@ -548,6 +550,24 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
548
550
  return cached
549
551
  }
550
552
 
553
+ override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean {
554
+ var cached = useNativeEqualsInNativeReadableArrayAndroidCache
555
+ if (cached == null) {
556
+ cached = ReactNativeFeatureFlagsCxxInterop.useNativeEqualsInNativeReadableArrayAndroid()
557
+ useNativeEqualsInNativeReadableArrayAndroidCache = cached
558
+ }
559
+ return cached
560
+ }
561
+
562
+ override fun useNativeTransformHelperAndroid(): Boolean {
563
+ var cached = useNativeTransformHelperAndroidCache
564
+ if (cached == null) {
565
+ cached = ReactNativeFeatureFlagsCxxInterop.useNativeTransformHelperAndroid()
566
+ useNativeTransformHelperAndroidCache = cached
567
+ }
568
+ return cached
569
+ }
570
+
551
571
  override fun useNativeViewConfigsInBridgelessMode(): Boolean {
552
572
  var cached = useNativeViewConfigsInBridgelessModeCache
553
573
  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<<ba62d616188ed439c85c66cfd055810d>>
7
+ * @generated SignedSource<<a5d9d11cc2a6529641243dc47a61f201>>
8
8
  */
9
9
 
10
10
  /**
@@ -132,6 +132,10 @@ public object ReactNativeFeatureFlagsCxxInterop {
132
132
 
133
133
  @DoNotStrip @JvmStatic public external fun useFabricInterop(): Boolean
134
134
 
135
+ @DoNotStrip @JvmStatic public external fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean
136
+
137
+ @DoNotStrip @JvmStatic public external fun useNativeTransformHelperAndroid(): Boolean
138
+
135
139
  @DoNotStrip @JvmStatic public external fun useNativeViewConfigsInBridgelessMode(): Boolean
136
140
 
137
141
  @DoNotStrip @JvmStatic public external fun useOptimizedEventBatchingOnAndroid(): 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<<12c2727291b635ef7c3163d153669c2c>>
7
+ * @generated SignedSource<<10d708ce4449eede46d750a1ed48d02e>>
8
8
  */
9
9
 
10
10
  /**
@@ -127,6 +127,10 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
127
127
 
128
128
  override fun useFabricInterop(): Boolean = true
129
129
 
130
+ override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = false
131
+
132
+ override fun useNativeTransformHelperAndroid(): Boolean = false
133
+
130
134
  override fun useNativeViewConfigsInBridgelessMode(): Boolean = false
131
135
 
132
136
  override fun useOptimizedEventBatchingOnAndroid(): 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<<3ea9946ef21c8ac8bb9bb63712636e89>>
7
+ * @generated SignedSource<<b04948c792c5db63decf1df80d3a867e>>
8
8
  */
9
9
 
10
10
  /**
@@ -76,6 +76,8 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
76
76
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
77
77
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
78
78
  private var useFabricInteropCache: Boolean? = null
79
+ private var useNativeEqualsInNativeReadableArrayAndroidCache: Boolean? = null
80
+ private var useNativeTransformHelperAndroidCache: Boolean? = null
79
81
  private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
80
82
  private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
81
83
  private var useRawPropsJsiValueCache: Boolean? = null
@@ -604,6 +606,26 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
604
606
  return cached
605
607
  }
606
608
 
609
+ override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean {
610
+ var cached = useNativeEqualsInNativeReadableArrayAndroidCache
611
+ if (cached == null) {
612
+ cached = currentProvider.useNativeEqualsInNativeReadableArrayAndroid()
613
+ accessedFeatureFlags.add("useNativeEqualsInNativeReadableArrayAndroid")
614
+ useNativeEqualsInNativeReadableArrayAndroidCache = cached
615
+ }
616
+ return cached
617
+ }
618
+
619
+ override fun useNativeTransformHelperAndroid(): Boolean {
620
+ var cached = useNativeTransformHelperAndroidCache
621
+ if (cached == null) {
622
+ cached = currentProvider.useNativeTransformHelperAndroid()
623
+ accessedFeatureFlags.add("useNativeTransformHelperAndroid")
624
+ useNativeTransformHelperAndroidCache = cached
625
+ }
626
+ return cached
627
+ }
628
+
607
629
  override fun useNativeViewConfigsInBridgelessMode(): Boolean {
608
630
  var cached = useNativeViewConfigsInBridgelessModeCache
609
631
  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<<58da46268043f086730132430735b720>>
7
+ * @generated SignedSource<<0bafb0a2fb79c4220d21f1736894af14>>
8
8
  */
9
9
 
10
10
  /**
@@ -24,4 +24,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android :
24
24
  // but that is more expensive than just duplicating the defaults here.
25
25
 
26
26
  override fun preventShadowTreeCommitExhaustion(): Boolean = true
27
+
28
+ override fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean = true
29
+
30
+ override fun useNativeTransformHelperAndroid(): Boolean = true
27
31
  }
@@ -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<<1e81de36735c6c9286b228c75c9a0228>>
7
+ * @generated SignedSource<<21704207ce520def05b05f89dfba1048>>
8
8
  */
9
9
 
10
10
  /**
@@ -127,6 +127,10 @@ public interface ReactNativeFeatureFlagsProvider {
127
127
 
128
128
  @DoNotStrip public fun useFabricInterop(): Boolean
129
129
 
130
+ @DoNotStrip public fun useNativeEqualsInNativeReadableArrayAndroid(): Boolean
131
+
132
+ @DoNotStrip public fun useNativeTransformHelperAndroid(): Boolean
133
+
130
134
  @DoNotStrip public fun useNativeViewConfigsInBridgelessMode(): Boolean
131
135
 
132
136
  @DoNotStrip public fun useOptimizedEventBatchingOnAndroid(): Boolean
@@ -14,7 +14,7 @@ public object ReactNativeVersion {
14
14
  public val VERSION: Map<String, Any?> = mapOf(
15
15
  "major" to 0,
16
16
  "minor" to 81,
17
- "patch" to 1,
17
+ "patch" to 3,
18
18
  "prerelease" to null
19
19
  )
20
20
  }
@@ -8,10 +8,12 @@
8
8
  package com.facebook.react.uimanager
9
9
 
10
10
  import com.facebook.common.logging.FLog
11
+ import com.facebook.react.bridge.NativeArray
11
12
  import com.facebook.react.bridge.ReadableArray
12
13
  import com.facebook.react.bridge.ReadableMap
13
14
  import com.facebook.react.bridge.ReadableType
14
15
  import com.facebook.react.common.ReactConstants
16
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
15
17
 
16
18
  public object TransformHelper {
17
19
 
@@ -69,6 +71,14 @@ public object TransformHelper {
69
71
  transformOrigin: ReadableArray?,
70
72
  allowPercentageResolution: Boolean
71
73
  ) {
74
+ if (allowPercentageResolution &&
75
+ ReactNativeFeatureFlags.useNativeTransformHelperAndroid() &&
76
+ transforms is NativeArray &&
77
+ transformOrigin is NativeArray?) {
78
+ nativeProcessTransform(transforms, result, viewWidth, viewHeight, transformOrigin)
79
+ return
80
+ }
81
+
72
82
  val helperMatrix = helperMatrix.get()!!
73
83
  MatrixMathHelper.resetIdentityMatrix(result)
74
84
  val offsets =
@@ -220,4 +230,13 @@ public object TransformHelper {
220
230
 
221
231
  return doubleArrayOf(newTranslateX, newTranslateY, newTranslateZ)
222
232
  }
233
+
234
+ @JvmStatic
235
+ private external fun nativeProcessTransform(
236
+ transforms: NativeArray,
237
+ result: DoubleArray,
238
+ viewWidth: Float,
239
+ viewHeight: Float,
240
+ transformOrigin: NativeArray?
241
+ )
223
242
  }
@@ -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<<cf7b6ff66c614ca2acc6667a80c5590d>>
7
+ * @generated SignedSource<<bbad4ee8cacd33099874d0c3078ea716>>
8
8
  */
9
9
 
10
10
  /**
@@ -351,6 +351,18 @@ class ReactNativeFeatureFlagsJavaProvider
351
351
  return method(javaProvider_);
352
352
  }
353
353
 
354
+ bool useNativeEqualsInNativeReadableArrayAndroid() override {
355
+ static const auto method =
356
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeEqualsInNativeReadableArrayAndroid");
357
+ return method(javaProvider_);
358
+ }
359
+
360
+ bool useNativeTransformHelperAndroid() override {
361
+ static const auto method =
362
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeTransformHelperAndroid");
363
+ return method(javaProvider_);
364
+ }
365
+
354
366
  bool useNativeViewConfigsInBridgelessMode() override {
355
367
  static const auto method =
356
368
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useNativeViewConfigsInBridgelessMode");
@@ -657,6 +669,16 @@ bool JReactNativeFeatureFlagsCxxInterop::useFabricInterop(
657
669
  return ReactNativeFeatureFlags::useFabricInterop();
658
670
  }
659
671
 
672
+ bool JReactNativeFeatureFlagsCxxInterop::useNativeEqualsInNativeReadableArrayAndroid(
673
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
674
+ return ReactNativeFeatureFlags::useNativeEqualsInNativeReadableArrayAndroid();
675
+ }
676
+
677
+ bool JReactNativeFeatureFlagsCxxInterop::useNativeTransformHelperAndroid(
678
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
679
+ return ReactNativeFeatureFlags::useNativeTransformHelperAndroid();
680
+ }
681
+
660
682
  bool JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode(
661
683
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
662
684
  return ReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode();
@@ -879,6 +901,12 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
879
901
  makeNativeMethod(
880
902
  "useFabricInterop",
881
903
  JReactNativeFeatureFlagsCxxInterop::useFabricInterop),
904
+ makeNativeMethod(
905
+ "useNativeEqualsInNativeReadableArrayAndroid",
906
+ JReactNativeFeatureFlagsCxxInterop::useNativeEqualsInNativeReadableArrayAndroid),
907
+ makeNativeMethod(
908
+ "useNativeTransformHelperAndroid",
909
+ JReactNativeFeatureFlagsCxxInterop::useNativeTransformHelperAndroid),
882
910
  makeNativeMethod(
883
911
  "useNativeViewConfigsInBridgelessMode",
884
912
  JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode),
@@ -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<<dae981c66bf0751fd2863937ecf255d8>>
7
+ * @generated SignedSource<<57f2dcf4b71512c6b15e8021258d6036>>
8
8
  */
9
9
 
10
10
  /**
@@ -186,6 +186,12 @@ class JReactNativeFeatureFlagsCxxInterop
186
186
  static bool useFabricInterop(
187
187
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
188
188
 
189
+ static bool useNativeEqualsInNativeReadableArrayAndroid(
190
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
191
+
192
+ static bool useNativeTransformHelperAndroid(
193
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
194
+
189
195
  static bool useNativeViewConfigsInBridgelessMode(
190
196
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
191
197
 
@@ -25,4 +25,6 @@ target_link_libraries(
25
25
  reactnative
26
26
  )
27
27
  target_compile_reactnative_options(hermes_executor PRIVATE)
28
- target_compile_options(hermes_executor PRIVATE $<$<CONFIG:Debug>:-DHERMES_ENABLE_DEBUGGER=1>)
28
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
29
+ target_compile_options(hermes_executor PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
30
+ endif()
@@ -31,13 +31,14 @@ add_library(
31
31
  OnLoad-common.cpp
32
32
  ReadableNativeArray.cpp
33
33
  ReadableNativeMap.cpp
34
+ TransformHelper.cpp
34
35
  WritableNativeArray.cpp
35
36
  WritableNativeMap.cpp
36
37
  )
37
38
  target_merge_so(reactnativejni_common)
38
39
  target_include_directories(reactnativejni_common PUBLIC ../../)
39
40
 
40
- target_link_libraries(reactnativejni_common fbjni folly_runtime react_cxxreact)
41
+ target_link_libraries(reactnativejni_common fbjni folly_runtime react_cxxreact yoga react_renderer_graphics)
41
42
  target_compile_reactnative_options(reactnativejni_common PRIVATE)
42
43
  target_compile_options(reactnativejni_common PRIVATE -Wno-unused-lambda-capture)
43
44
 
@@ -21,6 +21,10 @@ class NativeArray : public jni::HybridClass<NativeArray> {
21
21
 
22
22
  jni::local_ref<jstring> toString();
23
23
 
24
+ const folly::dynamic& getArray() const {
25
+ return array_;
26
+ }
27
+
24
28
  RN_EXPORT folly::dynamic consume();
25
29
 
26
30
  // Whether this array has been added to another array or map and no longer
@@ -11,6 +11,7 @@
11
11
  #include "JReactMarker.h"
12
12
  #include "NativeArray.h"
13
13
  #include "NativeMap.h"
14
+ #include "TransformHelper.h"
14
15
  #include "WritableNativeArray.h"
15
16
  #include "WritableNativeMap.h"
16
17
 
@@ -27,6 +28,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
27
28
  ReadableNativeMap::registerNatives();
28
29
  WritableNativeArray::registerNatives();
29
30
  WritableNativeMap::registerNatives();
31
+ TransformHelper::registerNatives();
30
32
  });
31
33
  }
32
34
 
@@ -40,10 +40,16 @@ local_ref<JArrayClass<jobject>> ReadableNativeArray::importTypeArray() {
40
40
  return jarray;
41
41
  }
42
42
 
43
+ bool ReadableNativeArray::equals(
44
+ jni::alias_ref<ReadableNativeArray::javaobject> other) {
45
+ return array_ == other->cthis()->array_;
46
+ }
47
+
43
48
  void ReadableNativeArray::registerNatives() {
44
49
  registerHybrid({
45
50
  makeNativeMethod("importArray", ReadableNativeArray::importArray),
46
51
  makeNativeMethod("importTypeArray", ReadableNativeArray::importTypeArray),
52
+ makeNativeMethod("nativeEquals", ReadableNativeArray::equals),
47
53
  });
48
54
  }
49
55
 
@@ -35,6 +35,7 @@ class ReadableNativeArray
35
35
  static void mapException(std::exception_ptr ex);
36
36
  static void registerNatives();
37
37
 
38
+ bool equals(jni::alias_ref<ReadableNativeArray::javaobject> other);
38
39
  jni::local_ref<jni::JArrayClass<jobject>> importArray();
39
40
  jni::local_ref<jni::JArrayClass<jobject>> importTypeArray();
40
41
  };
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include "TransformHelper.h"
9
+
10
+ #include <react/renderer/components/view/BaseViewProps.h>
11
+ #include <react/renderer/components/view/conversions.h>
12
+
13
+ #include "NativeArray.h"
14
+
15
+ using namespace facebook::jni;
16
+
17
+ namespace facebook::react {
18
+
19
+ namespace {
20
+ void processTransform(
21
+ jni::alias_ref<jclass> /*unused*/,
22
+ NativeArray* jTransforms,
23
+ jni::alias_ref<jni::JArrayDouble> jResult,
24
+ float viewWidth,
25
+ float viewHeight,
26
+ NativeArray* jTransformOrigin) {
27
+ // Assuming parsing transforms doesn't require a real PropsParserContext
28
+ static ContextContainer contextContainer;
29
+ static PropsParserContext context(0, contextContainer);
30
+
31
+ RawValue transformValue(jTransforms->getArray());
32
+ Transform transform;
33
+ fromRawValue(context, transformValue, transform);
34
+
35
+ TransformOrigin transformOrigin;
36
+ if (jTransformOrigin != nullptr) {
37
+ RawValue transformOriginValue(jTransformOrigin->getArray());
38
+ fromRawValue(context, transformOriginValue, transformOrigin);
39
+ }
40
+
41
+ auto result = BaseViewProps::resolveTransform(
42
+ Size(viewWidth, viewHeight), transform, transformOrigin);
43
+
44
+ // Convert from matrix of floats to double matrix
45
+ constexpr size_t MatrixSize = std::tuple_size_v<decltype(result.matrix)>;
46
+ std::array<double, MatrixSize> doubleTransform{};
47
+ std::copy(
48
+ result.matrix.begin(), result.matrix.end(), doubleTransform.begin());
49
+ jResult->setRegion(0, MatrixSize, doubleTransform.data());
50
+ }
51
+
52
+ } // namespace
53
+
54
+ void TransformHelper::registerNatives() {
55
+ javaClassLocal()->registerNatives({
56
+ makeNativeMethod("nativeProcessTransform", processTransform),
57
+ });
58
+ }
59
+
60
+ } // namespace facebook::react
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+
12
+ namespace facebook::react {
13
+
14
+ class TransformHelper : public jni::JavaClass<TransformHelper> {
15
+ public:
16
+ static auto constexpr* kJavaDescriptor =
17
+ "Lcom/facebook/react/uimanager/TransformHelper;";
18
+
19
+ static void registerNatives();
20
+ };
21
+
22
+ } // namespace facebook::react
@@ -27,4 +27,6 @@ target_link_libraries(hermesinstancejni
27
27
  )
28
28
 
29
29
  target_compile_reactnative_options(hermesinstancejni PRIVATE)
30
- target_compile_options(hermesinstancejni PRIVATE $<$<CONFIG:Debug>:-DHERMES_ENABLE_DEBUGGER=1>)
30
+ if(${CMAKE_BUILD_TYPE} MATCHES Debug OR REACT_NATIVE_DEBUG_OPTIMIZED)
31
+ target_compile_options(hermesinstancejni PRIVATE -DHERMES_ENABLE_DEBUGGER=1)
32
+ endif ()