react-native 0.84.0-nightly-20251114-dd6805dec → 0.84.0-nightly-20251116-d52b9d2f8

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 (46) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTBundleManager.h +2 -2
  3. package/React/Base/RCTBundleManager.m +14 -1
  4. package/React/Base/RCTVersion.m +1 -1
  5. package/React/CoreModules/RCTDevSettings.h +36 -1
  6. package/React/CoreModules/RCTDevSettings.mm +45 -9
  7. package/React/DevSupport/RCTPackagerConnection.h +4 -2
  8. package/React/DevSupport/RCTPackagerConnection.mm +30 -33
  9. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +8 -0
  10. package/ReactAndroid/api/ReactAndroid.api +1 -0
  11. package/ReactAndroid/gradle.properties +1 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  19. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +84 -2
  20. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
  21. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  22. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  23. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  24. package/ReactCommon/jsi/jsi/jsi.h +6 -0
  25. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +10 -5
  26. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  27. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +93 -75
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  33. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +0 -1
  34. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
  35. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
  36. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
  37. package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
  38. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
  39. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
  40. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
  41. package/package.json +9 -9
  42. package/sdks/hermes-engine/version.properties +1 -1
  43. package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
  44. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
  45. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
  46. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
@@ -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<<acef1e4ac15cf78463831e3aeb35b641>>
7
+ * @generated SignedSource<<fb735bdc4e4085fd415f21894340dd75>>
8
8
  */
9
9
 
10
10
  /**
@@ -46,6 +46,7 @@ class ReactNativeFeatureFlagsAccessor {
46
46
  bool disableViewPreallocationAndroid();
47
47
  bool enableAccessibilityOrder();
48
48
  bool enableAccumulatedUpdatesInRawPropsAndroid();
49
+ bool enableAndroidAntialiasedBorderRadiusClipping();
49
50
  bool enableAndroidLinearText();
50
51
  bool enableAndroidTextMeasurementOptimizations();
51
52
  bool enableBridgelessArchitecture();
@@ -131,7 +132,7 @@ class ReactNativeFeatureFlagsAccessor {
131
132
  std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
132
133
  bool wasOverridden_;
133
134
 
134
- std::array<std::atomic<const char*>, 88> accessedFeatureFlags_;
135
+ std::array<std::atomic<const char*>, 89> accessedFeatureFlags_;
135
136
 
136
137
  std::atomic<std::optional<bool>> commonTestFlag_;
137
138
  std::atomic<std::optional<bool>> cdpInteractionMetricsEnabled_;
@@ -147,6 +148,7 @@ class ReactNativeFeatureFlagsAccessor {
147
148
  std::atomic<std::optional<bool>> disableViewPreallocationAndroid_;
148
149
  std::atomic<std::optional<bool>> enableAccessibilityOrder_;
149
150
  std::atomic<std::optional<bool>> enableAccumulatedUpdatesInRawPropsAndroid_;
151
+ std::atomic<std::optional<bool>> enableAndroidAntialiasedBorderRadiusClipping_;
150
152
  std::atomic<std::optional<bool>> enableAndroidLinearText_;
151
153
  std::atomic<std::optional<bool>> enableAndroidTextMeasurementOptimizations_;
152
154
  std::atomic<std::optional<bool>> enableBridgelessArchitecture_;
@@ -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<<18c966119a9b6123aea3b088e0eaf98b>>
7
+ * @generated SignedSource<<e5affd56757a5b815ac0a16305d1a82d>>
8
8
  */
9
9
 
10
10
  /**
@@ -83,6 +83,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
83
83
  return false;
84
84
  }
85
85
 
86
+ bool enableAndroidAntialiasedBorderRadiusClipping() override {
87
+ return false;
88
+ }
89
+
86
90
  bool enableAndroidLinearText() override {
87
91
  return false;
88
92
  }
@@ -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<<152ea11685f3770782035b08831ef04d>>
7
+ * @generated SignedSource<<c345dba878d470a42fcff41aac490083>>
8
8
  */
9
9
 
