react-native 0.71.0-rc.6 → 0.71.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.
@@ -9,13 +9,8 @@
9
9
  #import <React/RCTBridgeDelegate.h>
10
10
  #import <UIKit/UIKit.h>
11
11
 
12
- #if RCT_NEW_ARCH_ENABLED
13
- // When the new architecture is enabled, the RCTAppDelegate imports some additional headers
14
- #import <React/RCTCxxBridgeDelegate.h>
15
- #import <React/RCTSurfacePresenterBridgeAdapter.h>
16
- #import <ReactCommon/RCTTurboModuleManager.h>
17
-
18
- #endif
12
+ @class RCTSurfacePresenterBridgeAdapter;
13
+ @class RCTTurboModuleManager;
19
14
 
20
15
  /**
21
16
  * The RCTAppDelegate is an utility class that implements some base configurations for all the React Native apps.
@@ -60,6 +55,7 @@
60
55
  @property (nonatomic, strong) UIWindow *window;
61
56
  @property (nonatomic, strong) RCTBridge *bridge;
62
57
  @property (nonatomic, strong) NSString *moduleName;
58
+ @property (nonatomic, strong) NSDictionary *initialProps;
63
59
 
64
60
  /**
65
61
  * It creates a `RCTBridge` using a delegate and some launch options.
@@ -98,11 +94,7 @@
98
94
  */
99
95
  - (UIViewController *)createRootViewController;
100
96
 
101
- @end
102
-
103
97
  #if RCT_NEW_ARCH_ENABLED
104
- /// Extension that makes the RCTAppDelegate conform to New Architecture delegates
105
- @interface RCTAppDelegate () <RCTTurboModuleManagerDelegate, RCTCxxBridgeDelegate>
106
98
 
107
99
  /// The TurboModule manager
108
100
  @property (nonatomic, strong) RCTTurboModuleManager *turboModuleManager;
@@ -126,5 +118,6 @@
126
118
  /// @return: `true` if the Fabric Renderer is enabled. Otherwise, it returns `false`.
127
119
  - (BOOL)fabricEnabled;
128
120
 
129
- @end
130
121
  #endif
122
+
123
+ @end
@@ -11,13 +11,16 @@
11
11
 
12
12
  #if RCT_NEW_ARCH_ENABLED
13
13
  #import <React/CoreModulesPlugins.h>
14
+ #import <React/RCTCxxBridgeDelegate.h>
14
15
  #import <React/RCTFabricSurfaceHostingProxyRootView.h>
15
16
  #import <React/RCTSurfacePresenter.h>
17
+ #import <React/RCTSurfacePresenterBridgeAdapter.h>
18
+ #import <ReactCommon/RCTTurboModuleManager.h>
16
19
  #import <react/config/ReactNativeConfig.h>
17
20
 
18
21
  static NSString *const kRNConcurrentRoot = @"concurrentRoot";
19
22
 
