react-native 0.76.0-rc.0 → 0.76.0-rc.1

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 (42) hide show
  1. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +3 -0
  2. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +9 -0
  3. package/Libraries/Components/View/ReactNativeStyleAttributes.js +2 -2
  4. package/Libraries/Core/ReactNativeVersion.js +1 -1
  5. package/Libraries/NativeComponent/BaseViewConfig.android.js +2 -2
  6. package/Libraries/NativeComponent/BaseViewConfig.ios.js +11 -2
  7. package/Libraries/ReactNative/getNativeComponentAttributes.js +4 -0
  8. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +98 -5
  9. package/Libraries/StyleSheet/StyleSheetTypes.js +5 -5
  10. package/Libraries/StyleSheet/processBoxShadow.js +5 -7
  11. package/Libraries/StyleSheet/processFilter.js +4 -4
  12. package/React/Base/RCTVersion.m +1 -1
  13. package/React/Views/RCTViewManager.m +10 -9
  14. package/ReactAndroid/api/ReactAndroid.api +27 -0
  15. package/ReactAndroid/build.gradle.kts +17 -8
  16. package/ReactAndroid/gradle.properties +1 -1
  17. package/ReactAndroid/hermes-engine/build.gradle.kts +0 -2
  18. package/ReactAndroid/src/main/java/com/facebook/react/jstasks/HeadlessJsTaskContext.java +13 -14
  19. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  20. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessDevSupportManager.java +14 -9
  21. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +26 -21
  22. package/{sdks/ossonly-soloader/src/main/java/com/facebook/soloader/MergedSoMapping.kt → ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt} +6 -4
  23. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.kt +2 -2
  24. package/ReactAndroid/src/main/jni/first-party/jni-lib-merge/jni_lib_merge.c +2 -1
  25. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  26. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +4 -4
  27. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.h +3 -0
  28. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHermesInstance.mm +7 -0
  29. package/gradle/libs.versions.toml +2 -0
  30. package/package.json +10 -11
  31. package/scripts/cocoapods/privacy_manifest_utils.rb +23 -8
  32. package/sdks/hermes-engine/utils/build-apple-framework.sh +0 -12
  33. package/sdks/hermesc/osx-bin/hermes +0 -0
  34. package/sdks/hermesc/osx-bin/hermesc +0 -0
  35. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  36. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -9
  37. package/types/experimental.d.ts +0 -105
  38. package/sdks/ossonly-soloader/src/main/java/com/facebook/soloader/DoNotOptimize.kt +0 -10
  39. package/sdks/ossonly-soloader/src/main/java/com/facebook/soloader/SoLoader.kt +0 -53
  40. package/sdks/ossonly-soloader/src/main/java/com/facebook/soloader/nativeloader/NativeLoader.kt +0 -28
  41. package/sdks/ossonly-soloader/src/main/java/com/facebook/soloader/nativeloader/NativeLoaderDelegate.kt +0 -23
  42. package/sdks/ossonly-soloader/src/main/java/com/facebook/soloader/nativeloader/SystemDelegate.kt +0 -10
@@ -160,6 +160,9 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
160
160
  snapToInterval: true,
161
161
  snapToOffsets: true,
162
162
  snapToStart: true,
163
+ verticalScrollIndicatorInsets: {
164
+ diff: require('../../Utilities/differ/insetsDiffer'),
165
+ },
163
166
  zoomScale: true,
164
167
  ...ConditionallyIgnoredEventHandlers({
165
168
  onScrollBeginDrag: true,
@@ -85,8 +85,15 @@ const RCTTextInputViewConfig = {
85
85
  topContentSizeChange: {
86
86
  registrationName: 'onContentSizeChange',
87
87
  },
88
+ topChangeSync: {
89
+ registrationName: 'onChangeSync',
90
+ },
91
+ topKeyPressSync: {
92
+ registrationName: 'onKeyPressSync',
93
+ },
88
94
  },
89
95
  validAttributes: {
96
+ dynamicTypeRamp: true,
90
97
  fontSize: true,
91
98
  fontWeight: true,
92
99
  fontVariant: true,
@@ -150,6 +157,8 @@ const RCTTextInputViewConfig = {
150
157
  onSelectionChange: true,
151
158
  onContentSizeChange: true,
152
159
  onScroll: true,
160
+ onChangeSync: true,
161
+ onKeyPressSync: true,
153
162
  }),
154
163
  },
155
164
  };
