Skip to content

Commit 2aea444

Browse files
RSNarafacebook-github-bot
authored andcommitted
Add macros to remove old runtime (#51967)
Summary: Pull Request resolved: #51967 This diff adds macros around the legacy architecture core. To compile out the legacy architecture, simply set: -DRCT_FIT_RM_OLD_RUNTIME=1. * RCTBridge: interface kept around * RCTRootView: interface kept around * RCTSurface: interface kept around * RCTModuleData: interface kept around (used by RCTProfile) * RCTProfile: Kept around (doesn't work in bridgeless...) * RCTCxxBridge: interface kept around * c++ bridge: removed * legacy components in core: kept around (for now) ## Details I added comments to each of the #else, and #endif directives. That way, we can more easily codemod this code in the future. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D72582307
1 parent 4b76129 commit 2aea444

60 files changed

Lines changed: 741 additions & 101 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/react-native/React/Base/RCTBridge+Private.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ RCT_EXTERN void RCTRegisterModule(Class);
1616

1717
@interface RCTBridge ()
1818

19+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1920
// Private designated initializer
2021
- (instancetype)initWithDelegate:(id<RCTBridgeDelegate>)delegate
2122
bundleURL:(NSURL *)bundleURL
2223
moduleProvider:(RCTBridgeModuleListProvider)block
2324
launchOptions:(NSDictionary *)launchOptions NS_DESIGNATED_INITIALIZER;
2425

26+
#endif // RCT_FIT_RM_OLD_RUNTIME
27+
2528
// Used for the profiler flow events between JS and native
2629
@property (nonatomic, assign) int64_t flowID;
2730
@property (nonatomic, assign) CFMutableDictionaryRef flowIDMap;
@@ -146,6 +149,8 @@ RCT_EXTERN void RCTRegisterModule(Class);
146149
// TODO(cjhopman): this seems unsafe unless we require that it is only called on the main js queue.
147150
@property (nonatomic, readonly) void *runtime;
148151

152+
#ifndef RCT_FIT_RM_OLD_RUNTIME
149153
- (instancetype)initWithParentBridge:(RCTBridge *)bridge NS_DESIGNATED_INITIALIZER;
154+
#endif // RCT_FIT_RM_OLD_RUNTIME
150155

151156
@end

packages/react-native/React/Base/RCTBridge.mm

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ void RCTUIManagerSetDispatchAccessibilityManagerInitOntoMain(BOOL enabled)
265265
kDispatchAccessibilityManagerInitOntoMain = enabled;
266266
}
267267

268+
#ifndef RCT_FIT_RM_OLD_RUNTIME
268269
class RCTBridgeHostTargetDelegate : public facebook::react::jsinspector_modern::HostTargetDelegate {
269270
public:
270271
RCTBridgeHostTargetDelegate(RCTBridge *bridge)
@@ -675,3 +676,110 @@ - (void)registerSegmentWithId:(NSUInteger)segmentId path:(NSString *)path
675676
return _inspectorTarget.get();
676677
}
677678
@end
679+
#else // RCT_FIT_RM_OLD_RUNTIME
680+
@implementation RCTBridge
681+
- (instancetype)initWithDelegate:(id<RCTBridgeDelegate>)delegate launchOptions:(NSDictionary *)launchOptions
682+
{
683+
return self;
684+
}
685+
686+
- (instancetype)initWithBundleURL:(NSURL *)bundleURL
687+
moduleProvider:(__strong RCTBridgeModuleListProvider)block
688+
launchOptions:(NSDictionary *)launchOptions
689+
{
690+
return self;
691+
}
692+
693+
- (void)enqueueJSCall:(NSString *)moduleDotMethod args:(NSArray *)args
694+
{
695+
}
696+
697+
- (void)enqueueJSCall:(NSString *)module
698+
method:(NSString *)method
699+
args:(NSArray *)args
700+
completion:(__strong dispatch_block_t)completion
701+
{
702+
}
703+
704+
- (void)registerSegmentWithId:(NSUInteger)segmentId path:(NSString *)path
705+
{
706+
}
707+
708+
- (id)moduleForName:(NSString *)moduleName
709+
{
710+
return nil;
711+
}
712+
713+
- (id)moduleForName:(NSString *)moduleName lazilyLoadIfNecessary:(BOOL)lazilyLoad
714+
{
715+
return nil;
716+
}
717+
718+
- (id)moduleForClass:(Class)moduleClass
719+
{
720+
return nil;
721+
}
722+
723+
- (void)setRCTTurboModuleRegistry:(id<RCTTurboModuleRegistry>)turboModuleRegistry
724+
{
725+
}
726+
727+
- (RCTBridgeModuleDecorator *)bridgeModuleDecorator
728+
{
729+
return nil;
730+
}
731+
732+
- (NSArray *)modulesConformingToProtocol:(Protocol *)protocol
733+
{
734+
return @[];
735+
}
736+
737+
- (BOOL)moduleIsInitialized:(Class)moduleClass
738+
{
739+
return NO;
740+
}
741+
742+
- (void)reload __attribute__((deprecated("Use RCTReloadCommand instead")))
743+
{
744+
}
745+
746+
- (void)reloadWithReason:(NSString *)reason __attribute__((deprecated("Use RCTReloadCommand instead")))
747+
{
748+
}
749+
750+
- (void)onFastRefresh
751+
{
752+
}
753+
754+
- (void)requestReload __attribute__((deprecated("Use RCTReloadCommand instead")))
755+
{
756+
}
757+
758+
- (BOOL)isBatchActive
759+
{
760+
return NO;
761+
}
762+
763+
- (void)setUp
764+
{
765+
}
766+
767+
- (void)enqueueCallback:(NSNumber *)cbID args:(NSArray *)args
768+
{
769+
}
770+
771+
+ (void)setCurrentBridge:(RCTBridge *)bridge
772+
{
773+
}
774+
775+
- (void)invalidate
776+
{
777+
}
778+
779+
+ (instancetype)currentBridge
780+
{
781+
return nil;
782+
}
783+
784+
@end
785+
#endif // RCT_FIT_RM_OLD_RUNTIME

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
NS_ASSUME_NONNULL_BEGIN
1414

