diff --git a/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp index 98ff3f2e2910..eb22eea41003 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp @@ -143,8 +143,11 @@ void NativeMutationObserver::notifyMutationObserversIfNecessary() { if (dispatchNotification) { TraceSection s("NativeMutationObserver::notifyObservers"); +#ifndef RCT_REMOVE_LEGACY_ARCH if (ReactNativeFeatureFlags::enableBridgelessArchitecture()) { +#endif runtime_->queueMicrotask(notifyMutationObservers_.value()); +#ifndef RCT_REMOVE_LEGACY_ARCH } else { jsInvoker_->invokeAsync([&](jsi::Runtime& runtime) { // It's possible that the last observer was disconnected before we could @@ -154,6 +157,7 @@ void NativeMutationObserver::notifyMutationObserversIfNecessary() { } }); } +#endif } } diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp index f7393dbdd520..39cd56264700 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp @@ -6,12 +6,16 @@ */ #include "RuntimeScheduler.h" -#include "RuntimeScheduler_Legacy.h" #include "RuntimeScheduler_Modern.h" +#ifndef RCT_REMOVE_LEGACY_ARCH +#include "RuntimeScheduler_Legacy.h" +#endif #include #include +#ifndef RCT_REMOVE_LEGACY_ARCH #include +#endif #include namespace facebook::react { @@ -23,13 +27,17 @@ std::unique_ptr getRuntimeSchedulerImplementation( RuntimeExecutor runtimeExecutor, std::function now, RuntimeSchedulerTaskErrorHandler onTaskError) { +#ifndef RCT_REMOVE_LEGACY_ARCH if (ReactNativeFeatureFlags::enableBridgelessArchitecture()) { +#endif return std::make_unique( std::move(runtimeExecutor), std::move(now), std::move(onTaskError)); +#ifndef RCT_REMOVE_LEGACY_ARCH } else { return std::make_unique( std::move(runtimeExecutor), std::move(now), std::move(onTaskError)); } +#endif } } // namespace diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp index e8d9b4359cea..cdbb77fe7af6 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.cpp @@ -6,6 +6,9 @@ */ #include "RuntimeScheduler_Legacy.h" + +#ifndef RCT_REMOVE_LEGACY_ARCH + #include "SchedulerPriorityUtils.h" #include @@ -282,3 +285,5 @@ void RuntimeScheduler_Legacy::executeTask( } } // namespace facebook::react + +#endif // RCT_REMOVE_LEGACY_ARCH diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h index d5519bfcb4ef..4f90f5e3a8fe 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h @@ -7,6 +7,8 @@ #pragma once +#ifndef RCT_REMOVE_LEGACY_ARCH + #include #include #include @@ -172,3 +174,5 @@ class RuntimeScheduler_Legacy final : public RuntimeSchedulerBase { }; } // namespace facebook::react + +#endif // RCT_REMOVE_LEGACY_ARCH diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/Task.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/Task.h index e1a91f57303d..0ec4dfaf38ea 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/Task.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/Task.h @@ -17,7 +17,9 @@ namespace facebook::react { +#ifndef RCT_REMOVE_LEGACY_ARCH class RuntimeScheduler_Legacy; +#endif class RuntimeScheduler_Modern; class TaskPriorityComparer; @@ -29,7 +31,9 @@ struct Task final : public jsi::NativeState { Task(SchedulerPriority priority, RawCallback &&callback, HighResTimeStamp expirationTime); private: +#ifndef RCT_REMOVE_LEGACY_ARCH friend RuntimeScheduler_Legacy; +#endif friend RuntimeScheduler_Modern; friend TaskPriorityComparer; diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp index 574ec8884fcc..1fc5d0dc3d91 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp @@ -1431,6 +1431,10 @@ TEST_P(RuntimeSchedulerTest, reportsLongTasksWithYielding) { INSTANTIATE_TEST_SUITE_P( UseModernRuntimeScheduler, RuntimeSchedulerTest, +#ifdef RCT_REMOVE_LEGACY_ARCH + testing::Values(true)); +#else testing::Values(false, true)); +#endif } // namespace facebook::react diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index dd01b050910f..8567ff90b3b1 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -4264,30 +4264,6 @@ class facebook::react::RuntimeSchedulerIntersectionObserverDelegate { public virtual ~RuntimeSchedulerIntersectionObserverDelegate() = default; } -class facebook::react::RuntimeScheduler_Legacy : public facebook::react::RuntimeSchedulerBase { - public RuntimeScheduler_Legacy(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public RuntimeScheduler_Legacy(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError); - public RuntimeScheduler_Legacy(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public virtual bool getShouldYield() noexcept override; - public virtual facebook::react::HighResTimeStamp now() const noexcept override; - public virtual facebook::react::SchedulerPriority getCurrentPriorityLevel() const noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::jsi::Function&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::react::RawCallback&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::jsi::Function&& callback) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::react::RawCallback&& callback) noexcept override; - public virtual void callExpiredTasks(facebook::jsi::Runtime& runtime) override; - public virtual void cancelTask(facebook::react::Task& task) noexcept override; - public virtual void executeNowOnTheSameThread(facebook::react::RawCallback&& callback) override; - public virtual void scheduleRenderingUpdate(facebook::react::SurfaceId surfaceId, facebook::react::RuntimeSchedulerRenderingUpdate&& renderingUpdate) override; - public virtual void scheduleWork(facebook::react::RawCallback&& callback) noexcept override; - public virtual void setEventTimingDelegate(facebook::react::RuntimeSchedulerEventTimingDelegate* eventTimingDelegate) override; - public virtual void setIntersectionObserverDelegate(facebook::react::RuntimeSchedulerIntersectionObserverDelegate* intersectionObserverDelegate) override; - public virtual void setPerformanceEntryReporter(facebook::react::PerformanceEntryReporter* performanceEntryReporter) override; - public virtual void setShadowTreeRevisionConsistencyManager(facebook::react::ShadowTreeRevisionConsistencyManager* shadowTreeRevisionConsistencyManager) override; -} - class facebook::react::RuntimeScheduler_Modern : public facebook::react::RuntimeSchedulerBase { public RuntimeScheduler_Modern(const facebook::react::RuntimeScheduler_Modern&) = delete; public RuntimeScheduler_Modern(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index b46962198fa4..fbd21d7e138d 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -6495,30 +6495,6 @@ class facebook::react::RuntimeSchedulerIntersectionObserverDelegate { public virtual ~RuntimeSchedulerIntersectionObserverDelegate() = default; } -class facebook::react::RuntimeScheduler_Legacy : public facebook::react::RuntimeSchedulerBase { - public RuntimeScheduler_Legacy(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public RuntimeScheduler_Legacy(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError); - public RuntimeScheduler_Legacy(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public virtual bool getShouldYield() noexcept override; - public virtual facebook::react::HighResTimeStamp now() const noexcept override; - public virtual facebook::react::SchedulerPriority getCurrentPriorityLevel() const noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::jsi::Function&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::react::RawCallback&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::jsi::Function&& callback) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::react::RawCallback&& callback) noexcept override; - public virtual void callExpiredTasks(facebook::jsi::Runtime& runtime) override; - public virtual void cancelTask(facebook::react::Task& task) noexcept override; - public virtual void executeNowOnTheSameThread(facebook::react::RawCallback&& callback) override; - public virtual void scheduleRenderingUpdate(facebook::react::SurfaceId surfaceId, facebook::react::RuntimeSchedulerRenderingUpdate&& renderingUpdate) override; - public virtual void scheduleWork(facebook::react::RawCallback&& callback) noexcept override; - public virtual void setEventTimingDelegate(facebook::react::RuntimeSchedulerEventTimingDelegate* eventTimingDelegate) override; - public virtual void setIntersectionObserverDelegate(facebook::react::RuntimeSchedulerIntersectionObserverDelegate* intersectionObserverDelegate) override; - public virtual void setPerformanceEntryReporter(facebook::react::PerformanceEntryReporter* performanceEntryReporter) override; - public virtual void setShadowTreeRevisionConsistencyManager(facebook::react::ShadowTreeRevisionConsistencyManager* shadowTreeRevisionConsistencyManager) override; -} - class facebook::react::RuntimeScheduler_Modern : public facebook::react::RuntimeSchedulerBase { public RuntimeScheduler_Modern(const facebook::react::RuntimeScheduler_Modern&) = delete; public RuntimeScheduler_Modern(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 8f00ecd9e8d5..cc246d15c819 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -2871,30 +2871,6 @@ class facebook::react::RuntimeSchedulerIntersectionObserverDelegate { public virtual ~RuntimeSchedulerIntersectionObserverDelegate() = default; } -class facebook::react::RuntimeScheduler_Legacy : public facebook::react::RuntimeSchedulerBase { - public RuntimeScheduler_Legacy(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public RuntimeScheduler_Legacy(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError); - public RuntimeScheduler_Legacy(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(const facebook::react::RuntimeScheduler_Legacy&) = delete; - public facebook::react::RuntimeScheduler_Legacy& operator=(facebook::react::RuntimeScheduler_Legacy&&) = delete; - public virtual bool getShouldYield() noexcept override; - public virtual facebook::react::HighResTimeStamp now() const noexcept override; - public virtual facebook::react::SchedulerPriority getCurrentPriorityLevel() const noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::jsi::Function&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleIdleTask(facebook::react::RawCallback&& callback, facebook::react::HighResDuration timeout = timeoutForSchedulerPriority(facebook::react::SchedulerPriority::IdlePriority)) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::jsi::Function&& callback) noexcept override; - public virtual std::shared_ptr scheduleTask(facebook::react::SchedulerPriority priority, facebook::react::RawCallback&& callback) noexcept override; - public virtual void callExpiredTasks(facebook::jsi::Runtime& runtime) override; - public virtual void cancelTask(facebook::react::Task& task) noexcept override; - public virtual void executeNowOnTheSameThread(facebook::react::RawCallback&& callback) override; - public virtual void scheduleRenderingUpdate(facebook::react::SurfaceId surfaceId, facebook::react::RuntimeSchedulerRenderingUpdate&& renderingUpdate) override; - public virtual void scheduleWork(facebook::react::RawCallback&& callback) noexcept override; - public virtual void setEventTimingDelegate(facebook::react::RuntimeSchedulerEventTimingDelegate* eventTimingDelegate) override; - public virtual void setIntersectionObserverDelegate(facebook::react::RuntimeSchedulerIntersectionObserverDelegate* intersectionObserverDelegate) override; - public virtual void setPerformanceEntryReporter(facebook::react::PerformanceEntryReporter* performanceEntryReporter) override; - public virtual void setShadowTreeRevisionConsistencyManager(facebook::react::ShadowTreeRevisionConsistencyManager* shadowTreeRevisionConsistencyManager) override; -} - class facebook::react::RuntimeScheduler_Modern : public facebook::react::RuntimeSchedulerBase { public RuntimeScheduler_Modern(const facebook::react::RuntimeScheduler_Modern&) = delete; public RuntimeScheduler_Modern(facebook::react::RuntimeExecutor runtimeExecutor, std::function now, facebook::react::RuntimeSchedulerTaskErrorHandler onTaskError);