@@ -120,7 +120,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
120
120
  /**
121
121
  * Filter
122
122
  */
123
- experimental_filter: {process: processFilter},
123
+ filter: {process: processFilter},
124
124
 
125
125
  /**
126
126
  * MixBlendMode
@@ -135,7 +135,7 @@ const ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {
135
135
  /*
136
136
  * BoxShadow
137
137
  */
138
- experimental_boxShadow: {process: processBoxShadow},
138
+ boxShadow: {process: processBoxShadow},
139
139
 
140
140
  /**
141
141
  * Linear Gradient
@@ -17,7 +17,7 @@ const version: $ReadOnly<{
17
17
  major: 0,
18
18
  minor: 76,
19
19
  patch: 0,
20
- prerelease: 'rc.0',
20
+ prerelease: 'rc.1',
21
21
  };
22
22
 
23
23
  module.exports = {version};
@@ -169,10 +169,10 @@ const validAttributesForNonEventProps = {
169
169
  experimental_backgroundImage: {
170
170
  process: require('../StyleSheet/processBackgroundImage').default,
171
171
  },
172
- experimental_boxShadow: {
172
+ boxShadow: {
173
173
  process: require('../StyleSheet/processBoxShadow').default,
174
174
  },
175
- experimental_filter: {
175
+ filter: {
176
176
  process: require('../StyleSheet/processFilter').default,
177
177
  },
178
178
  experimental_mixBlendMode: true,
@@ -198,6 +198,7 @@ const validAttributesForNonEventProps = {
198
198
  testID: true,
199
199
  backgroundColor: {process: require('../StyleSheet/processColor').default},
200
200
  backfaceVisibility: true,
201
+ cursor: true,
201
202
  opacity: true,
202
203
  shadowColor: {process: require('../StyleSheet/processColor').default},
203
204
  shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
@@ -216,16 +217,18 @@ const validAttributesForNonEventProps = {
216
217
  role: true,
217
218
  borderRadius: true,
218
219
  borderColor: {process: require('../StyleSheet/processColor').default},
220
+ borderBlockColor: {process: require('../StyleSheet/processColor').default},
219
221
  borderCurve: true,
220
222
  borderWidth: true,
223
+ borderBlockWidth: true,
221
224
  borderStyle: true,
222
225
  hitSlop: {diff: require('../Utilities/differ/insetsDiffer')},
223
226
  collapsable: true,
224
227
  collapsableChildren: true,
225
- experimental_filter: {
228
+ filter: {
226
229
  process: require('../StyleSheet/processFilter').default,
227
230
  },
228
- experimental_boxShadow: {
231
+ boxShadow: {
229
232
  process: require('../StyleSheet/processBoxShadow').default,
230
233
  },
231
234
  experimental_mixBlendMode: true,
@@ -240,9 +243,15 @@ const validAttributesForNonEventProps = {
240
243
  borderLeftWidth: true,
241
244
  borderLeftColor: {process: require('../StyleSheet/processColor').default},
242
245
  borderStartWidth: true,
246
+ borderBlockStartWidth: true,
243
247
  borderStartColor: {process: require('../StyleSheet/processColor').default},
248
+ borderBlockStartColor: {
249
+ process: require('../StyleSheet/processColor').default,
250
+ },
244
251
  borderEndWidth: true,
252
+ borderBlockEndWidth: true,
245
253
  borderEndColor: {process: require('../StyleSheet/processColor').default},
254
+ borderBlockEndColor: {process: require('../StyleSheet/processColor').default},
246
255
 
247
256
  borderTopLeftRadius: true,
248
257
  borderTopRightRadius: true,
@@ -188,6 +188,10 @@ function getProcessorForType(typeName: string): ?(nextProp: any) => any {
188
188
  case 'UIImage':
189
189
  case 'RCTImageSource':
190
190
  return resolveAssetSource;
191
+ case 'BoxShadowArray':
192
+ return processBoxShadow;
193
+ case 'FilterArray':
194
+ return processFilter;
191
195
  // Android Types
192
196
  case 'Color':
193
197
  return processColor;
@@ -110,11 +110,102 @@ export interface FlexStyle {
110
110
  top?: DimensionValue | undefined;
111
111
  width?: DimensionValue | undefined;
112
112
  zIndex?: number | undefined;
113
+ direction?: 'inherit' | 'ltr' | 'rtl' | undefined;
113
114
 
114
115
  /**
115
- * @platform ios
116
+ * Equivalent to `top`, `bottom`, `right` and `left`
116
117
  */