1515
@protocol RCTBridgeDelegate <NSObject>
16+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1617

1718
/**
1819
* The location of the JavaScript source file. When running from the packager
@@ -69,6 +70,7 @@ NS_ASSUME_NONNULL_BEGIN
6970
*/
7071
- (NSDictionary<NSString *, Class> *)extraLazyModuleClassesForBridge:(RCTBridge *)bridge;
7172

73+
#endif // RCT_FIT_RM_OLD_RUNTIME
7274
@end
7375

7476
NS_ASSUME_NONNULL_END

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,9 @@ RCT_EXTERN_C_END
354354
* A class that allows NativeModules and TurboModules to look up one another.
355355
*/
356356
@interface RCTModuleRegistry : NSObject
357+
#ifndef RCT_FIT_RM_OLD_RUNTIME
357358
- (void)setBridge:(RCTBridge *)bridge;
359+
#endif // RCT_FIT_RM_OLD_RUNTIME
358360
- (void)setTurboModuleRegistry:(id<RCTTurboModuleRegistry>)turboModuleRegistry;
359361

360362
- (id)moduleForName:(const char *)moduleName;
@@ -373,7 +375,9 @@ typedef void (^RCTViewRegistryUIBlock)(RCTViewRegistry *viewRegistry);
373375
* A class that allows NativeModules to query for views, given React Tags.
374376
*/
375377
@interface RCTViewRegistry : NSObject
378+
#ifndef RCT_FIT_RM_OLD_RUNTIME
376379
- (void)setBridge:(RCTBridge *)bridge;
380+
#endif // RCT_FIT_RM_OLD_RUNTIME
377381
- (void)setBridgelessComponentViewProvider:(RCTBridgelessComponentViewProvider)bridgelessComponentViewProvider;
378382

379383
- (UIView *)viewForReactTag:(NSNumber *)reactTag;
@@ -391,7 +395,9 @@ typedef void (^RCTBridgelessJSModuleMethodInvoker)(
391395
* as callable with React Native.
392396
*/
393397
@interface RCTCallableJSModules : NSObject
398+
#ifndef RCT_FIT_RM_OLD_RUNTIME
394399
- (void)setBridge:(RCTBridge *)bridge;
400+
#endif // RCT_FIT_RM_OLD_RUNTIME
395401
- (void)setBridgelessJSModuleMethodInvoker:(RCTBridgelessJSModuleMethodInvoker)bridgelessJSModuleMethodInvoker;
396402

397403
- (void)invokeModule:(NSString *)moduleName method:(NSString *)methodName withArgs:(NSArray *)args;

packages/react-native/React/Base/RCTBridgeProxy.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ - (void)start
308308
cmd:_cmd];
309309
}
310310

311+
#ifndef RCT_FIT_RM_OLD_RUNTIME
311312
- (void)registerModuleForFrameUpdates:(id<RCTBridgeModule>)module withModuleData:(RCTModuleData *)moduleData
312313
{
313314
[self logError:@"This method is not supported. Nooping" cmd:_cmd];
@@ -318,6 +319,7 @@ - (RCTModuleData *)moduleDataForName:(NSString *)moduleName
318319
[self logError:@"This method is not supported. Returning nil." cmd:_cmd];
319320
return nil;
320321
}
322+
#endif // RCT_FIT_RM_OLD_RUNTIME
321323