10
10
  /**
@@ -171,6 +171,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
171
171
  return ReactNativeFeatureFlagsDefaults::enableAccumulatedUpdatesInRawPropsAndroid();
172
172
  }
173
173
 
174
+ bool enableAndroidAntialiasedBorderRadiusClipping() override {
175
+ auto value = values_["enableAndroidAntialiasedBorderRadiusClipping"];
176
+ if (!value.isNull()) {
177
+ return value.getBool();
178
+ }
179
+
180
+ return ReactNativeFeatureFlagsDefaults::enableAndroidAntialiasedBorderRadiusClipping();
181
+ }
182
+
174
183
  bool enableAndroidLinearText() override {
175
184
  auto value = values_["enableAndroidLinearText"];
176
185
  if (!value.isNull()) {
@@ -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<<2fe890d6419dc1aaa9aa2d69a6e96bed>>
7
+ * @generated SignedSource<<3e8df9a7ff492fee6b5755c1691e150c>>
8
8
  */
9
9
 
10
10
  /**
@@ -39,6 +39,7 @@ class ReactNativeFeatureFlagsProvider {
39
39
  virtual bool disableViewPreallocationAndroid() = 0;
40
40
  virtual bool enableAccessibilityOrder() = 0;
41
41
  virtual bool enableAccumulatedUpdatesInRawPropsAndroid() = 0;
42
+ virtual bool enableAndroidAntialiasedBorderRadiusClipping() = 0;
42
43
  virtual bool enableAndroidLinearText() = 0;
43
44
  virtual bool enableAndroidTextMeasurementOptimizations() = 0;
44
45
  virtual bool enableBridgelessArchitecture() = 0;
@@ -38,7 +38,6 @@ enum TurboModuleMethodValueKind {
38
38
  */
39
39
  TurboModuleMethodValueKind getTurboModuleMethodValueKind(jsi::Runtime &rt, const jsi::Value *value);
40
40
 
41
- class TurboCxxModule;
42
41
  class TurboModuleBinding;
43
42
 
44
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<<3235f8d2413da4e9f10c7d8ff78bfeb8>>
7
+ * @generated SignedSource<<0cdf0b920d8c8a083781028ff0490bf3>>
8
8
  */
9
9
 
