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.
- package/Libraries/AppDelegate/RCTAppDelegate.h +5 -12
- package/Libraries/AppDelegate/RCTAppDelegate.mm +5 -2
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.m +11 -0
- package/React/Base/RCTVersion.m +2 -2
- package/React/CoreModules/RCTAlertController.m +30 -3
- package/React/CoreModules/RCTDevLoadingView.mm +14 -0
- package/React/Views/RCTModalHostViewManager.m +16 -12
- package/ReactAndroid/build.gradle +20 -5
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/hermes-engine/build.gradle +6 -5
- package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +34 -32
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
- package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
- package/package.json +13 -13
- package/sdks/hermes-engine/hermes-engine.podspec +1 -1
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/template/android/app/build.gradle +2 -2
- package/template/ios/HelloWorld/AppDelegate.mm +4 -0
- package/template/ios/Podfile +9 -0
- package/template/package.json +5 -5
|
@@ -9,13 +9,8 @@
|
|
|
9
9
|
#import <React/RCTBridgeDelegate.h>
|
|
10
10
|
#import <UIKit/UIKit.h>
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
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]);
|
|
@@ -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
|
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -23,8 +23,8 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
|
|
23
23
|
__rnVersion = @{
|
|
24
24
|
RCTVersionMajor: @(0),
|
|
25
25
|
RCTVersionMinor: @(71),
|
|
26
|
-
RCTVersionPatch: @(
|
|
27
|
-
RCTVersionPrerelease:
|
|
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 = [
|
|
24
|
-
|
|
25
|
-
_alertWindow
|
|
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
|
-
|
|
79
|
-
_presentationBlock
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
97
|
-
_dismissalBlock
|
|
98
|
-
|
|
99
|
-
|
|
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 {
|
|
@@ -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
|
-
|
|
27
|
-
|
|
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")}
|
|
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
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
mKeyboardIsVisible
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
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,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 =
|
|
21
|
-
std::string_view Prerelease = "
|
|
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.
|
|
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.
|
|
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.
|
|
109
|
-
"@react-native-community/cli-platform-android": "10.
|
|
110
|
-
"@react-native-community/cli-platform-ios": "10.
|
|
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.
|
|
124
|
-
"metro-runtime": "0.73.
|
|
125
|
-
"metro-source-map": "0.73.
|
|
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.
|
|
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.
|
|
147
|
+
"@babel/core": "^7.20.0",
|
|
148
148
|
"@babel/eslint-parser": "^7.18.2",
|
|
149
|
-
"@babel/generator": "^7.
|
|
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.
|
|
180
|
-
"metro-memory-fs": "0.73.
|
|
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.
|
|
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("../
|
|
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("../
|
|
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
|
|
package/template/ios/Podfile
CHANGED
|
@@ -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']
|
package/template/package.json
CHANGED
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"react": "18.2.0",
|
|
14
|
-
"react-native": "0.71.
|
|
14
|
+
"react-native": "0.71.1"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@babel/core": "^7.
|
|
18
|
-
"@babel/preset-env": "^7.
|
|
19
|
-
"@babel/runtime": "^7.
|
|
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.
|
|
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"
|