Skip to content

Commit 2e08709

Browse files
committed
feat: add Swift entrypoint
[wip] add module maps to some RN modules to allow for swift c++ imports feat: implement RCTReactController and RCTSwiftUIAppDelegate feat: introduce new method to RCTAppDelegate
1 parent 474980e commit 2e08709

File tree

13 files changed

+213
-110
lines changed

13 files changed

+213
-110
lines changed

packages/react-native/Libraries/AppDelegate/RCTAppDelegate.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,10 @@ NS_ASSUME_NONNULL_BEGIN
159159
- (BOOL)bridgelessEnabled;
160160

161161
/// Return the bundle URL for the main bundle.
162-
- (NSURL *)bundleURL;
162+
- (NSURL *__nullable)bundleURL;
163+
164+
/// Don't use this method, it's going to be removed soon.
165+
- (UIView *)viewWithModuleName:(NSString *)moduleName initialProperties:(NSDictionary*)initialProperties launchOptions:(NSDictionary*)launchOptions;
163166

164167
@end
165168

packages/react-native/Libraries/AppDelegate/RCTAppDelegate.mm

Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -83,51 +83,16 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
8383
{
8484
RCTSetNewArchEnabled([self newArchEnabled]);
8585
BOOL enableTM = self.turboModuleEnabled;
86-
BOOL fabricEnabled = self.fabricEnabled;
87-
BOOL enableBridgeless = self.bridgelessEnabled;
88-
89-
NSDictionary *initProps = updateInitialProps([self prepareInitialProps], fabricEnabled);
9086

9187
RCTAppSetupPrepareApp(application, enableTM, *_reactNativeConfig);
92-
93-
UIView *rootView;
94-
if (enableBridgeless) {
95-
// Enable native view config interop only if both bridgeless mode and Fabric is enabled.
96-
RCTSetUseNativeViewConfigsInBridgelessMode(fabricEnabled);
97-
98-
// Enable TurboModule interop by default in Bridgeless mode
99-
RCTEnableTurboModuleInterop(YES);
100-
RCTEnableTurboModuleInteropBridgeProxy(YES);
101-
102-
[self createReactHost];
103-
[RCTComponentViewFactory currentComponentViewFactory].thirdPartyFabricComponentsProvider = self;
104-
RCTFabricSurface *surface = [_reactHost createSurfaceWithModuleName:self.moduleName initialProperties:initProps];
105-
106-
RCTSurfaceHostingProxyRootView *surfaceHostingProxyRootView = [[RCTSurfaceHostingProxyRootView alloc]
107-
initWithSurface:surface
108-
sizeMeasureMode:RCTSurfaceSizeMeasureModeWidthExact | RCTSurfaceSizeMeasureModeHeightExact];
109-
110-
rootView = (RCTRootView *)surfaceHostingProxyRootView;
111-
} else {
112-
if (!self.bridge) {
113-
self.bridge = [self createBridgeWithDelegate:self launchOptions:launchOptions];
114-
}
115-
if ([self newArchEnabled]) {
116-
self.bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:self.bridge
117-
contextContainer:_contextContainer];
118-
self.bridge.surfacePresenter = self.bridgeAdapter.surfacePresenter;
119-
120-
[RCTComponentViewFactory currentComponentViewFactory].thirdPartyFabricComponentsProvider = self;
121-
}
122-
rootView = [self createRootViewWithBridge:self.bridge moduleName:self.moduleName initProps:initProps];
123-
}
124-
125-
[self customizeRootView:(RCTRootView *)rootView];
88+
12689
#if TARGET_OS_VISION
127-
self.window = [[UIWindow alloc] initWithFrame:RCTForegroundWindow().bounds];
90+
/// Bail out of UIWindow initializaiton to support multi-window scenarios in SwiftUI lifecycle.
91+
return YES;
12892
#else
93+
UIView* rootView = [self viewWithModuleName:self.moduleName initialProperties:[self prepareInitialProps] launchOptions:launchOptions];
94+
12995
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
130-
#endif
13196

13297
UIViewController *rootViewController = [self createRootViewController];
13398
[self setRootView:rootView toRootViewController:rootViewController];
@@ -136,13 +101,59 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
136101
[self.window makeKeyAndVisible];
137102