322324
- (void)registerAdditionalModuleClasses:(NSArray<Class> *)newModules
323325
{

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ typedef void (^RCTBridgelessBundleURLSetter)(NSURL *bundleURL);
1616
* A class that allows NativeModules/TurboModules to read/write the bundleURL, with or without the bridge.
1717
*/
1818
@interface RCTBundleManager : NSObject
19+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1920
- (void)setBridge:(RCTBridge *)bridge;
21+
#endif // RCT_FIT_RM_OLD_RUNTIME
2022
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
2123
andSetter:(RCTBridgelessBundleURLSetter)setter
2224
andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter;

packages/react-native/React/Base/RCTBundleManager.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@
1111
#import "RCTBridge.h"
1212

1313
@implementation RCTBundleManager {
14+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1415
__weak RCTBridge *_bridge;
16+
#endif // RCT_FIT_RM_OLD_RUNTIME
1517
RCTBridgelessBundleURLGetter _bridgelessBundleURLGetter;
1618
RCTBridgelessBundleURLSetter _bridgelessBundleURLSetter;
1719
RCTBridgelessBundleURLGetter _bridgelessBundleURLDefaultGetter;
1820
}
1921

22+
#ifndef RCT_FIT_RM_OLD_RUNTIME
2023
- (void)setBridge:(RCTBridge *)bridge
2124
{
2225
_bridge = bridge;
2326
}
27+
#endif // RCT_FIT_RM_OLD_RUNTIME
2428

2529
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
2630
andSetter:(RCTBridgelessBundleURLSetter)setter
@@ -33,10 +37,12 @@ - (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
3337

3438
- (void)setBundleURL:(NSURL *)bundleURL
3539
{
40+
#ifndef RCT_FIT_RM_OLD_RUNTIME
3641
if (_bridge) {
3742
_bridge.bundleURL = bundleURL;
3843
return;
3944
}
45+
#endif // RCT_FIT_RM_OLD_RUNTIME
4046

4147
RCTAssert(
4248
_bridgelessBundleURLSetter != nil,
@@ -46,9 +52,11 @@ - (void)setBundleURL:(NSURL *)bundleURL
4652

4753
- (NSURL *)bundleURL
4854
{
55+
#ifndef RCT_FIT_RM_OLD_RUNTIME
4956
if (_bridge) {
5057
return _bridge.bundleURL;
5158
}
59+
#endif // RCT_FIT_RM_OLD_RUNTIME
5260

5361
RCTAssert(
5462
_bridgelessBundleURLGetter != nil,
@@ -59,11 +67,13 @@ - (NSURL *)bundleURL
5967

6068
- (void)resetBundleURL
6169
{
70+
#ifndef RCT_FIT_RM_OLD_RUNTIME
6271
RCTBridge *strongBridge = _bridge;
6372
if (strongBridge) {
6473
strongBridge.bundleURL = [strongBridge.delegate sourceURLForBridge:strongBridge];
6574
return;
6675
}
76+
#endif // RCT_FIT_RM_OLD_RUNTIME
6777

6878
RCTAssert(
6979
_bridgelessBundleURLDefaultGetter != nil,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8+
#import <Foundation/Foundation.h>
9+
810
@class RCTCallInvoker;
911

1012
/**

packages/react-native/React/Base/RCTCallableJSModules.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,17 @@
1010

1111
@implementation RCTCallableJSModules {
1212
RCTBridgelessJSModuleMethodInvoker _bridgelessJSModuleMethodInvoker;
13+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1314
__weak RCTBridge *_bridge;
15+
#endif // RCT_FIT_RM_OLD_RUNTIME
1416
}
1517

18+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1619
- (void)setBridge:(RCTBridge *)bridge
1720
{
1821
_bridge = bridge;
1922
}
23+
#endif // RCT_FIT_RM_OLD_RUNTIME
2024

2125
- (void)setBridgelessJSModuleMethodInvoker:(RCTBridgelessJSModuleMethodInvoker)bridgelessJSModuleMethodInvoker
2226
{
@@ -33,11 +37,13 @@ - (void)invokeModule:(NSString *)moduleName
3337
withArgs:(NSArray *)args
3438
onComplete:(dispatch_block_t)onComplete
3539
{
40+
#ifndef RCT_FIT_RM_OLD_RUNTIME
3641
RCTBridge *bridge = _bridge;
3742
if (bridge) {
3843
[bridge enqueueJSCall:moduleName method:methodName args:args completion:onComplete];
3944
return;
4045
}
46+
#endif // RCT_FIT_RM_OLD_RUNTIME
4147

4248
if (_bridgelessJSModuleMethodInvoker) {
4349
_bridgelessJSModuleMethodInvoker(moduleName, methodName, args, onComplete);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
typedef void (^RCTJavaScriptCompleteBlock)(NSError *error);
1414
typedef void (^RCTJavaScriptCallback)(id result, NSError *error);
1515

16+
#ifndef RCT_FIT_RM_OLD_RUNTIME
1617
/**
1718
* Abstracts away a JavaScript execution context - we may be running code in a
1819
* web view (for debugging purposes), or may be running code in a `JSContext`.
@@ -78,3 +79,4 @@ typedef void (^RCTJavaScriptCallback)(id result, NSError *error);
7879
- (void)executeAsyncBlockOnJavaScriptQueue:(dispatch_block_t)block;
7980

8081
@end
82+
#endif // RCT_FIT_RM_OLD_RUNTIME

0 commit comments

Comments
 (0)