diff --git a/packages/rn-tester/RNTester-macOS/ViewController.mm b/packages/rn-tester/RNTester-macOS/ViewController.mm index a87c8e9f811329..0feaa4d6381720 100644 --- a/packages/rn-tester/RNTester-macOS/ViewController.mm +++ b/packages/rn-tester/RNTester-macOS/ViewController.mm @@ -9,8 +9,23 @@ #import "ViewController.h" #import "AppDelegate.h" +#ifdef RN_FABRIC_ENABLED +#import +#import +#import +#import +#endif #import +@interface ViewController () { +#ifdef RN_FABRIC_ENABLED + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; + std::shared_ptr _reactNativeConfig; + facebook::react::ContextContainer::Shared _contextContainer; +#endif +} +@end + @implementation ViewController - (void)viewDidLoad @@ -18,8 +33,20 @@ - (void)viewDidLoad [super viewDidLoad]; RCTBridge *bridge = ((AppDelegate *)[NSApp delegate]).bridge; - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:kBundleNameJS initialProperties:nil]; +#ifdef RN_FABRIC_ENABLED + _reactNativeConfig = std::make_shared(); + _contextContainer = std::make_shared(); + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; + bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; + + RCTUIView *rootView = [[RCTFabricSurfaceHostingProxyRootView alloc] initWithBridge:bridge + moduleName:kBundleNameJS + initialProperties:@{}]; +#else + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:kBundleNameJS initialProperties:nil]; +#endif [self.view addSubview:rootView]; rootView.backgroundColor = [NSColor windowBackgroundColor]; rootView.frame = self.view.bounds;