10
10
  /**
@@ -114,6 +114,11 @@ bool NativeReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid(
114
114
  return ReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid();
115
115
  }
116
116
 
117
+ bool NativeReactNativeFeatureFlags::enableAndroidAntialiasedBorderRadiusClipping(
118
+ jsi::Runtime& /*runtime*/) {
119
+ return ReactNativeFeatureFlags::enableAndroidAntialiasedBorderRadiusClipping();
120
+ }
121
+
117
122
  bool NativeReactNativeFeatureFlags::enableAndroidLinearText(
118
123
  jsi::Runtime& /*runtime*/) {
119
124
  return ReactNativeFeatureFlags::enableAndroidLinearText();
@@ -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<<9a7d4159c54f9ccc3e0d3cc461b66b7e>>
7
+ * @generated SignedSource<<dc1786ebed10af9cf4343d88b6336960>>
8
8
  */
9
9
 
10
10
  /**
@@ -64,6 +64,8 @@ class NativeReactNativeFeatureFlags
64
64
 
65
65
  bool enableAccumulatedUpdatesInRawPropsAndroid(jsi::Runtime& runtime);
66
66
 
67
+ bool enableAndroidAntialiasedBorderRadiusClipping(jsi::Runtime& runtime);
68
+
67
69
  bool enableAndroidLinearText(jsi::Runtime& runtime);
68
70
 
69
71
  bool enableAndroidTextMeasurementOptimizations(jsi::Runtime& runtime);
@@ -98,7 +98,7 @@ ImageProps::ImageProps(
98
98
  rawProps,
99
99
  "resizeMethod",
100
100
  sourceProps.resizeMethod,
101
- {})),
101
+ {"auto"})),
102
102
  resizeMultiplier(
103
103
  ReactNativeFeatureFlags::enableCppPropsIteratorSetter()
104
104
  ? sourceProps.resizeMultiplier
@@ -107,7 +107,7 @@ ImageProps::ImageProps(
107
107
  rawProps,
108
108
  "resizeMultiplier",
109
109
  sourceProps.resizeMultiplier,
110
- {})),
110
+ 1)),
111
111
  shouldNotifyLoadEvents(
112
112
  ReactNativeFeatureFlags::enableCppPropsIteratorSetter()
113
113
  ? sourceProps.shouldNotifyLoadEvents
@@ -33,8 +33,8 @@ class ImageProps final : public ViewProps {
33
33
  EdgeInsets capInsets{};
34
34
  SharedColor tintColor{};
35
35
  std::string internal_analyticTag{};
36
- std::string resizeMethod{};
37
- Float resizeMultiplier{};
36
+ std::string resizeMethod{"auto"};
37
+ Float resizeMultiplier{1.f};
38
38
  bool shouldNotifyLoadEvents{};
39
39
  SharedColor overlayColor{};
40
40
  Float fadeDuration{};
@@ -65,7 +65,12 @@ void ImageShadowNode::updateStateIfNeeded() {
65
65
  imageProps.fadeDuration,
66
66
  imageProps.progressiveRenderingEnabled,
67
67
  imageProps.loadingIndicatorSource,
68
- imageProps.internal_analyticTag
68
+ imageProps.internal_analyticTag,
69
+ Size{
70
+ .width =
71
+ layoutMetrics_.frame.size.width * layoutMetrics_.pointScaleFactor,
72
+ .height = layoutMetrics_.frame.size.height *
73
+ layoutMetrics_.pointScaleFactor}
69
74
  #endif
70
75
  );
71
76
 
@@ -85,7 +90,9 @@ void ImageShadowNode::updateStateIfNeeded() {
85
90
  (uri.starts_with("content://") || uri.starts_with("file://")));
86
91
  // If we would resize but have no dimensions, skip creating the request
87
92
  if (shouldResize &&
88
- (newImageSource.size.width == 0 || newImageSource.size.height == 0)) {
93
+ (newImageSource.size.width == 0 || newImageSource.size.height == 0 ||
94
+ layoutMetrics_.frame.size.width == 0 ||
95
+ layoutMetrics_.frame.size.height == 0)) {
89
96
  // Keep the old state - don't create a new image request
90
97
  return;
91
98
  }
@@ -30,7 +30,8 @@ class ImageRequestParams {
30
30
  Float fadeDuration,
31
31
  bool progressiveRenderingEnabled,
32
32
  ImageSource loadingIndicatorSource,
33
- std::string analyticTag)
33
+ std::string analyticTag,
34
+ Size size)
34
35
  : blurRadius(blurRadius),
35
36
  defaultSource(std::move(defaultSource)),
36
37
  resizeMode(resizeMode),
@@ -42,7 +43,8 @@ class ImageRequestParams {
42
43
  fadeDuration(fadeDuration),
43
44
  progressiveRenderingEnabled(progressiveRenderingEnabled),
44
45
  loadingIndicatorSource(std::move(loadingIndicatorSource)),
45
- analyticTag(std::move(analyticTag))
46
+ analyticTag(std::move(analyticTag)),
47
+ size(size)
46
48
  {
47
49
  }
48
50
 
@@ -58,6 +60,7 @@ class ImageRequestParams {
58
60
  bool progressiveRenderingEnabled{};
59
61
  ImageSource loadingIndicatorSource{};
60
62
  std::string analyticTag{};
63
+ Size size{};
61
64
 
62
65
  bool operator==(const ImageRequestParams &rhs) const
63
66
  {
@@ -73,7 +76,8 @@ class ImageRequestParams {
73
76
  this->fadeDuration,
74
77
  this->progressiveRenderingEnabled,
75
78
  this->loadingIndicatorSource,
76
- this->analyticTag) ==
79
+ this->analyticTag,
80
+ this->size) ==
77
81
  std::tie(
78
82
  rhs.blurRadius,
79
83
  rhs.defaultSource,
@@ -86,7 +90,8 @@ class ImageRequestParams {
86
90
  rhs.fadeDuration,
87
91
  rhs.progressiveRenderingEnabled,
88
92
  rhs.loadingIndicatorSource,
89
- rhs.analyticTag);
93
+ rhs.analyticTag,
94
+ rhs.size);
90
95
  }
91
96
 
92
97
  bool operator!=(const ImageRequestParams &rhs) const
@@ -24,8 +24,8 @@ constexpr MapBuffer::Key IS_KEY_DEFAULT_SRC = 1;
24
24
  constexpr MapBuffer::Key IS_KEY_RESIZE_MODE = 2;
25
25
  constexpr MapBuffer::Key IS_KEY_RESIZE_METHOD = 3;
26
26
  constexpr MapBuffer::Key IS_KEY_BLUR_RADIUS = 4;
27
- constexpr MapBuffer::Key IS_KEY_VIEW_WIDTH = 5;
28
- constexpr MapBuffer::Key IS_KEY_VIEW_HEIGHT = 6;
27
+ constexpr MapBuffer::Key IS_KEY_IMAGE_WIDTH = 5;
28
+ constexpr MapBuffer::Key IS_KEY_IMAGE_HEIGHT = 6;
29
29
  constexpr MapBuffer::Key IS_KEY_RESIZE_MULTIPLIER = 7;
30
30
  constexpr MapBuffer::Key IS_KEY_SHOULD_NOTIFY_LOAD_EVENTS = 8;
31
31
  constexpr MapBuffer::Key IS_KEY_OVERLAY_COLOR = 9;
@@ -35,16 +35,20 @@ constexpr MapBuffer::Key IS_KEY_PROGRESSIVE_RENDERING_ENABLED = 12;
35
35
  constexpr MapBuffer::Key IS_KEY_LOADING_INDICATOR_SRC = 13;
36
36
  constexpr MapBuffer::Key IS_KEY_ANALYTIC_TAG = 14;
37
37
  constexpr MapBuffer::Key IS_KEY_TAG = 15;
38
+ constexpr MapBuffer::Key IS_KEY_VIEW_WIDTH = 16;
39
+ constexpr MapBuffer::Key IS_KEY_VIEW_HEIGHT = 17;
38
40
 
39
41
  inline void serializeImageSource(MapBufferBuilder &builder, const ImageSource &imageSource)
40
42
  {
41
43
  builder.putString(IS_KEY_URI, imageSource.uri);
42
- builder.putInt(IS_KEY_VIEW_WIDTH, static_cast<int32_t>(imageSource.size.width));
43
- builder.putInt(IS_KEY_VIEW_HEIGHT, static_cast<int32_t>(imageSource.size.height));
44
+ builder.putInt(IS_KEY_IMAGE_WIDTH, static_cast<int32_t>(imageSource.size.width));
45
+ builder.putInt(IS_KEY_IMAGE_HEIGHT, static_cast<int32_t>(imageSource.size.height));
44
46
  }
45
47
 
46
48
  inline void serializeImageRequestParams(MapBufferBuilder &builder, const ImageRequestParams &imageRequestParams)
47
49
  {
50
+ builder.putInt(IS_KEY_VIEW_WIDTH, static_cast<int32_t>(imageRequestParams.size.width));
51
+ builder.putInt(IS_KEY_VIEW_HEIGHT, static_cast<int32_t>(imageRequestParams.size.height));
48
52
  builder.putString(IS_KEY_DEFAULT_SRC, imageRequestParams.defaultSource.uri);
49
53
  builder.putInt(IS_KEY_RESIZE_MODE, to_underlying(imageRequestParams.resizeMode));
50
54
  builder.putString(IS_KEY_RESIZE_METHOD, imageRequestParams.resizeMethod);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.84.0-nightly-20251114-dd6805dec",
3
+ "version": "0.84.0-nightly-20251116-d52b9d2f8",
4
4
  "description": "A framework for building native apps using React",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -160,13 +160,13 @@
160
160
  },
161
161
  "dependencies": {
162
162
  "@jest/create-cache-key-function": "^29.7.0",
163
- "@react-native/assets-registry": "0.84.0-nightly-20251114-dd6805dec",
164
- "@react-native/codegen": "0.84.0-nightly-20251114-dd6805dec",
165
- "@react-native/community-cli-plugin": "0.84.0-nightly-20251114-dd6805dec",
166
- "@react-native/gradle-plugin": "0.84.0-nightly-20251114-dd6805dec",
167
- "@react-native/js-polyfills": "0.84.0-nightly-20251114-dd6805dec",
168
- "@react-native/normalize-colors": "0.84.0-nightly-20251114-dd6805dec",
169
- "@react-native/virtualized-lists": "0.84.0-nightly-20251114-dd6805dec",
163
+ "@react-native/assets-registry": "0.84.0-nightly-20251116-d52b9d2f8",
164
+ "@react-native/codegen": "0.84.0-nightly-20251116-d52b9d2f8",
165
+ "@react-native/community-cli-plugin": "0.84.0-nightly-20251116-d52b9d2f8",
166
+ "@react-native/gradle-plugin": "0.84.0-nightly-20251116-d52b9d2f8",
167
+ "@react-native/js-polyfills": "0.84.0-nightly-20251116-d52b9d2f8",
168
+ "@react-native/normalize-colors": "0.84.0-nightly-20251116-d52b9d2f8",
169
+ "@react-native/virtualized-lists": "0.84.0-nightly-20251116-d52b9d2f8",
170
170
  "abort-controller": "^3.0.0",
171
171
  "anser": "^1.4.9",
172
172
  "ansi-regex": "^5.0.0",
@@ -176,7 +176,7 @@
176
176
  "commander": "^12.0.0",
177
177
  "flow-enums-runtime": "^0.0.6",
178
178
  "glob": "^7.1.1",
179
- "hermes-compiler": "0.14.0-commitly-202511080502-bbebefee2",
179
+ "hermes-compiler": "0.14.0-commitly-202511160156-8b7dd3e16",
180
180
  "invariant": "^2.2.4",
181
181
  "jest-environment-node": "^29.7.0",
182
182
  "memoize-one": "^5.0.0",
@@ -1,2 +1,2 @@
1
- HERMES_VERSION_NAME=0.14.0-commitly-202511080502-bbebefee2
1
+ HERMES_VERSION_NAME=0.14.0-commitly-202511160156-8b7dd3e16
2
2
  HERMES_V1_VERSION_NAME=250829098.0.3
@@ -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<<312e7dcaaaf8bade0acf80d15e8eedee>>
7
+ * @generated SignedSource<<d9337b8c6a6d759ce9bd2ff95f2ba2e2>>
8
8
  * @flow strict
9
9
  * @noformat
10
10
  */
@@ -65,6 +65,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
65
65
  disableViewPreallocationAndroid: Getter<boolean>,
66
66
  enableAccessibilityOrder: Getter<boolean>,
67
67
  enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean>,
68
+ enableAndroidAntialiasedBorderRadiusClipping: Getter<boolean>,
68
69
  enableAndroidLinearText: Getter<boolean>,
69
70
  enableAndroidTextMeasurementOptimizations: Getter<boolean>,
70
71
  enableBridgelessArchitecture: Getter<boolean>,
@@ -281,6 +282,10 @@ export const enableAccessibilityOrder: Getter<boolean> = createNativeFlagGetter(
281
282
  * When enabled, Android will accumulate updates in rawProps to reduce the number of mounting instructions for cascading re-renders.
282
283
  */
283
284
  export const enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean> = createNativeFlagGetter('enableAccumulatedUpdatesInRawPropsAndroid', false);
285
+ /**
286
+ * Enable antialiased border radius clipping for Android API 28 and below using manual masking with Porter-Duff compositing
287
+ */
288
+ export const enableAndroidAntialiasedBorderRadiusClipping: Getter<boolean> = createNativeFlagGetter('enableAndroidAntialiasedBorderRadiusClipping', false);
284
289
  /**
285
290
  * Enables linear text rendering on Android wherever subpixel text rendering is enabled
286
291
  */
@@ -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<<d5e09e0d1f62767dcc810d3295e1b724>>
7
+ * @generated SignedSource<<0de9df853ee6af976b4e15f55e6b9b26>>
8
8
  * @flow strict
9
9
  * @noformat
10
10
  */
@@ -39,6 +39,7 @@ export interface Spec extends TurboModule {
39
39
  +disableViewPreallocationAndroid?: () => boolean;
40
40
  +enableAccessibilityOrder?: () => boolean;
41
41
  +enableAccumulatedUpdatesInRawPropsAndroid?: () => boolean;
42
+ +enableAndroidAntialiasedBorderRadiusClipping?: () => boolean;
42
43
  +enableAndroidLinearText?: () => boolean;
43
44
  +enableAndroidTextMeasurementOptimizations?: () => boolean;
44
45
  +enableBridgelessArchitecture?: () => boolean;
@@ -1,212 +0,0 @@
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 "TurboCxxModule.h"
9
-
10
- #include <vector>
11
-
12
- #include <ReactCommon/TurboModuleUtils.h>
13
- #include <glog/logging.h>
14
- #include <jsi/JSIDynamic.h>
15
-
16
- using namespace facebook;
17
- using namespace facebook::xplat::module;
18
-
19
- namespace facebook::react {
20
-
21
- namespace {
22
- CxxModule::Callback makeTurboCxxModuleCallback(
23
- std::weak_ptr<CallbackWrapper> weakWrapper) {
24
- return [weakWrapper, wrapperWasCalled = false](
25
- const std::vector<folly::dynamic>& args) mutable {
26
- if (wrapperWasCalled) {
27
- LOG(FATAL) << "callback arg cannot be called more than once";
28
- }
29
-
30
- auto strongWrapper = weakWrapper.lock();
31
- if (!strongWrapper) {
32
- return;
33
- }
34
-
35
- strongWrapper->jsInvoker().invokeAsync(
36
- [weakWrapper, args](jsi::Runtime& rt) {
37
- auto strongWrapper2 = weakWrapper.lock();
38
- if (!strongWrapper2) {
39
- return;
40
- }
41
-
42
- std::vector<jsi::Value> innerArgs;
43
- innerArgs.reserve(args.size());
44
- for (auto& a : args) {
45
- innerArgs.push_back(jsi::valueFromDynamic(rt, a));
46
- }
47
- strongWrapper2->callback().call(
48
- rt, (const jsi::Value*)innerArgs.data(), innerArgs.size());
49
-
50
- strongWrapper2->destroy();
51
- });
52
-
53
- wrapperWasCalled = true;
54
- };
55
- }
56
- } // namespace
57
-
58
- TurboCxxModule::TurboCxxModule(
59
- std::unique_ptr<CxxModule> cxxModule,
60
- std::shared_ptr<CallInvoker> jsInvoker)
61
- : TurboModule(cxxModule->getName(), std::move(jsInvoker)),
62
- cxxMethods_(cxxModule->getMethods()),
63
- cxxModule_(std::move(cxxModule)) {}
64
-
65
- jsi::Value TurboCxxModule::create(
66
- jsi::Runtime& runtime,
67
- const jsi::PropNameID& propName) {
68
- std::string propNameUtf8 = propName.utf8(runtime);
69
-
70
- if (propNameUtf8 == "getConstants") {
71
- // This is special cased because `getConstants()` is already a part of
72
- // CxxModule.
73
- return jsi::Function::createFromHostFunction(
74
- runtime,
75
- propName,
76
- 0,
77
- [this](
78
- jsi::Runtime& rt,
79
- const jsi::Value& /*thisVal*/,
80
- const jsi::Value* /*args*/,
81
- size_t /*count*/) {
82
- jsi::Object result(rt);
83
- auto constants = cxxModule_->getConstants();
84
- for (auto& pair : constants) {
85
- result.setProperty(
86
- rt, pair.first.c_str(), jsi::valueFromDynamic(rt, pair.second));
87
- }
88
- return result;
89
- });
90
- } else {
91
- for (auto& method : cxxMethods_) {
92
- if (method.name == propNameUtf8) {
93
- return jsi::Function::createFromHostFunction(
94
- runtime,
95
- propName,
96
- 0,
97
- [this, propNameUtf8](
98
- jsi::Runtime& rt,
99
- const jsi::Value& /*thisVal*/,
100
- const jsi::Value* args,
101
- size_t count) {
102
- return invokeMethod(rt, propNameUtf8, args, count);
103
- });
104
- }
105
- }
106
- }
107
-
108
- return jsi::Value::undefined();
109
- }
110
-
111
- std::vector<jsi::PropNameID> TurboCxxModule::getPropertyNames(
112
- jsi::Runtime& runtime) {
113
- std::vector<jsi::PropNameID> result;
114
- result.reserve(cxxMethods_.size() + 1);
115
- result.push_back(jsi::PropNameID::forUtf8(runtime, "getConstants"));
116
- for (auto& cxxMethod : cxxMethods_) {
117
- result.push_back(jsi::PropNameID::forUtf8(runtime, cxxMethod.name));
118
- }
119
- return result;
120
- }
121
-
122
- jsi::Value TurboCxxModule::invokeMethod(
123
- jsi::Runtime& runtime,
124
- const std::string& methodName,
125
- const jsi::Value* args,
126
- size_t count) {
127
- auto it = cxxMethods_.begin();
128
- for (; it != cxxMethods_.end(); it++) {
129
- auto method = *it;
130
- if (method.name == methodName) {
131
- break;
132
- }
133
- }
134
-
135
- if (it == cxxMethods_.end()) {
136
- throw std::runtime_error(
137
- "Function '" + methodName + "' cannot be found on cxxmodule: " + name_);
138
- }
139
-
140
- auto method = *it;
141
-
142
- if (method.syncFunc) {
143
- auto innerArgs = folly::dynamic::array();
144
- for (size_t i = 0; i < count; i++) {
145
- innerArgs.push_back(jsi::dynamicFromValue(runtime, args[i]));
146
- }
147
- return jsi::valueFromDynamic(
148
- runtime, method.syncFunc(std::move(innerArgs)));
149
- } else if (method.func && !method.isPromise) {
150
- // Async method.
151
- CxxModule::Callback first;
152
- CxxModule::Callback second;
153
-
154
- if (count < method.callbacks) {
155
- throw std::invalid_argument(
156
- "Expected " + std::to_string(method.callbacks) +
157
- " callbacks, but only " + std::to_string(count) +
158
- " parameters provided");
159
- }
160
-
161
- if (method.callbacks == 1) {
162
- auto wrapper = CallbackWrapper::createWeak(
163
- args[count - 1].getObject(runtime).getFunction(runtime),
164
- runtime,
165
- jsInvoker_);
166
- first = makeTurboCxxModuleCallback(wrapper);
167
- } else if (method.callbacks == 2) {
168
- auto wrapper1 = CallbackWrapper::createWeak(
169
- args[count - 2].getObject(runtime).getFunction(runtime),
170
- runtime,
171
- jsInvoker_);
172
- auto wrapper2 = CallbackWrapper::createWeak(
173
- args[count - 1].getObject(runtime).getFunction(runtime),
174
- runtime,
175
- jsInvoker_);
176
- first = makeTurboCxxModuleCallback(wrapper1);
177
- second = makeTurboCxxModuleCallback(wrapper2);
178
- }
179
-
180
- auto innerArgs = folly::dynamic::array();
181
- for (size_t i = 0; i < count - method.callbacks; i++) {
182
- innerArgs.push_back(jsi::dynamicFromValue(runtime, args[i]));
183
- }
184
-
185
- method.func(std::move(innerArgs), first, second);
186
- } else if (method.isPromise) {
187
- return createPromiseAsJSIValue(
188
- runtime,
189
- [method, args, count, this](
190
- jsi::Runtime& rt, std::shared_ptr<Promise> promise) {
191
- auto resolveWrapper = CallbackWrapper::createWeak(
192
- promise->resolve_.getFunction(rt), rt, jsInvoker_);
193
- auto rejectWrapper = CallbackWrapper::createWeak(
194
- promise->reject_.getFunction(rt), rt, jsInvoker_);
195
- CxxModule::Callback resolve =
196
- makeTurboCxxModuleCallback(resolveWrapper);
197
- CxxModule::Callback reject =
198
- makeTurboCxxModuleCallback(rejectWrapper);
199
-
200
- auto innerArgs = folly::dynamic::array();
201
- for (size_t i = 0; i < count; i++) {
202
- innerArgs.push_back(jsi::dynamicFromValue(rt, args[i]));
203
- }
204
-
205
- method.func(std::move(innerArgs), resolve, reject);
206
- });
207
- }
208
-
209
- return jsi::Value::undefined();
210
- }
211
-
212
- } // namespace facebook::react
@@ -1,40 +0,0 @@
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 <memory>
11
- #include <vector>
12
-
13
- #include <cxxreact/CxxModule.h>
14
-
15
- #include "TurboModule.h"
16
-
17
- namespace facebook::react {
18
-
19
- /**
20
- * A helper class to convert the legacy CxxModule instance to a TurboModule
21
- * instance. This should be used only for migration purpose (to TurboModule),
22
- * since it's not very performant due to a lot of back-and-forth value
23
- * conversions between folly::dynamic and jsi::Value.
24
- */
25
- class JSI_EXPORT TurboCxxModule : public TurboModule {
26
- public:
27
- TurboCxxModule(std::unique_ptr<facebook::xplat::module::CxxModule> cxxModule, std::shared_ptr<CallInvoker> jsInvoker);
28
-
29
- facebook::jsi::Value create(facebook::jsi::Runtime &runtime, const facebook::jsi::PropNameID &propName) override;
30
-
31
- std::vector<facebook::jsi::PropNameID> getPropertyNames(facebook::jsi::Runtime &runtime) override;
32
-
33
- jsi::Value invokeMethod(jsi::Runtime &runtime, const std::string &methodName, const jsi::Value *args, size_t count);
34
-
35
- private:
36
- std::vector<facebook::xplat::module::CxxModule::Method> cxxMethods_;
37
- std::unique_ptr<facebook::xplat::module::CxxModule> cxxModule_;
38
- };
39
-
40
- } // namespace facebook::react