20
- @interface RCTAppDelegate () {
23
+ @interface RCTAppDelegate () <RCTTurboModuleManagerDelegate, RCTCxxBridgeDelegate> {
21
24
  std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig;
22
25
  facebook::react::ContextContainer::Shared _contextContainer;
23
26
  }
@@ -81,7 +84,7 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
81
84
 
82
85
  - (NSDictionary *)prepareInitialProps
83
86
  {
84
- NSMutableDictionary *initProps = [NSMutableDictionary new];
87
+ NSMutableDictionary *initProps = self.initialProps ? [self.initialProps mutableCopy] : [NSMutableDictionary new];
85
88
 
86
89
  #ifdef RCT_NEW_ARCH_ENABLED
87
90
  initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);
@@ -12,6 +12,6 @@
12
12
  exports.version = {
13
13
  major: 0,
14
14
  minor: 71,
15
- patch: 0,
16
- prerelease: 'rc.6',
15
+ patch: 1,
16
+ prerelease: null,
17
17
  };
@@ -168,6 +168,8 @@ static void *TextFieldSelectionObservingContext = &TextFieldSelectionObservingCo
168
168
 
169
169
  @implementation RCTBackedTextViewDelegateAdapter {
170
170
  __weak UITextView<RCTBackedTextInputViewProtocol> *_backedTextInputView;
171
+ NSAttributedString *_lastStringStateWasUpdatedWith;
172
+ BOOL _ignoreNextTextInputCall;
171
173
  BOOL _textDidChangeIsComing;
172
174
  UITextRange *_previousSelectedTextRange;
173
175
  }
@@ -254,12 +256,21 @@ static void *TextFieldSelectionObservingContext = &TextFieldSelectionObservingCo
254
256
 
255
257
  - (void)textViewDidChange:(__unused UITextView *)textView
256
258
  {
259
+ if (_ignoreNextTextInputCall && [_lastStringStateWasUpdatedWith isEqual:_backedTextInputView.attributedText]) {
260
+ _ignoreNextTextInputCall = NO;
261
+ return;
262
+ }
263
+ _lastStringStateWasUpdatedWith = _backedTextInputView.attributedText;
257
264
  _textDidChangeIsComing = NO;
258
265
  [_backedTextInputView.textInputDelegate textInputDidChange];
259
266
  }
260
267
 
261
268
  - (void)textViewDidChangeSelection:(__unused UITextView *)textView
262
269
  {
270
+ if (![_lastStringStateWasUpdatedWith isEqual:_backedTextInputView.attributedText]) {
271
+ [self textViewDidChange:_backedTextInputView];
272
+ _ignoreNextTextInputCall = YES;
273
+ }
263
274
  [self textViewProbablyDidChangeSelection];
264
275
  }
265
276
 
@@ -23,8 +23,8 @@ NSDictionary* RCTGetReactNativeVersion(void)
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(71),
26
- RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.6",
26
+ RCTVersionPatch: @(1),
27
+ RCTVersionPrerelease: [NSNull null],
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -20,10 +20,24 @@
20
20
  - (UIWindow *)alertWindow
21
21
  {
22
22
  if (_alertWindow == nil) {
23
- _alertWindow = [[UIWindow alloc] initWithFrame:RCTSharedApplication().keyWindow.bounds];
24
- _alertWindow.rootViewController = [UIViewController new];
25
- _alertWindow.windowLevel = UIWindowLevelAlert + 1;
23
+ _alertWindow = [self getUIWindowFromScene];
24
+
25
+ if (_alertWindow == nil) {
26
+ UIWindow *keyWindow = RCTSharedApplication().keyWindow;
27
+ if (keyWindow) {
28
+ _alertWindow = [[UIWindow alloc] initWithFrame:keyWindow.bounds];
29
+ } else {
30
+ // keyWindow is nil, so we cannot create and initialize _alertWindow
31
+ NSLog(@"Unable to create alert window: keyWindow is nil");
32
+ }
33
+ }
34
+
35
+ if (_alertWindow) {
36
+ _alertWindow.rootViewController = [UIViewController new];
37
+ _alertWindow.windowLevel = UIWindowLevelAlert + 1;
38
+ }
26
39
  }
40
+
27
41
  return _alertWindow;
28
42
  }
29
43
 
@@ -49,4 +63,17 @@
49
63
  _alertWindow = nil;
50
64
  }
51
65
 
66
+ - (UIWindow *)getUIWindowFromScene
67
+ {
68
+ if (@available(iOS 13.0, *)) {
69
+ for (UIScene *scene in RCTSharedApplication().connectedScenes) {
70
+ if (scene.activationState == UISceneActivationStateForegroundActive &&
71
+ [scene isKindOfClass:[UIWindowScene class]]) {
72
+ return [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
73
+ }
74
+ }
75
+ }
76
+ return nil;
77
+ }
78
+
52
79
  @end
@@ -110,6 +110,20 @@ RCT_EXPORT_MODULE()
110
110
  return;
111
111
  }