117
- direction?: 'inherit' | 'ltr' | 'rtl' | undefined;
118
+ inset?: DimensionValue | undefined;
119
+
120
+ /**
121
+ * Equivalent to `top`, `bottom`
122
+ */
123
+ insetBlock?: DimensionValue | undefined;
124
+
125
+ /**
126
+ * Equivalent to `bottom`
127
+ */
128
+ insetBlockEnd?: DimensionValue | undefined;
129
+
130
+ /**
131
+ * Equivalent to `top`
132
+ */
133
+ insetBlockStart?: DimensionValue | undefined;
134
+
135
+ /**
136
+ * Equivalent to `right` and `left`
137
+ */
138
+ insetInline?: DimensionValue | undefined;
139
+
140
+ /**
141
+ * Equivalent to `right` or `left`
142
+ */
143
+ insetInlineEnd?: DimensionValue | undefined;
144
+
145
+ /**
146
+ * Equivalent to `right` or `left`
147
+ */
148
+ insetInlineStart?: DimensionValue | undefined;
149
+
150
+ /**
151
+ * Equivalent to `marginVertical`
152
+ */
153
+ marginBlock?: DimensionValue | undefined;
154
+
155
+ /**
156
+ * Equivalent to `marginBottom`
157
+ */
158
+ marginBlockEnd?: DimensionValue | undefined;
159
+
160
+ /**
161
+ * Equivalent to `marginTop`
162
+ */
163
+ marginBlockStart?: DimensionValue | undefined;
164
+
165
+ /**
166
+ * Equivalent to `marginHorizontal`
167
+ */
168
+ marginInline?: DimensionValue | undefined;
169
+
170
+ /**
171
+ * Equivalent to `marginEnd`
172
+ */
173
+ marginInlineEnd?: DimensionValue | undefined;
174
+
175
+ /**
176
+ * Equivalent to `marginStart`
177
+ */
178
+ marginInlineStart?: DimensionValue | undefined;
179
+
180
+ /**
181
+ * Equivalent to `paddingVertical`
182
+ */
183
+ paddingBlock?: DimensionValue | undefined;
184
+
185
+ /**
186
+ * Equivalent to `paddingBottom`
187
+ */
188
+ paddingBlockEnd?: DimensionValue | undefined;
189
+
190
+ /**
191
+ * Equivalent to `paddingTop`
192
+ */
193
+ paddingBlockStart?: DimensionValue | undefined;
194
+
195
+ /**
196
+ * Equivalent to `paddingHorizontal`
197
+ */
198
+ paddingInline?: DimensionValue | undefined;
199
+
200
+ /**
201
+ * Equivalent to `paddingEnd`
202
+ */
203
+ paddingInlineEnd?: DimensionValue | undefined;
204
+
205
+ /**
206
+ * Equivalent to `paddingStart`
207
+ */
208
+ paddingInlineStart?: DimensionValue | undefined;
118
209
  }
119
210
 
