diff --git a/packages/react-native/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp b/packages/react-native/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp index 9005250d6063..056b774559d0 100644 --- a/packages/react-native/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp +++ b/packages/react-native/ReactCommon/react/renderer/scheduler/tests/SchedulerDelegateInvalidationTest.cpp @@ -589,6 +589,24 @@ TEST_F( EXPECT_EQ(delegate_->shouldRenderTransactionsCount(), 1); } +TEST_F( + SchedulerDelegateInvalidationTest, + EmptySurfaceStartRunsSurfaceStartCallbacks) { + setUp(); + std::vector startedSurfaces; + scheduler_->getUIManager()->addOnSurfaceStartCallback( + [&](const ShadowTree& shadowTree) { + startedSurfaces.push_back(shadowTree.getSurfaceId()); + }); + surfaceHandler_->constraintLayout( + {.layoutDirection = LayoutDirection::LeftToRight}, {}); + + surfaceHandler_->start(); + + EXPECT_EQ(startedSurfaces, std::vector{11}); + surfaceHandler_->stop(); +} + TEST(SchedulerDelegateTest, animatedPropsUseExistingViewUpdatesByDefault) { class PropsDelegate : public RecordingDelegate { public: diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp index 7eefe4606177..8bdad687b8a3 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -266,7 +266,15 @@ void UIManager::startSurface( void UIManager::startEmptySurface( ShadowTree::Unique&& shadowTree) const noexcept { TraceSection s("UIManager::startEmptySurface"); + auto surfaceId = shadowTree->getSurfaceId(); shadowTreeRegistry_.add(std::move(shadowTree)); + + shadowTreeRegistry_.visit( + surfaceId, [delegate = delegate_](const ShadowTree& shadowTree) { + if (delegate != nullptr) { + delegate->uiManagerDidStartSurface(shadowTree); + } + }); } void UIManager::setSurfaceProps(