react-native 0.72.0-rc.3 → 0.72.0-rc.4

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 (56) hide show
  1. package/Libraries/AppDelegate/RCTAppDelegate.h +5 -0
  2. package/Libraries/AppDelegate/RCTAppDelegate.mm +30 -9
  3. package/Libraries/AppDelegate/RCTAppSetupUtils.h +8 -2
  4. package/Libraries/AppDelegate/RCTAppSetupUtils.mm +25 -1
  5. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +16 -0
  6. package/Libraries/Components/TextInput/TextInput.d.ts +121 -86
  7. package/Libraries/Components/TextInput/TextInput.flow.js +121 -135
  8. package/Libraries/Components/TextInput/TextInput.js +121 -135
  9. package/Libraries/Core/ReactNativeVersion.js +1 -1
  10. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +0 -2
  11. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +1 -13
  12. package/React/Base/RCTJavaScriptLoader.mm +11 -1
  13. package/React/Base/RCTRuntimeExecutorFromBridge.h +19 -0
  14. package/React/Base/RCTRuntimeExecutorFromBridge.mm +56 -0
  15. package/React/Base/RCTVersion.m +1 -1
  16. package/React/CxxBridge/RCTCxxBridge.mm +9 -4
  17. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +0 -3
  18. package/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +1 -37
  19. package/React/React-RCTFabric.podspec +14 -1
  20. package/React-Core.podspec +6 -4
  21. package/ReactAndroid/build.gradle +4 -1
  22. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +14 -1
  23. package/ReactAndroid/gradle.properties +1 -1
  24. package/ReactAndroid/hermes-engine/build.gradle +5 -0
  25. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +9 -0
  26. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +7 -0
  27. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  28. package/ReactAndroid/src/main/jni/CMakeLists.txt +0 -1
  29. package/ReactCommon/React-Fabric.podspec +13 -23
  30. package/ReactCommon/ReactCommon.podspec +0 -4
  31. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
  32. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  33. package/ReactCommon/react/debug/React-debug.podspec +36 -0
  34. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +5 -0
  35. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +66 -0
  36. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +2 -1
  37. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +2 -1
  38. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +1 -0
  39. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +2 -1
  40. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +3 -15
  41. package/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +1 -1
  42. package/ReactCommon/react/utils/React-utils.podspec +57 -0
  43. package/package.json +9 -9
  44. package/scripts/cocoapods/__tests__/codegen_utils-test.rb +7 -2
  45. package/scripts/cocoapods/__tests__/new_architecture-test.rb +9 -3
  46. package/scripts/cocoapods/codegen_utils.rb +6 -0
  47. package/scripts/cocoapods/new_architecture.rb +13 -0
  48. package/scripts/react-native-xcode.sh +1 -1
  49. package/scripts/react_native_pods.rb +3 -0
  50. package/sdks/hermesc/linux64-bin/hermesc +0 -0
  51. package/sdks/hermesc/osx-bin/hermesc +0 -0
  52. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  53. package/template/android/app/build.gradle +0 -7
  54. package/template/ios/Podfile +1 -1
  55. package/template/package.json +5 -5
  56. package/types/experimental.d.ts +101 -0
@@ -234,36 +234,6 @@ export type enterKeyHintType =
234
234
  type PasswordRules = string;
235
235
 
