Skip to content

Commit b440672

Browse files
rubennortecipolleschi
authored andcommitted
Enable event loop by default when bridgeless is enabled (#43396)
Summary: Pull Request resolved: #43396 Changelog: [General][Changed] Enabled new event loop behavior when bridgeless (new architecture) is enabled. Reviewed By: rshest Differential Revision: D54682678 fbshipit-source-id: ff8c45bc1caae0e9182aa94d915d7b6f9427caf9
1 parent 261a587 commit b440672

3 files changed

Lines changed: 46 additions & 1 deletion

File tree

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

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
#import <React/RCTRootView.h>
1212
#import <React/RCTSurfacePresenterBridgeAdapter.h>
1313
#import <React/RCTUtils.h>
14-
#import <react/renderer/runtimescheduler/RuntimeScheduler.h>
14+
#import <objc/runtime.h>
15+
#import <react/featureflags/ReactNativeFeatureFlags.h>
16+
#import <react/featureflags/ReactNativeFeatureFlagsDefaults.h>
17+
#import <react/renderer/graphics/ColorComponents.h>
18+
#import "RCTAppDelegate+Protected.h"
1519
#import "RCTAppSetupUtils.h"
1620

1721
#if RN_DISABLE_OSS_PLUGIN_HEADER
@@ -46,6 +50,8 @@ @implementation RCTAppDelegate
4650

4751
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
4852
{
53+
[self _setUpFeatureFlags];
54+
4955
RCTSetNewArchEnabled([self newArchEnabled]);
5056
RCTAppSetupPrepareApp(application, self.turboModuleEnabled);
5157

@@ -258,4 +264,29 @@ - (RCTRootViewFactory *)createRCTRootViewFactory
258264
return [[RCTRootViewFactory alloc] initWithConfiguration:configuration andTurboModuleManagerDelegate:self];
259265
}
260266

267+
#pragma mark - Feature Flags
268+
269+
class RCTAppDelegateBridgelessFeatureFlags : public facebook::react::ReactNativeFeatureFlagsDefaults {
270+
public:
271+
bool useModernRuntimeScheduler() override
272+
{
273+
return true;
274+
}
275+
bool enableMicrotasks() override
276+
{
277+
return true;
278+
}
279+
bool batchRenderingUpdatesInEventLoop() override
280+
{
281+
return true;
282+
}
283+
};
284+
285+
- (void)_setUpFeatureFlags
286+
{
287+
if ([self bridgelessEnabled]) {
288+
facebook::react::ReactNativeFeatureFlags::override(std::make_unique<RCTAppDelegateBridgelessFeatureFlags>());
289+
}
290+
}
291+
261292
@end

packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ Pod::Spec.new do |s|
8989
add_dependency(s, "React-utils")
9090
add_dependency(s, "React-debug")
9191
add_dependency(s, "React-rendererdebug")
92+
add_dependency(s, "React-featureflags")
9293

9394
if use_hermes
9495
s.dependency "React-hermes"

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ package com.facebook.react.defaults
1111

1212
import com.facebook.react.common.annotations.VisibleForTesting
1313
import com.facebook.react.config.ReactFeatureFlags
14+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
15+
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsDefaults
1416

1517
/**
1618
* A utility class that serves as an entry point for users setup the New Architecture.
@@ -45,6 +47,17 @@ public object DefaultNewArchitectureEntryPoint {
4547
ReactFeatureFlags.unstable_useTurboModuleInterop = bridgelessEnabled
4648
ReactFeatureFlags.enableFabricPendingEventQueue = fabricEnabled
4749

50+
if (bridgelessEnabled) {
51+
ReactNativeFeatureFlags.override(
52+
object : ReactNativeFeatureFlagsDefaults() {
53+
override fun useModernRuntimeScheduler(): Boolean = true
54+
55+
override fun enableMicrotasks(): Boolean = true
56+
57+
override fun batchRenderingUpdatesInEventLoop(): Boolean = true
58+
})
59+
}
60+
4861
privateFabricEnabled = fabricEnabled
4962
privateTurboModulesEnabled = turboModulesEnabled
5063
privateConcurrentReactEnabled = fabricEnabled

0 commit comments

Comments
 (0)