From eeb9d1e76c0c078f097263f453d64d7bd8fdaf31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ma=C5=82ecki?= Date: Fri, 21 Aug 2026 01:23:03 -0700 Subject: [PATCH] Stop framework headers from exposing private performance APIs (#58011) Summary: Move private performance includes out of framework-facing scheduler headers and into their implementation files. Store the conditional CDP reporters behind unique pointers so their declarations can remain private implementation details. Changelog: [Internal] Reviewed By: javache Differential Revision: D116621742 --- .../renderer/runtimescheduler/RuntimeScheduler.h | 3 ++- .../runtimescheduler/RuntimeScheduler_Modern.cpp | 1 + .../react/renderer/scheduler/Scheduler.cpp | 10 ++++++++-- .../react/renderer/scheduler/Scheduler.h | 13 +++++++------ .../ReactCommon/react/runtime/ReactInstance.cpp | 1 + 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h index 828efcb7a9c3..46d45399ef20 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h @@ -9,7 +9,6 @@ #include #include -#include #include #include #include @@ -20,6 +19,8 @@ namespace facebook::react { +class PerformanceEntryReporter; + using RuntimeSchedulerRenderingUpdate = std::function; using SurfaceId = int32_t; diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp index dd5af091c16c..f136726cbf80 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp index b5fa421a35ae..e0d83d85816f 100644 --- a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp +++ b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp @@ -13,12 +13,16 @@ #include #include #include +#include +#include +#include #include #include #include #include #include #include +#include #include #include #include @@ -44,12 +48,14 @@ Scheduler::Scheduler( if (ReactNativeFeatureFlags::enableBridgelessArchitecture() && ReactNativeFeatureFlags::cdpInteractionMetricsEnabled()) { - cdpMetricsReporter_.emplace(CdpMetricsReporter{runtimeExecutor_}); + cdpMetricsReporter_ = + std::make_unique(runtimeExecutor_); performanceEntryReporter_->addEventListener(&*cdpMetricsReporter_); } if (ReactNativeFeatureFlags::perfIssuesEnabled()) { - cdpPerfIssuesReporter_.emplace(CdpPerfIssuesReporter{runtimeExecutor_}); + cdpPerfIssuesReporter_ = + std::make_unique(runtimeExecutor_); performanceEntryReporter_->addEventListener(&*cdpPerfIssuesReporter_); } diff --git a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h index bc0b7b17d802..285e3868f44c 100644 --- a/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h +++ b/packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h @@ -12,16 +12,12 @@ #include #include -#include -#include -#include #include #include #include #include #include #include -#include #include #include #include @@ -34,6 +30,11 @@ namespace facebook::react { +class CdpMetricsReporter; +class CdpPerfIssuesReporter; +class EventPerformanceLogger; +class PerformanceEntryReporter; + /* * Scheduler coordinates Shadow Tree updates and event flows. */ @@ -145,8 +146,8 @@ class Scheduler final : public UIManagerDelegate { std::shared_ptr> eventDispatcher_; std::shared_ptr performanceEntryReporter_; - std::optional cdpMetricsReporter_; - std::optional cdpPerfIssuesReporter_; + std::unique_ptr cdpMetricsReporter_; + std::unique_ptr cdpPerfIssuesReporter_; std::shared_ptr eventPerformanceLogger_; /** diff --git a/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp b/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp index 288bde9d70f6..980cde851d5b 100644 --- a/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp +++ b/packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include