112
112
 
113
+ // Input validation
114
+ if (message == nil || [message isEqualToString:@""]) {
115
+ NSLog(@"Error: message cannot be nil or empty");
116
+ return;
117
+ }
118
+ if (color == nil) {
119
+ NSLog(@"Error: color cannot be nil");
120
+ return;
121
+ }
122
+ if (backgroundColor == nil) {
123
+ NSLog(@"Error: backgroundColor cannot be nil");
124
+ return;
125
+ }
126
+
113
127
  dispatch_async(dispatch_get_main_queue(), ^{
114
128
  self->_showDate = [NSDate date];
115
129
  if (!self->_window && !RCTRunningInTestEnvironment()) {
@@ -75,13 +75,15 @@ RCT_EXPORT_MODULE()
75
75
  modalHostView.onShow(nil);
76
76
  }
77
77
  };
78
- if (_presentationBlock) {
79
- _presentationBlock([modalHostView reactViewController], viewController, animated, completionBlock);
80
- } else {
81
- [[modalHostView reactViewController] presentViewController:viewController
82
- animated:animated
83
- completion:completionBlock];
84
- }
78
+ dispatch_async(dispatch_get_main_queue(), ^{
79
+ if (self->_presentationBlock) {
80
+ self->_presentationBlock([modalHostView reactViewController], viewController, animated, completionBlock);
81
+ } else {
82
+ [[modalHostView reactViewController] presentViewController:viewController
83
+ animated:animated
84
+ completion:completionBlock];
85
+ }
86
+ });
85
87
  }
86
88
 
87
89
  - (void)dismissModalHostView:(RCTModalHostView *)modalHostView
@@ -93,11 +95,13 @@ RCT_EXPORT_MODULE()
93
95
  [[self.bridge moduleForClass:[RCTModalManager class]] modalDismissed:modalHostView.identifier];
94
96
  }
95
97
  };
96
- if (_dismissalBlock) {
97
- _dismissalBlock([modalHostView reactViewController], viewController, animated, completionBlock);
98
- } else {
99
- [viewController.presentingViewController dismissViewControllerAnimated:animated completion:completionBlock];
100
- }
98
+ dispatch_async(dispatch_get_main_queue(), ^{
99
+ if (self->_dismissalBlock) {
100
+ self->_dismissalBlock([modalHostView reactViewController], viewController, animated, completionBlock);
101
+ } else {
102
+ [viewController.presentingViewController dismissViewControllerAnimated:animated completion:completionBlock];
103
+ }
104
+ });
101
105
  }
102
106
 
103
107
  - (RCTShadowView *)shadowView
@@ -39,6 +39,16 @@ def downloadsDir = customDownloadsDir ? new File(customDownloadsDir) : new File(
39
39
  def thirdPartyNdkDir = new File("$buildDir/third-party-ndk")
40
40
  def reactNativeRootDir = projectDir.parent
41
41
 
42
+ // We put the publishing version from gradle.properties inside ext. so other
43
+ // subprojects can access it as well.
44
+ ext.publishing_version = VERSION_NAME
45
+
46
+ // This is the version of CMake we're requesting to the Android SDK to use.
47
+ // If missing it will be downloaded automatically. Only CMake versions shipped with the
48
+ // Android SDK are supported (you can find them listed in the SDK Manager of Android Studio).
49
+ def cmakeVersion = System.getenv("CMAKE_VERSION") ?: "3.22.1"
50
+ ext.cmake_version = cmakeVersion
51
+
42
52
  // You need to have following folders in this directory:
43
53
  // - boost_1_76_0
44
54
  // - double-conversion-1.1.6
@@ -217,15 +227,15 @@ final def preparePrefab = tasks.register("preparePrefab", PreparePrefabHeadersTa
217
227
  new Pair("../ReactCommon/cxxreact/", "cxxreact/"),
218
228
  ]
219
229
  ),