236
236
  type IOSProps = $ReadOnly<{|
237
- /**
238
- * Give the keyboard and the system information about the
239
- * expected semantic meaning for the content that users enter.
240
- * @platform ios
241
- */
242
- autoComplete?: ?(
243
- | 'address-line1'
244
- | 'address-line2'
245
- | 'cc-number'
246
- | 'current-password'
247
- | 'country'
248
- | 'email'
249
- | 'name'
250
- | 'additional-name'
251
- | 'family-name'
252
- | 'given-name'
253
- | 'nickname'
254
- | 'honorific-prefix'
255
- | 'honorific-suffix'
256
- | 'new-password'
257
- | 'off'
258
- | 'one-time-code'
259
- | 'organization'
260
- | 'organization-title'
261
- | 'postal-code'
262
- | 'street-address'
263
- | 'tel'
264
- | 'url'
265
- | 'username'
266
- ),
267
237
  /**
268
238
  * When the clear button should appear on the right side of the text view.
269
239
  * This property is supported only for single-line TextInput component.
@@ -369,111 +339,6 @@ type IOSProps = $ReadOnly<{|
369
339
  |}>;
370
340
 
371
341
  type AndroidProps = $ReadOnly<{|
372
- /**
373
- * Specifies autocomplete hints for the system, so it can provide autofill. On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content.
374
- * To disable autocomplete, set `autoComplete` to `off`.
375
- *
376
- * *Android Only*
377
- *
378
- * Possible values for `autoComplete` are:
379
- *
380
- * - `birthdate-day`
381
- * - `birthdate-full`
382
- * - `birthdate-month`
383
- * - `birthdate-year`
384
- * - `cc-csc`
385
- * - `cc-exp`
386
- * - `cc-exp-day`
387
- * - `cc-exp-month`
388
- * - `cc-exp-year`
389
- * - `cc-number`
390
- * - `email`
391
- * - `gender`
392
- * - `name`
393
- * - `name-family`
394
- * - `name-given`
395
- * - `name-middle`
396
- * - `name-middle-initial`
397
- * - `name-prefix`
398
- * - `name-suffix`
399
- * - `password`
400
- * - `password-new`
401
- * - `postal-address`
402
- * - `postal-address-country`
403
- * - `postal-address-extended`
404
- * - `postal-address-extended-postal-code`
405
- * - `postal-address-locality`
406
- * - `postal-address-region`
407
- * - `postal-code`
408
- * - `street-address`
409
- * - `sms-otp`
410
- * - `tel`
411
- * - `tel-country-code`
412
- * - `tel-national`
413
- * - `tel-device`
414
- * - `username`
415
- * - `username-new`
416
- * - `off`
417
- *
418
- * @platform android
419
- */
420
- autoComplete?: ?(
421
- | 'birthdate-day'
422
- | 'birthdate-full'
423
- | 'birthdate-month'
424
- | 'birthdate-year'
425
- | 'cc-csc'
426
- | 'cc-exp'
427
- | 'cc-exp-day'
428
- | 'cc-exp-month'
429
- | 'cc-exp-year'
430
- | 'cc-number'
431
- | 'email'
432
- | 'gender'
433
- | 'name'
434
- | 'name-family'
435
- | 'name-given'
436
- | 'name-middle'
437
- | 'name-middle-initial'
438
- | 'name-prefix'
439
- | 'name-suffix'
440
- | 'password'
441
- | 'password-new'
442
- | 'postal-address'
443
- | 'postal-address-country'
444
- | 'postal-address-extended'
445
- | 'postal-address-extended-postal-code'
446
- | 'postal-address-locality'
447
- | 'postal-address-region'
448
- | 'postal-code'
449
- | 'street-address'
450
- | 'sms-otp'
451
- | 'tel'
452
- | 'tel-country-code'
453
- | 'tel-national'
454
- | 'tel-device'
455
- | 'username'
456
- | 'username-new'
457
- | 'off'
458
- // additional HTML autocomplete values
459
- | 'address-line1'
460
- | 'address-line2'
461
- | 'bday'
462
- | 'bday-day'
463
- | 'bday-month'
464
- | 'bday-year'
465
- | 'country'
466
- | 'current-password'
467
- | 'honorific-prefix'
468
- | 'honorific-suffix'
469
- | 'additional-name'
470
- | 'family-name'
471
- | 'given-name'
472
- | 'new-password'
473
- | 'one-time-code'
474
- | 'sex'
475
- ),
476
-
477
342
  /**
478
343
  * When provided it will set the color of the cursor (or "caret") in the component.
479
344
  * Unlike the behavior of `selectionColor` the cursor color will be set independently
@@ -574,6 +439,127 @@ export type Props = $ReadOnly<{|
574
439
  */
575
440
  autoCapitalize?: ?AutoCapitalize,
576
441
 
442
+ /**
443
+ * Specifies autocomplete hints for the system, so it can provide autofill.
444
+ * On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content.
445
+ * To disable autocomplete, set autoComplete to off.
446
+ *
447
+ * The following values work across platforms:
448
+ *
449
+ * - `additional-name`
450
+ * - `address-line1`
451
+ * - `address-line2`
452
+ * - `cc-number`
453
+ * - `country`
454
+ * - `current-password`
455
+ * - `email`
456
+ * - `family-name`
457
+ * - `given-name`
458
+ * - `honorific-prefix`
459
+ * - `honorific-suffix`
460
+ * - `name`
461
+ * - `new-password`
462
+ * - `off`
463
+ * - `one-time-code`
464
+ * - `postal-code`
465
+ * - `street-address`
466
+ * - `tel`
467
+ * - `username`
468
+ *
469
+ * The following values work on iOS only:
470
+ *
471
+ * - `nickname`
472
+ * - `organization`
473
+ * - `organization-title`
474
+ * - `url`
475
+ *
476
+ * The following values work on Android only:
477
+ *
478
+ * - `birthdate-day`
479
+ * - `birthdate-full`
480
+ * - `birthdate-month`
481
+ * - `birthdate-year`
482
+ * - `cc-csc`
483
+ * - `cc-exp`
484
+ * - `cc-exp-day`
485
+ * - `cc-exp-month`
486
+ * - `cc-exp-year`
487
+ * - `gender`
488
+ * - `name-family`
489
+ * - `name-given`
490
+ * - `name-middle`
491
+ * - `name-middle-initial`
492
+ * - `name-prefix`
493
+ * - `name-suffix`
494
+ * - `password`
495
+ * - `password-new`
496
+ * - `postal-address`
497
+ * - `postal-address-country`
498
+ * - `postal-address-extended`
499
+ * - `postal-address-extended-postal-code`
500
+ * - `postal-address-locality`
501
+ * - `postal-address-region`
502
+ * - `sms-otp`
503
+ * - `tel-country-code`
504
+ * - `tel-national`
505
+ * - `tel-device`
506
+ * - `username-new`
507
+ */
508
+ autoComplete?: ?(
509
+ | 'additional-name'
510
+ | 'address-line1'
511
+ | 'address-line2'
512
+ | 'birthdate-day'
513
+ | 'birthdate-full'
514
+ | 'birthdate-month'
515
+ | 'birthdate-year'
516
+ | 'cc-csc'
517
+ | 'cc-exp'
518
+ | 'cc-exp-day'
519
+ | 'cc-exp-month'
520
+ | 'cc-exp-year'
521
+ | 'cc-number'
522
+ | 'country'
523
+ | 'current-password'
524
+ | 'email'
525
+ | 'family-name'
526
+ | 'gender'
527
+ | 'given-name'
528
+ | 'honorific-prefix'
529
+ | 'honorific-suffix'
530
+ | 'name'
531
+ | 'name-family'
532
+ | 'name-given'
533
+ | 'name-middle'
534
+ | 'name-middle-initial'
535
+ | 'name-prefix'
536
+ | 'name-suffix'
537
+ | 'new-password'
538
+ | 'nickname'
539
+ | 'one-time-code'
540
+ | 'organization'
541
+ | 'organization-title'
542
+ | 'password'
543
+ | 'password-new'
544
+ | 'postal-address'
545
+ | 'postal-address-country'
546
+ | 'postal-address-extended'
547
+ | 'postal-address-extended-postal-code'
548
+ | 'postal-address-locality'
549
+ | 'postal-address-region'
550
+ | 'postal-code'
551
+ | 'street-address'
552
+ | 'sms-otp'
553
+ | 'tel'
554
+ | 'tel-country-code'
555
+ | 'tel-national'
556
+ | 'tel-device'
557
+ | 'url'
558
+ | 'username'
559
+ | 'username-new'
560
+ | 'off'
561
+ ),
562
+
577
563
  /**
578
564
  * If `false`, disables auto-correct. The default value is `true`.
579
565
  */
@@ -13,5 +13,5 @@ exports.version = {
13
13
  major: 0,
14
14
  minor: 72,
15
15
  patch: 0,
16
- prerelease: 'rc.3',
16
+ prerelease: 'rc.4',
17
17
  };
@@ -75,7 +75,6 @@ const PERMISSIONS = Object.freeze({
75
75
  ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS',
76
76
  READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS',
77
77
  UWB_RANGING: 'android.permission.UWB_RANGING',
78
- POST_NOTIFICATION: 'android.permission.POST_NOTIFICATIONS', // Remove in 0.72
79
78
  POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS',
80
79
  NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES',
81
80
  });
@@ -107,7 +106,6 @@ class PermissionsAndroid {
107
106
  CAMERA: string,
108
107
  GET_ACCOUNTS: string,
109
108
  NEARBY_WIFI_DEVICES: string,
110
- POST_NOTIFICATION: string, // Remove in 0.72
111
109
  POST_NOTIFICATIONS: string,
112
110
  PROCESS_OUTGOING_CALLS: string,
113
111
  READ_CALENDAR: string,
@@ -18,7 +18,7 @@ type FlexAlignType =
18
18
  | 'stretch'
19
19
  | 'baseline';
20
20
 
21
- type DimensionValue =
21
+ export type DimensionValue =
22
22
  | number
23
23
  | 'auto'
24
24
  | `${number}%`
@@ -79,15 +79,9 @@ export interface FlexStyle {
79
79
  | undefined;
80
80
  left?: DimensionValue | undefined;
81
81
  margin?: DimensionValue | undefined;
82
- marginBlock?: DimensionValue | undefined;
83
- marginBlockEnd?: DimensionValue | undefined;
84
- marginBlockStart?: DimensionValue | undefined;
85
82
  marginBottom?: DimensionValue | undefined;
86
83
  marginEnd?: DimensionValue | undefined;
87
84
  marginHorizontal?: DimensionValue | undefined;
88
- marginInline?: DimensionValue | undefined;
89
- marginInlineEnd?: DimensionValue | undefined;
90
- marginInlineStart?: DimensionValue | undefined;
91
85
  marginLeft?: DimensionValue | undefined;
92
86
  marginRight?: DimensionValue | undefined;
93
87
  marginStart?: DimensionValue | undefined;
@@ -100,14 +94,8 @@ export interface FlexStyle {
100
94
  overflow?: 'visible' | 'hidden' | 'scroll' | undefined;
101
95
  padding?: DimensionValue | undefined;
102
96
  paddingBottom?: DimensionValue | undefined;
103
- paddingBlock?: DimensionValue | undefined;
104
- paddingBlockEnd?: DimensionValue | undefined;
105
- paddingBlockStart?: DimensionValue | undefined;
106
97
  paddingEnd?: DimensionValue | undefined;
107
98
  paddingHorizontal?: DimensionValue | undefined;
108
- paddingInline?: DimensionValue | undefined;
109
- paddingInlineEnd?: DimensionValue | undefined;
110
- paddingInlineStart?: DimensionValue | undefined;
111
99
  paddingLeft?: DimensionValue | undefined;
112
100
  paddingRight?: DimensionValue | undefined;
113
101
  paddingStart?: DimensionValue | undefined;
@@ -312,7 +312,17 @@ static void attemptAsynchronousLoadOfBundleAtURL(
312
312
  return;
313
313
  }
314
314
 
315
- RCTSource *source = RCTSourceCreate(scriptURL, data, data.length);
315
+ // Prefer `Content-Location` as the canonical source URL, if given, or fall back to scriptURL.
316
+ NSURL *sourceURL = scriptURL;
317
+ NSString *contentLocationHeader = headers[@"Content-Location"];
318
+ if (contentLocationHeader) {
319
+ NSURL *contentLocationURL = [NSURL URLWithString:contentLocationHeader relativeToURL:scriptURL];
320
+ if (contentLocationURL) {
321
+ sourceURL = contentLocationURL;
322
+ }
323
+ }
324
+
325
+ RCTSource *source = RCTSourceCreate(sourceURL, data, data.length);
316
326
  parseHeaders(headers, source);
317
327
  onComplete(nil, source);
318
328
  }
@@ -0,0 +1,19 @@
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
+ #import <Foundation/Foundation.h>
9
+ #ifdef __cplusplus
10
+ #import <ReactCommon/RuntimeExecutor.h>
11
+
12
+ NS_ASSUME_NONNULL_BEGIN
13
+
14
+ @class RCTBridge;
15
+
16
+ facebook::react::RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge);
17
+
18
+ NS_ASSUME_NONNULL_END
19
+ #endif
@@ -0,0 +1,56 @@
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
+ #import "RCTRuntimeExecutorFromBridge.h"
9
+ #import <React/RCTAssert.h>
10
+ #import <React/RCTBridge+Private.h>
11
+ #import <cxxreact/MessageQueueThread.h>
12
+ #import <react/utils/ManagedObjectWrapper.h>
13
+
14
+ using namespace facebook::react;
15
+
16
+ @interface RCTBridge ()
17
+ - (std::shared_ptr<MessageQueueThread>)jsMessageThread;
18
+ - (void)invokeAsync:(std::function<void()> &&)func;
19
+ @end
20
+
21
+ RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge)
22
+ {
23
+ RCTAssert(bridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil.");
24
+
25
+ auto bridgeWeakWrapper = wrapManagedObjectWeakly([bridge batchedBridge] ?: bridge);
26
+
27
+ RuntimeExecutor runtimeExecutor = [bridgeWeakWrapper](
28
+ std::function<void(facebook::jsi::Runtime & runtime)> &&callback) {
29
+ RCTBridge *bridge = unwrapManagedObjectWeakly(bridgeWeakWrapper);
30
+
31
+ RCTAssert(bridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil at the moment of scheduling a call.");
32
+
33
+ [bridge invokeAsync:[bridgeWeakWrapper, callback = std::move(callback)]() {
34
+ RCTCxxBridge *batchedBridge = (RCTCxxBridge *)unwrapManagedObjectWeakly(bridgeWeakWrapper);
35
+
36
+ RCTAssert(batchedBridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil at the moment of invocation.");
37
+
38
+ if (!batchedBridge) {
39
+ return;
40
+ }
41
+
42
+ auto runtime = (facebook::jsi::Runtime *)(batchedBridge.runtime);
43
+
44
+ RCTAssert(
45
+ runtime, @"RCTRuntimeExecutorFromBridge: Bridge must have a valid jsi::Runtime at the moment of invocation.");
46
+
47
+ if (!runtime) {
48
+ return;
49
+ }
50
+
51
+ callback(*runtime);
52
+ }];
53
+ };
54
+
55
+ return runtimeExecutor;
56
+ }
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(72),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.3",
27
+ RCTVersionPrerelease: @"rc.4",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -475,6 +475,7 @@ struct RCTInstanceCallback : public InstanceCallback {
475
475
  // Load the source asynchronously, then store it for later execution.
476
476
  dispatch_group_enter(prepareBridge);
477
477
  __block NSData *sourceCode;
478
+ __block NSURL *sourceURL = self.bundleURL;
478
479
 
479
480
  #if (RCT_DEV | RCT_ENABLE_LOADING_VIEW) && __has_include(<React/RCTDevLoadingViewProtocol.h>)
480
481
  {
@@ -490,6 +491,9 @@ struct RCTInstanceCallback : public InstanceCallback {
490
491
  }
491
492
 
492
493
  sourceCode = source.data;
494
+ if (source.url) {
495
+ sourceURL = source.url;
496
+ }
493
497
  dispatch_group_leave(prepareBridge);
494
498
  }
495
499
  onProgress:^(RCTLoadingProgress *progressData) {
@@ -504,7 +508,7 @@ struct RCTInstanceCallback : public InstanceCallback {
504
508
  dispatch_group_notify(prepareBridge, dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
505
509
  RCTCxxBridge *strongSelf = weakSelf;
506
510
  if (sourceCode && strongSelf.loading) {
507
- [strongSelf executeSourceCode:sourceCode sync:NO];
511
+ [strongSelf executeSourceCode:sourceCode withSourceURL:sourceURL sync:NO];
508
512
  }
509
513
  });
510
514
  RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
@@ -1050,7 +1054,7 @@ struct RCTInstanceCallback : public InstanceCallback {
1050
1054
  [_displayLink registerModuleForFrameUpdates:module withModuleData:moduleData];
1051
1055
  }
1052
1056
 
1053
- - (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL)sync
1057
+ - (void)executeSourceCode:(NSData *)sourceCode withSourceURL:(NSURL *)url sync:(BOOL)sync
1054
1058
  {
1055
1059
  // This will get called from whatever thread was actually executing JS.
1056
1060
  dispatch_block_t completion = ^{
@@ -1075,12 +1079,13 @@ struct RCTInstanceCallback : public InstanceCallback {
1075
1079
  };
1076
1080
 
1077
1081
  if (sync) {
1078
- [self executeApplicationScriptSync:sourceCode url:self.bundleURL];
1082
+ [self executeApplicationScriptSync:sourceCode url:url];
1079
1083
  completion();
1080
1084
  } else {
1081
- [self enqueueApplicationScript:sourceCode url:self.bundleURL onComplete:completion];
1085
+ [self enqueueApplicationScript:sourceCode url:url onComplete:completion];
1082
1086
  }
1083
1087
 
1088
+ // Use the original request URL here - HMRClient uses this to derive the /hot URL and entry point.
1084
1089
  [self.devSettings setupHMRClientWithBundleURL:self.bundleURL];
1085
1090
  }
1086
1091
 
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  #import <Foundation/Foundation.h>
9
- #import <ReactCommon/RuntimeExecutor.h>
10
9
  #import <UIKit/UIKit.h>
11
10
  #import <react/utils/ContextContainer.h>
12
11
 
@@ -15,8 +14,6 @@ NS_ASSUME_NONNULL_BEGIN
15
14
  @class RCTSurfacePresenter;
16
15
  @class RCTBridge;
17
16
 
18
- facebook::react::RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge);
19
-
20
17
  /*
21
18
  * Controls a life-cycle of a Surface Presenter based on Bridge's life-cycle.
22
19
  * We are moving away from using Bridge.
@@ -15,6 +15,7 @@
15
15
  #import <React/RCTConstants.h>
16
16
  #import <React/RCTImageLoader.h>
17
17
  #import <React/RCTImageLoaderWithAttributionProtocol.h>
18
+ #import <React/RCTRuntimeExecutorFromBridge.h>
18
19
  #import <React/RCTSurfacePresenter.h>
19
20
  #import <React/RCTSurfacePresenterStub.h>
20
21
 
@@ -42,43 +43,6 @@ static ContextContainer::Shared RCTContextContainerFromBridge(RCTBridge *bridge)
42
43
  return contextContainer;
43
44
  }
44
45
 
45
- RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge)
46
- {
47
- RCTAssert(bridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil.");
48
-
49
- auto bridgeWeakWrapper = wrapManagedObjectWeakly([bridge batchedBridge] ?: bridge);
50
-
51
- RuntimeExecutor runtimeExecutor = [bridgeWeakWrapper](
52
- std::function<void(facebook::jsi::Runtime & runtime)> &&callback) {
53
- RCTBridge *bridge = unwrapManagedObjectWeakly(bridgeWeakWrapper);
54
-
55
- RCTAssert(bridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil at the moment of scheduling a call.");
56
-
57
- [bridge invokeAsync:[bridgeWeakWrapper, callback = std::move(callback)]() {
58
- RCTCxxBridge *batchedBridge = (RCTCxxBridge *)unwrapManagedObjectWeakly(bridgeWeakWrapper);
59
-
60
- RCTAssert(batchedBridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil at the moment of invocation.");
61
-
62
- if (!batchedBridge) {
63
- return;
64
- }
65
-
66
- auto runtime = (facebook::jsi::Runtime *)(batchedBridge.runtime);
67
-
68
- RCTAssert(
69
- runtime, @"RCTRuntimeExecutorFromBridge: Bridge must have a valid jsi::Runtime at the moment of invocation.");
70
-
71
- if (!runtime) {
72
- return;
73
- }
74
-
75
- callback(*runtime);
76
- }];
77
- };
78
-
79
- return runtimeExecutor;
80
- }
81
-
82
46
  @implementation RCTSurfacePresenterBridgeAdapter {
83
47
  RCTSurfacePresenter *_Nullable _surfacePresenter;
84
48
  __weak RCTBridge *_bridge;
@@ -29,7 +29,6 @@ header_search_paths = [
29
29
  "\"$(PODS_ROOT)/Headers/Private/React-Core\"",
30
30
  "\"$(PODS_ROOT)/Headers/Public/React-Codegen\"",
31
31
  "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Codegen/React_Codegen.framework/Headers\"",
32
-
33
32
  ]
34
33
 
35
34
  if ENV['USE_FRAMEWORKS']
@@ -41,6 +40,9 @@ if ENV['USE_FRAMEWORKS']
41
40
  header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\""
42
41
  header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\""
43
42
  header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\""
43
+ header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\""
44
+ header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\""
45
+ header_search_paths << "\"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimescheduler/React_runtimescheduler.framework/Headers\""
44
46
  end
45
47
 
46
48
  Pod::Spec.new do |s|
@@ -72,6 +74,17 @@ Pod::Spec.new do |s|
72
74
  s.dependency "React-RCTImage", version
73
75
  s.dependency "React-ImageManager"
74
76
  s.dependency "RCT-Folly/Fabric", folly_version
77
+ s.dependency "glog"
78
+ s.dependency "Yoga"
79
+ s.dependency "React-RCTText"
80
+ s.dependency "React-utils"
81
+ s.dependency "React-runtimescheduler"
82
+
83
+ if ENV["USE_HERMES"] == nil || ENV["USE_HERMES"] == "1"
84
+ s.dependency "hermes-engine"
85
+ else
86
+ s.dependency "React-jsi"
87
+ end
75
88
 
76
89
  s.test_spec 'Tests' do |test_spec|
77
90
  test_spec.source_files = "Tests/**/*.{mm}"
@@ -126,11 +126,13 @@ Pod::Spec.new do |s|
126
126
  end
127
127
 
128
128
  s.dependency "RCT-Folly", folly_version
129
- s.dependency "React-cxxreact", version
130
- s.dependency "React-perflogger", version
131
- s.dependency "React-jsi", version
132
- s.dependency "React-jsiexecutor", version
129
+ s.dependency "React-cxxreact"
130
+ s.dependency "React-perflogger"
131
+ s.dependency "React-jsi"
132
+ s.dependency "React-jsiexecutor"
133
+ s.dependency "React-utils"
133
134
  s.dependency "SocketRocket", socket_rocket_version
135
+ s.dependency "React-runtimeexecutor"
134
136
  s.dependency "Yoga"
135
137
  s.dependency "glog"
136
138
 
@@ -469,7 +469,10 @@ android {
469
469
  "-DREACT_BUILD_DIR=$buildDir",
470
470
  "-DANDROID_STL=c++_shared",
471
471
  "-DANDROID_TOOLCHAIN=clang",
472
- "-DANDROID_PLATFORM=android-21"
472
+ "-DANDROID_PLATFORM=android-21",
473
+ // Due to https://github.com/android/ndk/issues/1693 we're losing Android
474
+ // specific compilation flags. This can be removed once we moved to NDK 25/26
475
+ "-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=ON"
473
476
 
474
477
  targets "jsijniprofiler",
475
478
  "reactnativeblob",
@@ -46,7 +46,20 @@ target_include_directories(${CMAKE_PROJECT_NAME}
46
46
  ${CMAKE_CURRENT_SOURCE_DIR}
47
47
  ${PROJECT_BUILD_DIR}/generated/rncli/src/main/jni)
48
48
 
49
- target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Werror -fexceptions -frtti -std=c++17 -DWITH_INSPECTOR=1 -DLOG_TAG=\"ReactNative\")
49
+ target_compile_options(${CMAKE_PROJECT_NAME}
50
+ PRIVATE
51
+ -Wall
52
+ -Werror
53
+ # We suppress cpp #error and #warning to don't fail the build
54
+ # due to use migrating away from
55
+ # #include <react/renderer/graphics/conversions.h>
56
+ # This can be removed for React Native 0.73
57
+ -Wno-error=cpp
58
+ -fexceptions
59
+ -frtti
60
+ -std=c++17
61
+ -DWITH_INSPECTOR=1
62
+ -DLOG_TAG=\"ReactNative\")
50
63
 
51
64
  # Prefab packages from React Native
52
65
  find_package(ReactAndroid REQUIRED CONFIG)
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.72.0-rc.3
1
+ VERSION_NAME=0.72.0-rc.4
2
2
  GROUP=com.facebook.react
3
3
 
4
4
  # JVM Versions
@@ -154,6 +154,9 @@ android {
154
154
  // We intentionally build Hermes with Intl support only. This is to simplify
155
155
  // the build setup and to avoid overcomplicating the build-type matrix.
156
156
  arguments "-DHERMES_ENABLE_INTL=True"
157
+ // Due to https://github.com/android/ndk/issues/1693 we're losing Android
158
+ // specific compilation flags. This can be removed once we moved to NDK 25/26
159
+ arguments "-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=ON"
157
160
  targets "libhermes"
158
161
  }
159
162
  }
@@ -178,6 +181,8 @@ android {
178
181
  // This has the (unlucky) side effect of letting AGP call the build
179
182
  // tasks `configureCMakeRelease` while is actually building the debug flavor.
180
183
  arguments "-DCMAKE_BUILD_TYPE=Release"
184
+ // Adding -O3 to patch the issue here: https://github.com/android/ndk/issues/1740#issuecomment-1198438260
185
+ cppFlags "-O3"
181
186
  }
182
187
  }
183
188
  }