diff --git a/packages/react-native/React/Fabric/RCTSurfacePresenter.mm b/packages/react-native/React/Fabric/RCTSurfacePresenter.mm index ab8f3c490780..0e4bbe376463 100644 --- a/packages/react-native/React/Fabric/RCTSurfacePresenter.mm +++ b/packages/react-native/React/Fabric/RCTSurfacePresenter.mm @@ -349,8 +349,16 @@ - (void)schedulerShouldMergeReactRevision:(SurfaceId)surfaceId return; } - std::lock_guard lock(_pendingReactRevisionMergesMutex); - _pendingReactRevisionMerges.insert(surfaceId); + bool needsWake = false; + { + std::lock_guard lock(_pendingReactRevisionMergesMutex); + needsWake = _pendingReactRevisionMerges.empty(); + _pendingReactRevisionMerges.insert(surfaceId); + } + + if (needsWake) { + CFRunLoopWakeUp(CFRunLoopGetMain()); + } } - (void)_mergeReactRevisionForSurfaceId:(SurfaceId)surfaceId