230
+ new PrefabPreprocessingEntry(
231
+ "jsinspector",
232
+ new Pair("../ReactCommon/jsinspector/", "jsinspector/"),
233
+ ),
220
234
  ]
221
235
  )
222
236
  it.outputDir.set(prefabHeadersDir)
223
237
  }
224
238
 
225
- // We put the publishing version from gradle.properties inside ext. so other
226
- // subprojects can access it as well.
227
- ext.publishing_version = VERSION_NAME
228
-
229
239
  task createNativeDepsDirectories {
230
240
  downloadsDir.mkdirs()
231
241
  thirdPartyNdkDir.mkdirs()
@@ -474,7 +484,8 @@ android {
474
484
  "react_render_scheduler",
475
485
  "react_render_mounting",
476
486
  "hermes_executor",
477
- "jscexecutor"
487
+ "jscexecutor",
488
+ "jsinspector"
478
489
  }
479
490
  }
480
491
  ndk {
@@ -484,6 +495,7 @@ android {
484
495
 
485
496
  externalNativeBuild {
486
497
  cmake {
498
+ version cmakeVersion
487
499
  path "src/main/jni/CMakeLists.txt"
488
500
  }
489
501
  }
@@ -600,6 +612,9 @@ android {
600
612
  jscexecutor {
601
613
  headers(new File(prefabHeadersDir, "jscexecutor").absolutePath)
602
614
  }
615
+ jsinspector {
616
+ headers(new File(prefabHeadersDir, "jsinspector").absolutePath)
617
+ }
603
618
  }
604
619
 
605
620
  publishing {
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.71.0-rc.6
1
+ VERSION_NAME=0.71.1
2
2
  GROUP=com.facebook.react
3
3
 
4
4
  # JVM Versions
@@ -16,18 +16,19 @@ plugins {
16
16
 
17
17
  group = "com.facebook.react"
18
18
  version = parent.publishing_version
19
+ def cmakeVersion = parent.cmake_version
19
20
 
20
- def cmakeVersion = "3.18.1"
21
21
  /**
22
22
  * We use the bundled version of CMake in the Android SDK if available, to don't force Android
23
23
  * users to install CMake externally.
24
24
  */
25
25
  def findCmakePath(cmakeVersion) {
26
- if (System.getenv("ANDROID_SDK_ROOT")) {
27
- return "${System.getenv("ANDROID_SDK_ROOT")}/cmake/${cmakeVersion}/bin/cmake"
26
+ def cmakeRelativePath = "/cmake/${cmakeVersion}/bin/cmake"
27
+ if (System.getenv("ANDROID_SDK_ROOT") && new File("${System.getenv("ANDROID_SDK_ROOT")}/${cmakeRelativePath}").exists()) {
28
+ return "${System.getenv("ANDROID_SDK_ROOT")}/${cmakeRelativePath}"
28
29
  }
29
- if (System.getenv("ANDROID_HOME")) {
30
- return "${System.getenv("ANDROID_HOME")}/cmake/${cmakeVersion}/bin/cmake"
30
+ if (System.getenv("ANDROID_HOME") && new File("${System.getenv("ANDROID_HOME")}/${cmakeRelativePath}").exists()) {
31
+ return "${System.getenv("ANDROID_HOME")}/${cmakeRelativePath}"
31
32
  }
32
33
  return "cmake"
33
34
  }
@@ -923,38 +923,40 @@ public class ReactRootView extends FrameLayout implements RootView, ReactRoot {
923
923
  private void checkForKeyboardEvents() {
924
924
  getRootView().getWindowVisibleDisplayFrame(mVisibleViewArea);
925
925
  WindowInsets rootInsets = getRootView().getRootWindowInsets();
926
- WindowInsetsCompat compatRootInsets = WindowInsetsCompat.toWindowInsetsCompat(rootInsets);
927
-
928
- boolean keyboardIsVisible = compatRootInsets.isVisible(WindowInsetsCompat.Type.ime());
929
- if (keyboardIsVisible != mKeyboardIsVisible) {
930
- mKeyboardIsVisible = keyboardIsVisible;
931
-
932
- if (keyboardIsVisible) {
933
- Insets imeInsets = compatRootInsets.getInsets(WindowInsetsCompat.Type.ime());
934
- Insets barInsets = compatRootInsets.getInsets(WindowInsetsCompat.Type.systemBars());
935
- int height = imeInsets.bottom - barInsets.bottom;
936
-
937
- int softInputMode = ((Activity) getContext()).getWindow().getAttributes().softInputMode;
938
- int screenY =
939
- softInputMode == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING
940
- ? mVisibleViewArea.bottom - height
941
- : mVisibleViewArea.bottom;
942
-
943
- sendEvent(
944
- "keyboardDidShow",
945
- createKeyboardEventPayload(
946
- PixelUtil.toDIPFromPixel(screenY),
947
- PixelUtil.toDIPFromPixel(mVisibleViewArea.left),
948
- PixelUtil.toDIPFromPixel(mVisibleViewArea.width()),
949
- PixelUtil.toDIPFromPixel(height)));
950
- } else {
951
- sendEvent(
952
- "keyboardDidHide",
953
- createKeyboardEventPayload(
954
- PixelUtil.toDIPFromPixel(mLastHeight),
955
- 0,
956
- PixelUtil.toDIPFromPixel(mVisibleViewArea.width()),
957
- 0));
926
+ if (rootInsets != null) {
927
+ WindowInsetsCompat compatRootInsets = WindowInsetsCompat.toWindowInsetsCompat(rootInsets);
928
+
929
+ boolean keyboardIsVisible = compatRootInsets.isVisible(WindowInsetsCompat.Type.ime());
930
+ if (keyboardIsVisible != mKeyboardIsVisible) {
931
+ mKeyboardIsVisible = keyboardIsVisible;
932
+
933
+ if (keyboardIsVisible) {
934
+ Insets imeInsets = compatRootInsets.getInsets(WindowInsetsCompat.Type.ime());
935
+ Insets barInsets = compatRootInsets.getInsets(WindowInsetsCompat.Type.systemBars());
936
+ int height = imeInsets.bottom - barInsets.bottom;
937
+
938
+ int softInputMode = ((Activity) getContext()).getWindow().getAttributes().softInputMode;
939
+ int screenY =
940
+ softInputMode == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING
941
+ ? mVisibleViewArea.bottom - height
942
+ : mVisibleViewArea.bottom;
943
+
944
+ sendEvent(
945
+ "keyboardDidShow",
946
+ createKeyboardEventPayload(
947
+ PixelUtil.toDIPFromPixel(screenY),
948
+ PixelUtil.toDIPFromPixel(mVisibleViewArea.left),
949
+ PixelUtil.toDIPFromPixel(mVisibleViewArea.width()),
950
+ PixelUtil.toDIPFromPixel(height)));
951
+ } else {
952
+ sendEvent(
953
+ "keyboardDidHide",
954
+ createKeyboardEventPayload(
955
+ PixelUtil.toDIPFromPixel(mLastHeight),
956
+ 0,
957
+ PixelUtil.toDIPFromPixel(mVisibleViewArea.width()),
958
+ 0));
959
+ }
958
960
  }
959
961
  }
960
962
  }
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
17
17
  public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
18
18
  "major", 0,
19
19
  "minor", 71,
20
- "patch", 0,
21
- "prerelease", "rc.6");
20
+ "patch", 1,
21
+ "prerelease", null);
22
22
  }
@@ -17,8 +17,8 @@ namespace facebook::react {
17
17
  constexpr struct {
18
18
  int32_t Major = 0;
19
19
  int32_t Minor = 71;
20
- int32_t Patch = 0;
21
- std::string_view Prerelease = "rc.6";
20
+ int32_t Patch = 1;
21
+ std::string_view Prerelease = "";
22
22
  } ReactNativeVersion;
23
23
 
24
24
  } // namespace facebook::react
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native",
3
- "version": "0.71.0-rc.6",
3
+ "version": "0.71.1",
4
4
  "bin": "./cli.js",
5
5
  "description": "A framework for building native apps using React",
6
6
  "license": "MIT",
@@ -85,7 +85,7 @@
85
85
  "prettier": "prettier --write \"./**/*.{js,md,yml,ts,tsx}\"",
86
86
  "format-check": "prettier --list-different \"./**/*.{js,md,yml,ts,tsx}\"",
87
87
  "update-lock": "npx yarn-deduplicate",
88
- "docker-setup-android": "docker pull reactnativecommunity/react-native-android:6.1",
88
+ "docker-setup-android": "docker pull reactnativecommunity/react-native-android:6.2",
89
89
  "docker-build-android": "docker build -t reactnativeci/android -f .circleci/Dockerfiles/Dockerfile.android .",
90
90
  "test-android-run-instrumentation": "docker run --cap-add=SYS_ADMIN -it reactnativeci/android bash .circleci/Dockerfiles/scripts/run-android-docker-instrumentation-tests.sh",
91
91
  "test-android-run-unit": "docker run --cap-add=SYS_ADMIN -it reactnativeci/android bash .circleci/Dockerfiles/scripts/run-android-docker-unit-tests.sh",
@@ -105,9 +105,9 @@
105
105
  },
106
106
  "dependencies": {
107
107
  "@jest/create-cache-key-function": "^29.2.1",
108
- "@react-native-community/cli": "10.0.0",
109
- "@react-native-community/cli-platform-android": "10.0.0",
110
- "@react-native-community/cli-platform-ios": "10.0.0",
108
+ "@react-native-community/cli": "10.1.3",
109
+ "@react-native-community/cli-platform-android": "10.1.3",
110
+ "@react-native-community/cli-platform-ios": "10.1.1",
111
111
  "@react-native/assets": "1.0.0",
112
112
  "@react-native/normalize-color": "2.1.0",
113
113
  "@react-native/polyfills": "2.0.0",
@@ -120,15 +120,15 @@
120
120
  "jest-environment-node": "^29.2.1",
121
121
  "jsc-android": "^250230.2.1",
122
122
  "memoize-one": "^5.0.0",
123
- "metro-react-native-babel-transformer": "0.73.5",
124
- "metro-runtime": "0.73.5",
125
- "metro-source-map": "0.73.5",
123
+ "metro-react-native-babel-transformer": "0.73.7",
124
+ "metro-runtime": "0.73.7",
125
+ "metro-source-map": "0.73.7",
126
126
  "mkdirp": "^0.5.1",
127
127
  "nullthrows": "^1.1.1",
128
128
  "pretty-format": "^26.5.2",
129
129
  "promise": "^8.3.0",
130
130
  "react-devtools-core": "^4.26.1",
131
- "react-native-gradle-plugin": "^0.71.12",
131
+ "react-native-gradle-plugin": "^0.71.13",
132
132
  "react-refresh": "^0.4.0",
133
133
  "react-shallow-renderer": "^16.15.0",
134
134
  "regenerator-runtime": "^0.13.2",
@@ -144,9 +144,9 @@
144
144
  "hermes-eslint": "0.8.0",
145
145
  "react": "18.2.0",
146
146
  "react-test-renderer": "18.2.0",
147
- "@babel/core": "^7.14.0",
147
+ "@babel/core": "^7.20.0",
148
148
  "@babel/eslint-parser": "^7.18.2",
149
- "@babel/generator": "^7.14.0",
149
+ "@babel/generator": "^7.20.0",
150
150
  "@babel/plugin-transform-regenerator": "^7.0.0",
151
151
  "@definitelytyped/dtslint": "^0.0.127",
152
152
  "@react-native-community/eslint-config": "*",
@@ -176,8 +176,8 @@
176
176
  "jest": "^29.2.1",
177
177
  "jest-junit": "^10.0.0",
178
178
  "jscodeshift": "^0.13.1",
179
- "metro-babel-register": "0.73.5",
180
- "metro-memory-fs": "0.73.5",
179
+ "metro-babel-register": "0.73.7",
180
+ "metro-memory-fs": "0.73.7",
181
181
  "mkdirp": "^0.5.1",
182
182
  "mock-fs": "^5.1.4",
183
183
  "prettier": "^2.4.1",
@@ -43,7 +43,7 @@ elsif isNightly
43
43
  destination_path = download_nightly_hermes(react_native_path, version)
44
44
  # set tarball as hermes engine
45
45
  source[:http] = "file://#{destination_path}"
46
- elsif File.exists?(hermestag_file) && isInCI
46
+ elsif File.exist?(hermestag_file) && isInCI
47
47
  Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source but fetched from tag...'.yellow if Object.const_defined?("Pod::UI")
48
48
  hermestag = File.read(hermestag_file).strip
49
49
  source[:git] = git
Binary file
@@ -12,9 +12,9 @@ react {
12
12
  // The root of your project, i.e. where "package.json" lives. Default is '..'
13
13
  // root = file("../")
14
14
  // The folder where the react-native NPM package is. Default is ../node_modules/react-native
15
- // reactNativeDir = file("../node-modules/react-native")
15
+ // reactNativeDir = file("../node_modules/react-native")
16
16
  // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen
17
- // codegenDir = file("../node-modules/react-native-codegen")
17
+ // codegenDir = file("../node_modules/react-native-codegen")
18
18
  // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
19
19
  // cliFile = file("../node_modules/react-native/cli.js")
20
20
 
@@ -7,6 +7,10 @@
7
7
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
8
8
  {
9
9
  self.moduleName = @"HelloWorld";
10
+ // You can add your custom initial props in the dictionary below.
11
+ // They will be passed down to the ViewController used by React Native.
12
+ self.initialProps = @{};
13
+
10
14
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
11
15
  }
12
16
 
@@ -4,6 +4,15 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ
4
4
  platform :ios, min_ios_version_supported
5
5
  prepare_react_native_project!
6
6
 
7
+ # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
8
+ # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
9
+ #
10
+ # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
11
+ # ```js
12
+ # module.exports = {
13
+ # dependencies: {
14
+ # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
15
+ # ```
7
16
  flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
8
17
 
9
18
  linkage = ENV['USE_FRAMEWORKS']
@@ -11,12 +11,12 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "react": "18.2.0",
14
- "react-native": "0.71.0-rc.6"
14
+ "react-native": "0.71.1"
15
15
  },
16
16
  "devDependencies": {
17
- "@babel/core": "^7.12.9",
18
- "@babel/preset-env": "^7.14.0",
19
- "@babel/runtime": "^7.12.5",
17
+ "@babel/core": "^7.20.0",
18
+ "@babel/preset-env": "^7.20.0",
19
+ "@babel/runtime": "^7.20.0",
20
20
  "@react-native-community/eslint-config": "^3.0.0",
21
21
  "@tsconfig/react-native": "^2.0.2",
22
22
  "@types/jest": "^29.2.1",
@@ -25,7 +25,7 @@
25
25
  "babel-jest": "^29.2.1",
26
26
  "eslint": "^8.19.0",
27
27
  "jest": "^29.2.1",
28
- "metro-react-native-babel-preset": "0.73.5",
28
+ "metro-react-native-babel-preset": "0.73.7",
29
29
  "prettier": "^2.4.1",
30
30
  "react-test-renderer": "18.2.0",
31
31
  "typescript": "4.8.4"