diff --git a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CMakeLists.txt b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CMakeLists.txt index e59c289747b5..2b692cb0fd6f 100644 --- a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CMakeLists.txt @@ -18,6 +18,7 @@ target_include_directories(react_performance_cdpmetrics PUBLIC ${REACT_COMMON_DI target_link_libraries(react_performance_cdpmetrics folly_runtime jsi + react_cxxstableapi react_performance_timeline react_timing runtimeexecutor) diff --git a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.h b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.h index 9348cc3e98cf..a43d0387f4ba 100644 --- a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.h +++ b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpInteractionTypes.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.h b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.h index 578b7ed32d19..5ec74d04d94e 100644 --- a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.h +++ b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h index 617646eb061f..979c20554d6d 100644 --- a/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +++ b/packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec b/packages/react-native/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec index 646855e74b80..16473685e023 100644 --- a/packages/react-native/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec +++ b/packages/react-native/ReactCommon/react/performance/cdpmetrics/React-performancecdpmetrics.podspec @@ -40,6 +40,8 @@ Pod::Spec.new do |s| resolve_use_frameworks(s, header_mappings_dir: "../../..", module_name: "React_performancecdpmetrics") + s.dependency "React-cxxstableapi" + add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"]) s.dependency "React-jsi" s.dependency "React-performancetimeline" diff --git a/packages/react-native/ReactCommon/react/performance/timeline/CMakeLists.txt b/packages/react-native/ReactCommon/react/performance/timeline/CMakeLists.txt index 38475e307660..4217acdb9029 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/performance/timeline/CMakeLists.txt @@ -19,6 +19,7 @@ target_link_libraries(react_performance_timeline jsinspector jsinspector_tracing reactperflogger + react_cxxstableapi react_featureflags react_timing folly_runtime) diff --git a/packages/react-native/ReactCommon/react/performance/timeline/CircularBuffer.h b/packages/react-native/ReactCommon/react/performance/timeline/CircularBuffer.h index a9c44281c328..a62db037f942 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/CircularBuffer.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/CircularBuffer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntry.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntry.h index 291bb2ace829..838f30283d28 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntry.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntry.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryBuffer.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryBuffer.h index 418b344fbbba..3ac876d885c4 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryBuffer.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryBuffer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include "PerformanceEntry.h" diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.h index 95163b5392ad..6d263cffea7d 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryCircularBuffer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include "CircularBuffer.h" #include "PerformanceEntryBuffer.h" diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h index 5d895d5873e9..20b84eb32a9d 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryKeyedBuffer.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h index f9c584ab27cf..90d61644e802 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporter.h @@ -7,6 +7,8 @@ #pragma once +#include + #include "PerformanceEntryCircularBuffer.h" #include "PerformanceEntryKeyedBuffer.h" #include "PerformanceEntryReporterListeners.h" diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporterListeners.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporterListeners.h index e604963e887b..5767d0046205 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporterListeners.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceEntryReporterListeners.h @@ -7,6 +7,8 @@ #pragma once +#include + #include "PerformanceEntry.h" #include diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserver.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserver.h index a8335aea3a96..235ed6d914d7 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserver.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserver.h @@ -7,6 +7,8 @@ #pragma once +#include + #include "PerformanceEntryBuffer.h" #include "PerformanceObserverRegistry.h" diff --git a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserverRegistry.h b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserverRegistry.h index dc3c7d4a4e6c..54f40c2064a4 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserverRegistry.h +++ b/packages/react-native/ReactCommon/react/performance/timeline/PerformanceObserverRegistry.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/performance/timeline/React-performancetimeline.podspec b/packages/react-native/ReactCommon/react/performance/timeline/React-performancetimeline.podspec index ec18c311fe18..863541a835b7 100644 --- a/packages/react-native/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +++ b/packages/react-native/ReactCommon/react/performance/timeline/React-performancetimeline.podspec @@ -40,6 +40,8 @@ Pod::Spec.new do |s| resolve_use_frameworks(s, header_mappings_dir: "../../..", module_name: "React_performancetimeline") + s.dependency "React-cxxstableapi" + s.dependency "React-featureflags" add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern') add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing') 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