diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index fe203d8ed99..64b5bc4937c 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -282,14 +282,16 @@ static BackgroundExecutor RCTGetBackgroundExecutor() toolbox.contextContainer = _contextContainer; toolbox.componentRegistryFactory = componentRegistryFactory; - if (reactNativeConfig && reactNativeConfig->getBool("react_fabric:enable_runtimescheduler_ios")) { - auto runtimeScheduler = std::make_shared(_runtimeExecutor); - runtimeScheduler->setEnableYielding( - reactNativeConfig->getBool("react_native_new_architecture:runtimescheduler_enable_yielding_ios")); - toolbox.runtimeScheduler = runtimeScheduler; - runtimeExecutor = [runtimeScheduler](std::function &&callback) { - runtimeScheduler->scheduleWork(std::move(callback)); - }; + auto runtimeScheduler = _contextContainer->find>("RuntimeScheduler"); + if (runtimeScheduler.hasValue()) { + auto lockedRuntimeScheduler = runtimeScheduler.value().lock(); + if (lockedRuntimeScheduler) { + lockedRuntimeScheduler->setEnableYielding( + reactNativeConfig->getBool("react_native_new_architecture:runtimescheduler_enable_yielding_ios")); + runtimeExecutor = [lockedRuntimeScheduler](std::function &&callback) { + lockedRuntimeScheduler->scheduleWork(std::move(callback)); + }; + } } toolbox.runtimeExecutor = runtimeExecutor; diff --git a/React/Fabric/RCTSurfacePresenterBridgeAdapter.h b/React/Fabric/RCTSurfacePresenterBridgeAdapter.h index 72592b2831e..8d08c3a7ca7 100644 --- a/React/Fabric/RCTSurfacePresenterBridgeAdapter.h +++ b/React/Fabric/RCTSurfacePresenterBridgeAdapter.h @@ -6,8 +6,8 @@ */ #import +#import #import - #import NS_ASSUME_NONNULL_BEGIN @@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN @class RCTSurfacePresenter; @class RCTBridge; +facebook::react::RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge); + /* * Controls a life-cycle of a Surface Presenter based on Bridge's life-cycle. * We are moving away from using Bridge. diff --git a/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm b/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm index a70c494d937..e39c269bc3c 100644 --- a/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm +++ b/React/Fabric/RCTSurfacePresenterBridgeAdapter.mm @@ -41,7 +41,7 @@ static ContextContainer::Shared RCTContextContainerFromBridge(RCTBridge *bridge) return contextContainer; } -static RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge) +RuntimeExecutor RCTRuntimeExecutorFromBridge(RCTBridge *bridge) { RCTAssert(bridge, @"RCTRuntimeExecutorFromBridge: Bridge must not be nil.");