138103
return YES;
104+
#endif
139105
}
140106

141107
- (void)applicationDidEnterBackground:(UIApplication *)application
142108
{
143109
// Noop
144110
}
145111

112+
- (UIView *)viewWithModuleName:(NSString *)moduleName initialProperties:(NSDictionary*)initialProperties launchOptions:(NSDictionary*)launchOptions {
113+
BOOL fabricEnabled = self.fabricEnabled;
114+
BOOL enableBridgeless = self.bridgelessEnabled;
115+
116+
NSDictionary *initProps = updateInitialProps(initialProperties, fabricEnabled);
117+
118+
UIView *rootView;
119+
if (enableBridgeless) {
120+
// Enable native view config interop only if both bridgeless mode and Fabric is enabled.
121+
RCTSetUseNativeViewConfigsInBridgelessMode(self.fabricEnabled);
122+
123+
// Enable TurboModule interop by default in Bridgeless mode
124+
RCTEnableTurboModuleInterop(YES);
125+
RCTEnableTurboModuleInteropBridgeProxy(YES);
126+
127+
[self createReactHost];
128+
[RCTComponentViewFactory currentComponentViewFactory].thirdPartyFabricComponentsProvider = self;
129+
RCTFabricSurface *surface = [_reactHost createSurfaceWithModuleName:self.moduleName initialProperties:initProps];
130+
131+
RCTSurfaceHostingProxyRootView *surfaceHostingProxyRootView = [[RCTSurfaceHostingProxyRootView alloc]
132+
initWithSurface:surface
133+
sizeMeasureMode:RCTSurfaceSizeMeasureModeWidthExact | RCTSurfaceSizeMeasureModeHeightExact];
134+
135+
rootView = (RCTRootView *)surfaceHostingProxyRootView;
136+
} else {
137+
if (!self.bridge) {
138+
self.bridge = [self createBridgeWithDelegate:self launchOptions:launchOptions];
139+
}
140+
if ([self newArchEnabled]) {
141+
if (!self.bridgeAdapter) {
142+
self.bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:self.bridge
143+
contextContainer:_contextContainer];
144+
self.bridge.surfacePresenter = self.bridgeAdapter.surfacePresenter;
145+
146+
[RCTComponentViewFactory currentComponentViewFactory].thirdPartyFabricComponentsProvider = self;
147+
}
148+
}
149+
rootView = [self createRootViewWithBridge:self.bridge moduleName:moduleName initProps:initProps];
150+
}
151+
152+
[self customizeRootView:(RCTRootView *)rootView];
153+
154+
return rootView;
155+
}
156+
146157
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
147158
{
148159
[NSException raise:@"RCTBridgeDelegate::sourceURLForBridge not implemented"

packages/react-native/Libraries/AppDelegate/RCTAppSetupUtils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#elif __has_include(<reacthermes/HermesExecutorFactory.h>)
2222
#import <reacthermes/HermesExecutorFactory.h>
2323
#endif
24-
#else // USE_HERMES
24+
#elif __has_include(<React/JSCExecutorFactory.h>) // USE_HERMES
2525
#import <React/JSCExecutorFactory.h>
2626
#endif // USE_HERMES
2727

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#import <React/RCTBridgeDelegate.h>
2+
#import <UIKit/UIKit.h>
3+
4+
@interface RCTReactViewController : UIViewController
5+
6+
@property (nonatomic, strong) NSString *_Nonnull moduleName;
7+
@property (nonatomic, strong) NSDictionary *_Nullable initialProps;
8+
9+
- (instancetype _Nonnull)initWithModuleName:(NSString *_Nonnull)moduleName
10+
initProps:(NSDictionary *_Nullable)initProps;
11+
12+
@end
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#import "RCTReactViewController.h"
2+
#import <React/RCTUtils.h>
3+
4+
#import "RCTAppDelegate.h"
5+
6+
@implementation RCTReactViewController
7+
8+
- (instancetype)initWithModuleName:(NSString *)moduleName initProps:(NSDictionary *)initProps {
9+
if (self = [super init]) {
10+
_moduleName = moduleName;
11+
_initialProps = initProps;
12+
}
13+
return self;
14+
}
15+
16+
// TODO: Temporary solution for creating RCTRootView. This should be done through factory pattern, here: https://github.com/facebook/react-native/pull/42263
17+
- (void)loadView {
18+
id<UIApplicationDelegate> appDelegate = RCTSharedApplication().delegate;
19+
if ([appDelegate respondsToSelector:@selector(viewWithModuleName:initialProperties:launchOptions:)]) {
20+
RCTAppDelegate *delegate = (RCTAppDelegate *)appDelegate;
21+
self.view = [delegate viewWithModuleName:_moduleName initialProperties:_initialProps launchOptions:@{}];
22+
} else {
23+
[NSException raise:@"UIApplicationDelegate:viewWithModuleName:initialProperties:launchOptions: not implemented"
24+
format:@"Make sure you subclass RCTAppDelegate"];
25+
}
26+
}
27+
28+
@end

packages/react-native/React/Base/RCTBridgeDelegate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
2020
* When running from a locally bundled JS file, this should be a `file://` url
2121
* pointing to a path inside the app resources, e.g. `file://.../main.jsbundle`.
2222
*/
23-
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge;
23+
- (NSURL *__nullable)sourceURLForBridge:(RCTBridge *)bridge;
2424

2525
@optional
2626

packages/react-native/React/Base/RCTBundleURLProvider.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ RCT_EXTERN const NSUInteger kRCTBundleURLProviderDefaultPort;
2222
RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
2323
#endif
2424

25+
NS_ASSUME_NONNULL_BEGIN
26+
2527
@interface RCTBundleURLProvider : NSObject
2628

2729
/**
@@ -58,38 +60,38 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
5860
* Returns the jsBundleURL for a given bundle entrypoint and
5961
* the fallback offline JS bundle if the packager is not running.
6062
*/
61-
- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(NSURL * (^)(void))fallbackURLProvider;
63+
- (NSURL *__nullable)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(NSURL * (^)(void))fallbackURLProvider;
6264

6365
/**
6466
* Returns the jsBundleURL for a given split bundle entrypoint in development
6567
*/
66-
- (NSURL *)jsBundleURLForSplitBundleRoot:(NSString *)bundleRoot;
68+
- (NSURL *__nullable)jsBundleURLForSplitBundleRoot:(NSString *)bundleRoot;
6769

6870
/**
6971
* Returns the jsBundleURL for a given bundle entrypoint and
7072
* the fallback offline JS bundle if the packager is not running.
7173
* if extension is nil, "jsbundle" will be used.
7274
*/
73-
- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackExtension:(NSString *)extension;
75+
- (NSURL *__nullable)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackExtension:(NSString *)extension;
7476

7577
/**
7678
* Returns the jsBundleURL for a given bundle entrypoint and
7779
* the fallback offline JS bundle if the packager is not running.
7880
*/
79-
- (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot;
81+
- (NSURL *__nullable)jsBundleURLForBundleRoot:(NSString *)bundleRoot;
8082

8183
/**
8284
* Returns the jsBundleURL for a given bundle entrypoint and
8385
* the fallback offline JS bundle. If extension is nil,
8486
* "jsbundle" will be used.
8587
*/
86-
- (NSURL *)jsBundleURLForFallbackExtension:(NSString *)extension;
88+
- (NSURL *__nullable)jsBundleURLForFallbackExtension:(NSString *)extension;
8789

8890
/**
8991
* Returns the resourceURL for a given bundle entrypoint and
9092
* the fallback offline resource file if the packager is not running.
9193
*/
92-
- (NSURL *)resourceURLForResourceRoot:(NSString *)root
94+
- (NSURL *__nullable)resourceURLForResourceRoot:(NSString *)root
9395
resourceName:(NSString *)name
9496
resourceExtension:(NSString *)extension
9597
offlineBundle:(NSBundle *)offlineBundle;
@@ -124,13 +126,13 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
124126
* - runModule: When true, will run the main module after defining all modules. This is used in the main bundle but not
125127
* in split bundles.
126128
*/
127-
+ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
129+
+ (NSURL *__nullable)jsBundleURLForBundleRoot:(NSString *)bundleRoot
128130
packagerHost:(NSString *)packagerHost
129131
enableDev:(BOOL)enableDev
130132
enableMinification:(BOOL)enableMinification
131133
inlineSourceMap:(BOOL)inlineSourceMap;
132134

133-
+ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
135+
+ (NSURL *__nullable)jsBundleURLForBundleRoot:(NSString *)bundleRoot
134136
packagerHost:(NSString *)packagerHost
135137
packagerScheme:(NSString *)scheme
136138
enableDev:(BOOL)enableDev
@@ -160,3 +162,5 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
160162
queryItems:(NSArray<NSURLQueryItem *> *)queryItems;
161163

162164
@end
165+
166+
NS_ASSUME_NONNULL_END

packages/react-native/React/CoreModules/RCTAppearance.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ @implementation RCTAppearance {
7070
- (instancetype)init
7171
{
7272
if ((self = [super init])) {
73-
UITraitCollection *traitCollection = RCTSharedApplication().delegate.window.traitCollection;
73+
// TODO: Remove this after merging this PR upstream: https://github.com/facebook/react-native/pull/42231
74+
UITraitCollection *traitCollection = RCTKeyWindow().traitCollection;
7475
_currentColorScheme = RCTColorSchemePreference(traitCollection);
7576
[[NSNotificationCenter defaultCenter] addObserver:self
7677
selector:@selector(appearanceChanged:)

packages/rn-tester/Podfile.lock

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,7 +1415,7 @@ CHECKOUT OPTIONS:
14151415
SPEC CHECKSUMS:
14161416
boost: 8f1e9b214fa11f71081fc8ecd5fad3daf221cf7f
14171417
DoubleConversion: 71bf0761505a44e4dfddc0aa04afa049fdfb63b5
1418-
FBLazyVector: 5fdead7fff97d43aacf320bcccb748cf8527af07
1418+
FBLazyVector: 7398875239b8f10f3c4ca88abadcdafed3ef1fc8
14191419
fmt: 5d9ffa7ccba126c08b730252123601d514652320
14201420
glog: 4f05d17aa39a829fee878689fc9a41af587fabba
14211421
hermes-engine: 3fed7e58e811ae8f795063cc6450714395c0276d
@@ -1424,56 +1424,56 @@ SPEC CHECKSUMS:
14241424
OCMock: 267d92c078398b7ce11d99e811e3a402744c06bc
14251425
RCT-Folly: d8c13e288297f63c0db8f083cfedebdd2649a299
14261426
RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf
1427-
RCTRequired: 6b32de28a5215a5990284d541bbdec8b5e3c78bf
1428-
RCTTypeSafety: 0e2bb3047d531a60b28b1d0d63e0c27a742a3019
1429-
React: a6f80cd5ba07887121f8b480991e17041a838f5c
1430-
React-callinvoker: d558dab7c4d987f1577838a50d59aeb069130d91
1427+
RCTRequired: 48f050ad972df064e6de48ae6361f5c086958b78
1428+
RCTTypeSafety: f28e9e4cd9ffca2e70515eefc7a6a4c03909572b
1429+
React: 717c0bd48a74275e44e482594b810d19f27908e0
1430+
React-callinvoker: 06410c883c85ffe8ef56a680c22df4f39c390ccc
14311431
React-Codegen: 04a9ac6fd2f392534ed432102c6cbf117dcbf62b
1432-
React-Core: 6403b0d9390e408017e82dc7823e059c53186141
1433-
React-CoreModules: 6406001452f46e9234a2fac3861a60786285acc0
1434-
React-cxxreact: f917d87380150aaaf8053fb4280358aad33c9b71
1435-
React-debug: c12ba28faf2c0aace7cbc81d7ac7661075976460
1436-
React-Fabric: 1d2070e13efd26fa34bb67cf484794265402ac06
1437-
React-FabricImage: 238905c6db0cf533d562b52ae936bfd7ed5f00dc
1438-
React-graphics: c430227a30690a86be35a8fb8c4c36ff312ff4bc
1439-
React-hermes: f6b54c8b4553fc7a8926f3e46459923a834a99d4
1440-
React-ImageManager: 38795ba06968bbcb11343b9e1123557af34c6270
1441-
React-jserrorhandler: fba402f8090b05e29c57c7bb111413e12e89aebe
1442-
React-jsi: d5643763df3910249aac671c9b7d634e6e96af7b
1443-
React-jsiexecutor: 847a90333a8840846652833aa4e291e433277aec
1444-
React-jsinspector: c2abef5095276eeb09c4b871f3024851d2ac3e58
1445-
React-jsitracing: 3f24b1171cc7aa986555a84e1036d3a6ba98bc84
1446-
React-logger: 4b1ded6e5707b276ffd58505987aba8dd1c0c3e4
1447-
React-Mapbuffer: b562329b31a9a5e3f18a8b4632c4fa8945a504e8
1448-
React-nativeconfig: 86b0961752d6a00ccc30418bfb5bfb5ebda84149
1449-
React-NativeModulesApple: eb4d247f32f25df62d1e979721502203db3de17c
1450-
React-perflogger: 31792e118e9c4785739c1823a481d64ba3d512b9
1451-
React-RCTActionSheet: a79621f1907340e31a66a4ad5e89175ef13f4215
1452-
React-RCTAnimation: 1f6948befc38688ecd5e78b7afd7d356aafa79b3
1453-
React-RCTAppDelegate: 9b0ecae938c894f4678a5e4726c03a06e92b0d93
1454-
React-RCTBlob: afaf18b4618c4d71095dfae9fca7c548dbcf0da0
1455-
React-RCTFabric: 0e96635634399a9ccf6c3c7fb18d5bac8e2561d5
1456-
React-RCTImage: 280f6f62a88f13253013ab5709e7bc60259cc081
1457-
React-RCTLinking: 9757d922aaa9aea2baa6e6178a8b1f08c1a85add
1458-
React-RCTNetwork: 92e96ad358d83b5a809e6222987c77106f44691e
1459-
React-RCTPushNotification: 36ec0c6d3ab1195665c49c0cfd689864401cc111
1460-
React-RCTSettings: 758a24aefbee012d903ca4f80532e95edfe2b516
1461-
React-RCTTest: a30b88c8910a259ef769af7654b1812668019b22
1462-
React-RCTText: ff85a26056ca9a34198934774e0f75ac2305c2c0
1463-
React-RCTVibration: 5086b14f98c2255e71cc6a2213b6f67338dcdff4
1464-
React-rendererdebug: 6e0021971efb40a76f807b913fdba6ec3ecabbd0
1465-
React-rncore: 27b4d75d116e9ae44292dc26aecff5bbad9e6996
1466-
React-RuntimeApple: c18cc85bf03a322efd2a76fd48f4c693d6901e67
1467-
React-RuntimeCore: 631803674e2884b5d866aacac96850191a081e1a
1468-
React-runtimeexecutor: a6b1c771b522e49e6906c5354b0e8859a64e7b3e
1469-
React-RuntimeHermes: 1473abdead583d8ab788ebd31de9c8e81e19d0fc
1470-
React-runtimescheduler: 1b905cb65942a3bfdff3f003c9c778b6b46afca6
1471-
React-utils: a5c7207b3bd558fdbfc553ea7a7731fbfc7f3552
1472-
ReactCommon: 2c87b20987de3a37d3993e4c1cab34fb97c28899
1473-
ReactCommon-Samples: e95d8d284b23ed4eda37498eaa460b6468c24699
1432+
React-Core: 054771ce6d549c74df4da7d856aab7e082f607e3
1433+
React-CoreModules: 0d9b7d4eaf736f7c2edf644b069d0b9fbc7cf0e7
1434+
React-cxxreact: ef427ce10de85992fbbe5ff2d742798888eafeda
1435+
React-debug: 88536e62244a930f199aa23d6317ec70332a7331
1436+
React-Fabric: 5b54cc3156824745b09b0688e8afff7610675c29
1437+
React-FabricImage: 3a4b3056a1307e4241fd71f757ca59c1f4fa02b1
1438+
React-graphics: 9de3a20a755496173834a6149a93926143dac36f
1439+
React-hermes: 103aba271edccff06efdec54dcb47d207c3f801c
1440+
React-ImageManager: ea7f173cb3585fd3665403260aa1d2d3f255b844
1441+
React-jserrorhandler: 2227bd12a6728c7be99d6db5666bfc84cf2df194
1442+
React-jsi: 9b23219207c76cfcfe153bc92e26247544bdc619
1443+
React-jsiexecutor: bb92399809b9998869ad6d271804f446318a4ed9
1444+
React-jsinspector: 75a80380afb500104bee9ac053bdbacfeb17ceaa
1445+
React-jsitracing: c6901bb0257cd15a9733d11ce6b9558487b8f47e
1446+
React-logger: fb080c7e6684db8c195688eb56793f77b69a8d34
1447+
React-Mapbuffer: 5140c0edceb347d371b9e42b5fa57367e1da35bb
1448+
React-nativeconfig: 307b5d697cc50c23f6b526768fbab7be7e9b63cf
1449+
React-NativeModulesApple: 2cf3e29bbbe16a5b712160b1ad4af06e3349c54f
1450+
React-perflogger: 3752f5d10c3b65a7f02352b3573e099cec341a6f
1451+
React-RCTActionSheet: f3322ee445d630b1572e06f002dade53299c1e0c
1452+
React-RCTAnimation: f25448672aac10fd2a2731df46789f790ced2508
1453+
React-RCTAppDelegate: e8e759be431ee92405189c13b997d05256946fa4
1454+
React-RCTBlob: d9b14e27ed43556282650fa1c8289625d0c3b2b1
1455+
React-RCTFabric: e8eb7fa3f260c730734135b2291bae2bcfbc2999
1456+
React-RCTImage: 2e27346aea7af6e5ced8bb5241e7d9038a0bb6f7
1457+
React-RCTLinking: c87acaa37a901511af5d17931e58559debfde168
1458+
React-RCTNetwork: 4e936b1f553d2f296283ad58900f6ad8dda85428
1459+
React-RCTPushNotification: b89c023865e1945b95598f52d6cdde772a700849
1460+
React-RCTSettings: 642668034997a60903a53da770321be25bd7b9b0
1461+
React-RCTTest: adba00c7500cccaa618c23870e8d882acc9bb0ef
1462+
React-RCTText: 19c2fe3781e00fc96f7993c18f6fa64b8582ac0b
1463+
React-RCTVibration: 19dccc5057ad3f915a6a9678a57f9641bd9c1e60
1464+
React-rendererdebug: 5e21b910056185378f0ae4c4215c6af258d29092
1465+
React-rncore: 79390384fa0541f8ad0ebcc1f89f177c4c4988da
1466+
React-RuntimeApple: 50724334961379a320b12e0fe1d49583f16b7f31
1467+
React-RuntimeCore: 6de3b61abdc2a700cd253d1d6a5a4cfe9032ca62
1468+
React-runtimeexecutor: 9d74940931e749f1a1385d14bbdfe1d939a41162
1469+
React-RuntimeHermes: df97a05151582bc77382f0041a83220ec9779f8b
1470+
React-runtimescheduler: b0ffe9de1135d0882bdd819d282cc33f8d3a4b42
1471+
React-utils: 7ddb7f20506b8311841b2058e7883e3ca5ceefd9
1472+
ReactCommon: ae82e3782d09704b0e8fd2298720bc7d6b6163d0
1473+
ReactCommon-Samples: e7fbc94445e784afb3fa04c42f0ba3dbfc567e0c
14741474
ScreenshotManager: a5f596498de38f3cf3377df636ca67355503f190
14751475
SocketRocket: 0ba3e799f983d2dfa878777017659ef6c866e5c6
1476-
Yoga: e4691eb7881cae15f847654cf06b0f7962707af0
1476+
Yoga: 014dbde7260e2bd7aa62d540ba0b28bf1274b6d4
14771477

14781478
PODFILE CHECKSUM: 7e999b8158f1055609ef4491bc35f1ad658fdd6c
14791479

0 commit comments

Comments
 (0)