120
211
  export interface ShadowStyleIOS {
@@ -239,16 +330,16 @@ export type FilterFunction =
239
330
  | {opacity: number | string}
240
331
  | {saturate: number | string}
241
332
  | {sepia: number | string}
242
- | {dropShadow: DropShadowPrimitive | string};
333
+ | {dropShadow: DropShadowValue | string};
243
334
 
244
- export type DropShadowPrimitive = {
335
+ export type DropShadowValue = {
245
336
  offsetX: number | string;
246
337
  offsetY: number | string;
247
338
  standardDeviation?: number | string | undefined;
248
339
  color?: ColorValue | number | undefined;
249
340
  };
250
341
 
251
- export type BoxShadowPrimitive = {
342
+ export type BoxShadowValue = {
252
343
  offsetX: number | string;
253
344
  offsetY: number | string;
254
345
  color?: string | undefined;
@@ -336,6 +427,8 @@ export interface ViewStyle extends FlexStyle, ShadowStyleIOS, TransformsStyle {
336
427
  pointerEvents?: 'box-none' | 'none' | 'box-only' | 'auto' | undefined;
337
428
  isolation?: 'auto' | 'isolate' | undefined;
338
429
  cursor?: CursorValue | undefined;
430
+ boxShadow?: ReadonlyArray<BoxShadowValue> | string | undefined;
431
+ filter?: ReadonlyArray<FilterFunction> | string | undefined;
339
432
  }
340
433
 
341
434
  export type FontVariant =
@@ -700,9 +700,9 @@ export type FilterFunction =
700
700
  | {opacity: number | string}
701
701
  | {saturate: number | string}
702
702
  | {sepia: number | string}
703
- | {dropShadow: DropShadowPrimitive | string};
703
+ | {dropShadow: DropShadowValue | string};
704
704
 
705
- export type DropShadowPrimitive = {
705
+ export type DropShadowValue = {
706
706
  offsetX: number | string,
707
707
  offsetY: number | string,
708
708
  standardDeviation?: number | string,
@@ -719,7 +719,7 @@ export type GradientValue = {
719
719
  }>,
720
720
  };
721
721
 
722
- export type BoxShadowPrimitive = {
722
+ export type BoxShadowValue = {
723
723
  offsetX: number | string,
724
724
  offsetY: number | string,
725
725
  color?: ____ColorValue_Internal,
@@ -788,8 +788,8 @@ export type ____ViewStyle_InternalCore = $ReadOnly<{
788
788
  elevation?: number,
789
789
  pointerEvents?: 'auto' | 'none' | 'box-none' | 'box-only',
790
790
  cursor?: CursorValue,
791
- experimental_boxShadow?: $ReadOnlyArray<BoxShadowPrimitive> | string,
792
- experimental_filter?: $ReadOnlyArray<FilterFunction> | string,
791
+ boxShadow?: $ReadOnlyArray<BoxShadowValue> | string,
792
+ filter?: $ReadOnlyArray<FilterFunction> | string,
793
793
  experimental_mixBlendMode?: ____BlendMode_Internal,
794
794
  experimental_backgroundImage?: $ReadOnlyArray<GradientValue> | string,
795
795
  isolation?: 'auto' | 'isolate',
@@ -10,7 +10,7 @@
10
10
  */
11
11
 
12
12
  import type {ProcessedColorValue} from './processColor';
13
- import type {BoxShadowPrimitive} from './StyleSheetTypes';
13
+ import type {BoxShadowValue} from './StyleSheetTypes';
14
14
 
15
15
  import processColor from './processColor';
16
16
 
@@ -24,7 +24,7 @@ export type ParsedBoxShadow = {
24
24
  };
25
25
 
26
26
  export default function processBoxShadow(
27
- rawBoxShadows: ?($ReadOnlyArray<BoxShadowPrimitive> | string),
27
+ rawBoxShadows: ?($ReadOnlyArray<BoxShadowValue> | string),
28
28
  ): Array<ParsedBoxShadow> {
29
29
  const result: Array<ParsedBoxShadow> = [];
30
30
  if (rawBoxShadows == null) {
@@ -106,16 +106,14 @@ export default function processBoxShadow(
106
106
  return result;
107
107
  }
108
108
 
109
- function parseBoxShadowString(
110
- rawBoxShadows: string,
111
- ): Array<BoxShadowPrimitive> {
112
- let result: Array<BoxShadowPrimitive> = [];
109
+ function parseBoxShadowString(rawBoxShadows: string): Array<BoxShadowValue> {
110
+ let result: Array<BoxShadowValue> = [];
113
111
 
114
112
  for (const rawBoxShadow of rawBoxShadows
115
113
  .split(/,(?![^()]*\))/) // split by comma that is not in parenthesis
116
114
  .map(bS => bS.trim())
117
115
  .filter(bS => bS !== '')) {
118
- const boxShadow: BoxShadowPrimitive = {
116
+ const boxShadow: BoxShadowValue = {
119
117
  offsetX: 0,
120
118
  offsetY: 0,
121
119
  };
@@ -12,7 +12,7 @@
12
12
  'use strict';
13
13
 
14
14
  import type {ColorValue} from './StyleSheet';
15
- import type {DropShadowPrimitive, FilterFunction} from './StyleSheetTypes';
15
+ import type {DropShadowValue, FilterFunction} from './StyleSheetTypes';
16
16
 
17
17
  import processColor from './processColor';
18
18
 
@@ -179,7 +179,7 @@ function _getFilterAmount(filterName: string, filterArgs: mixed): ?number {
179
179
  }
180
180
 
181
181
  function parseDropShadow(
182
- rawDropShadow: string | DropShadowPrimitive,
182
+ rawDropShadow: string | DropShadowValue,
183
183
  ): ?ParsedDropShadow {
184
184
  const dropShadow =
185
185
  typeof rawDropShadow === 'string'
@@ -248,8 +248,8 @@ function parseDropShadow(
248
248
  return parsedDropShadow;
249
249
  }
250
250
 
251
- function parseDropShadowString(rawDropShadow: string): ?DropShadowPrimitive {
252
- const dropShadow: DropShadowPrimitive = {
251
+ function parseDropShadowString(rawDropShadow: string): ?DropShadowValue {
252
+ const dropShadow: DropShadowValue = {
253
253
  offsetX: 0,
254
254
  offsetY: 0,
255
255
  };
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(76),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.0",
27
+ RCTVersionPrerelease: @"rc.1",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -431,18 +431,19 @@ RCT_CUSTOM_VIEW_PROPERTY(experimental_layoutConformance, NSString *, RCTView)
431
431
  // filtered by view configs.
432
432
  }
433
433
 
434
- RCT_CUSTOM_VIEW_PROPERTY(experimental_filter, NSArray *, RCTView)
434
+ typedef NSArray *FilterArray; // Custom type to make the StaticViewConfigValidator Happy
435
+ RCT_CUSTOM_VIEW_PROPERTY(filter, FilterArray, RCTView)
435
436
  {
436
- // Property is only to be used in the new renderer.
437
- // It is necessary to add it here, otherwise it gets
438
- // filtered by view configs.
437
+ // Property is only to be used in the new renderer.
438
+ // It is necessary to add it here, otherwise it gets
439
+ // filtered by view configs.
439
440
  }
440
-
441
- RCT_CUSTOM_VIEW_PROPERTY(experimental_boxShadow, NSArray *, RCTView)
441
+ typedef NSArray *BoxShadowArray; // Custom type to make the StaticViewConfigValidator Happy
442
+ RCT_CUSTOM_VIEW_PROPERTY(boxShadow, BoxShadowArray, RCTView)
442
443
  {
443
- // Property is only to be used in the new renderer.
444
- // It is necessary to add it here, otherwise it gets
445
- // filtered by view configs.
444
+ // Property is only to be used in the new renderer.
445
+ // It is necessary to add it here, otherwise it gets
446
+ // filtered by view configs.
446
447
  }
447
448
 
448
449
  RCT_CUSTOM_VIEW_PROPERTY(experimental_mixBlendMode, NSString *, RCTView)
@@ -4047,6 +4047,33 @@ public class com/facebook/react/shell/MainReactPackage$$ReactModuleInfoProvider
4047
4047
  public fun getReactModuleInfos ()Ljava/util/Map;
4048
4048
  }
4049
4049
 
4050
+ public final class com/facebook/react/soloader/OpenSourceMergedSoMapping : com/facebook/soloader/ExternalSoMapping {
4051
+ public static final field INSTANCE Lcom/facebook/react/soloader/OpenSourceMergedSoMapping;
4052
+ public fun invokeJniOnload (Ljava/lang/String;)V
4053
+ public final fun libfabricjni_so ()I
4054
+ public final fun libhermes_executor_so ()I
4055
+ public final fun libhermesinstancejni_so ()I
4056
+ public final fun libhermestooling_so ()I
4057
+ public final fun libjscexecutor_so ()I
4058
+ public final fun libjscinstance_so ()I
4059
+ public final fun libjscruntime_so ()I
4060
+ public final fun libjsctooling_so ()I
4061
+ public final fun libjsijniprofiler_so ()I
4062
+ public final fun libjsinspector_so ()I
4063
+ public final fun libmapbufferjni_so ()I
4064
+ public final fun libreact_devsupportjni_so ()I
4065
+ public final fun libreact_featureflagsjni_so ()I
4066
+ public final fun libreact_newarchdefaults_so ()I
4067
+ public final fun libreactnative_so ()I
4068
+ public final fun libreactnativeblob_so ()I
4069
+ public final fun libreactnativejni_so ()I
4070
+ public final fun librninstance_so ()I
4071
+ public final fun libturbomodulejsijni_so ()I
4072
+ public final fun libuimanagerjni_so ()I
4073
+ public final fun libyoga_so ()I
4074
+ public fun mapLibName (Ljava/lang/String;)Ljava/lang/String;
4075
+ }
4076
+
4050
4077
  public final class com/facebook/react/touch/JSResponderHandler : com/facebook/react/touch/OnInterceptTouchEventListener {
4051
4078
  public fun <init> ()V
4052
4079
  public final fun clearJSResponder ()V
@@ -220,10 +220,20 @@ val preparePrefab by
220
220
  Pair(
221
221
  "../ReactCommon/react/renderer/observers/events/",
222
222
  "react/renderer/observers/events/"),
223
+ // react_timing
224
+ Pair("../ReactCommon/react/timing/", "react/timing/"),
223
225
  // yoga
224
226
  Pair("../ReactCommon/yoga/", ""),
225
227
  Pair("src/main/jni/first-party/yogajni/jni", ""),
226
228
  )),
229
+ PrefabPreprocessingEntry("hermestooling",
230
+ // hermes_executor
231
+ Pair("../ReactCommon/hermes/inspector-modern/", "hermes/inspector-modern/")
232
+ ),
233
+ PrefabPreprocessingEntry("jsctooling",
234
+ // jsc
235
+ Pair("../ReactCommon/jsc/", "jsc/")
236
+ ),
227
237
  ))
228
238
  outputDir.set(prefabHeadersDir)
229
239
  }
@@ -550,7 +560,6 @@ android {
550
560
  "src/main/res/views/alert",
551
561
  "src/main/res/views/modal",
552
562
  "src/main/res/views/uimanager"))
553
- kotlin.srcDir(project.file("../sdks/ossonly-soloader/src/main/java"))
554
563
  java.exclude("com/facebook/react/processing")
555
564
  java.exclude("com/facebook/react/module/processing")
556
565
  }
@@ -580,6 +589,8 @@ android {
580
589
  prefab {
581
590
  create("jsi") { headers = File(prefabHeadersDir, "jsi").absolutePath }
582
591
  create("reactnative") { headers = File(prefabHeadersDir, "reactnative").absolutePath }
592
+ create("hermestooling") { headers = File(prefabHeadersDir, "hermestooling").absolutePath }
593
+ create("jsctooling") { headers = File(prefabHeadersDir, "jsctooling").absolutePath }
583
594
  }
584
595
 
585
596
  publishing {
@@ -598,11 +609,6 @@ android {
598
609
  tasks.withType<KotlinCompile>().configureEach { exclude("com/facebook/annotationprocessors/**") }
599
610
 
600
611
  dependencies {
601
- implementation(libs.fresco)
602
- implementation(libs.fresco.middleware)
603
- implementation(libs.fresco.imagepipeline.okhttp3)
604
- implementation(libs.fresco.ui.common)
605
-
606
612
  api(libs.androidx.appcompat)
607
613
  api(libs.androidx.appcompat.resources)
608
614
  api(libs.androidx.autofill)
@@ -610,7 +616,12 @@ dependencies {
610
616
  api(libs.androidx.tracing)
611
617
 
612
618
  api(libs.fbjni)
619
+ api(libs.fresco)
620
+ api(libs.fresco.imagepipeline.okhttp3)
621
+ api(libs.fresco.middleware)
622
+ api(libs.fresco.ui.common)
613
623
  api(libs.infer.annotation)
624
+ api(libs.soloader)
614
625
  api(libs.yoga.proguard.annotations)
615
626
 
616
627
  api(libs.jsr305)
@@ -631,8 +642,6 @@ dependencies {
631
642
  testImplementation(libs.thoughtworks)
632
643
  }
633
644
 
634
- configurations.all { exclude(group = "com.facebook.soloader") }
635
-
636
645
  react {
637
646
  // TODO: The library name is chosen for parity with Fabric components & iOS
638
647
  // This should be changed to a more generic name, e.g. `ReactCoreSpec`.
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.76.0-rc.0
1
+ VERSION_NAME=0.76.0-rc.1
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
 
4
4
  android.useAndroidX=true
@@ -315,8 +315,6 @@ android {
315
315
  }
316
316
  }
317
317
 
318
- configurations.all { exclude(group = "com.facebook.soloader") }
319
-
320
318
  afterEvaluate {
321
319
  if (!overrideHermesDir) {
322
320
  // If you're not specifying a Hermes Path override, we want to
@@ -169,26 +169,25 @@ public class HeadlessJsTaskContext {
169
169
 
170
170
  /**
171
171
  * Finish a JS task. Doesn't actually stop the task on the JS side, only removes it from the list
172
- * of active tasks and notifies listeners. A task can only be finished once.
172
+ * of active tasks and notifies listeners.
173
173
  *
174
174
  * @param taskId the unique id returned by {@link #startTask}.
175
175
  */
176
176
  public synchronized void finishTask(final int taskId) {
177
- Assertions.assertCondition(
178
- mActiveTasks.remove(taskId), "Tried to finish non-existent task with id " + taskId + ".");
179
- Assertions.assertCondition(
180
- mActiveTaskConfigs.remove(taskId) != null,
181
- "Tried to remove non-existent task config with id " + taskId + ".");
177
+ boolean removed = mActiveTasks.remove(taskId);
178
+ mActiveTaskConfigs.remove(taskId);
182
179
  removeTimeout(taskId);
183
- UiThreadUtil.runOnUiThread(
184
- new Runnable() {
185
- @Override
186
- public void run() {
187
- for (HeadlessJsTaskEventListener listener : mHeadlessJsTaskEventListeners) {
188
- listener.onHeadlessJsTaskFinish(taskId);
180
+ if (removed) {
181
+ UiThreadUtil.runOnUiThread(
182
+ new Runnable() {
183
+ @Override
184
+ public void run() {
185
+ for (HeadlessJsTaskEventListener listener : mHeadlessJsTaskEventListeners) {
186
+ listener.onHeadlessJsTaskFinish(taskId);
187
+ }
189
188
  }
190
- }
191
- });
189
+ });
190
+ }
192
191
  }
193
192
 
194
193
  private void removeTimeout(int taskId) {
@@ -18,5 +18,5 @@ public class ReactNativeVersion {
18
18
  "major", 0,
19
19
  "minor", 76,
20
20
  "patch", 0,
21
- "prerelease", "rc.0");
21
+ "prerelease", "rc.1");
22
22
  }
@@ -23,6 +23,8 @@ import com.facebook.react.devsupport.HMRClient;
23
23
  import com.facebook.react.devsupport.ReactInstanceDevHelper;
24
24
  import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback;
25
25
  import com.facebook.react.modules.core.DeviceEventManagerModule;
26
+ import com.facebook.react.runtime.internal.bolts.Continuation;
27
+ import com.facebook.react.runtime.internal.bolts.Task;
26
28
 
27
29
  /**
28
30
  * An implementation of {@link com.facebook.react.devsupport.interfaces.DevSupportManager} that
@@ -67,17 +69,20 @@ class BridgelessDevSupportManager extends DevSupportManagerBase {
67
69
  mReactHost
68
70
  .loadBundle(bundleLoader)
69
71
  .onSuccess(
70
- task -> {
71
- if (task.isCompleted()) {
72
- String bundleURL =
73
- getDevServerHelper().getDevServerSplitBundleURL(bundlePath);
74
- ReactContext reactContext = mReactHost.getCurrentReactContext();
75
- if (reactContext != null) {
76
- reactContext.getJSModule(HMRClient.class).registerBundle(bundleURL);
72
+ new Continuation<Boolean, Void>() {
73
+ @Override
74
+ public Void then(Task<Boolean> task) {
75
+ if (task.getResult().equals(Boolean.TRUE)) {
76
+ String bundleURL =
77
+ getDevServerHelper().getDevServerSplitBundleURL(bundlePath);
78
+ ReactContext reactContext = mReactHost.getCurrentReactContext();
79
+ if (reactContext != null) {
80
+ reactContext.getJSModule(HMRClient.class).registerBundle(bundleURL);
81
+ }
82
+ callback.onSuccess();
77
83
  }
78
- callback.onSuccess();
84
+ return null;
79
85
  }
80
- return null;
81
86
  });
82
87
  }
83
88