Skip to content

Commit d7fe2ef

Browse files
j-piaseckifacebook-github-bot
authored andcommitted
Update branching implementation to default to the JS thread merge
Summary: Changelog: [General][Changed] - Updated the default branching path to merge the React revisions on the JS thread The current behavior, merge on the main thread, is kept behind the new `enableFabricCommitBranchingMergeOnMainThread` flag. Differential Revision: D120981616
1 parent ffa4147 commit d7fe2ef

3 files changed

Lines changed: 17 additions & 11 deletions

File tree

‎packages/react-native/React/Fabric/RCTSurfacePresenter.mm‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ - (instancetype)initWithContextContainer:(std::shared_ptr<const ContextContainer
101101
_mountingManager.contextContainer = contextContainer;
102102
_mountingManager.delegate = self;
103103

104-
if (ReactNativeFeatureFlags::enableFabricCommitBranching()) {
104+
if (ReactNativeFeatureFlags::enableFabricCommitBranchingMergeOnMainThread()) {
105105
_mergeRunLoopObserverDelegate = std::make_shared<ReactRevisionMergeRunLoopObserverDelegate>(self);
106106
_mergeRunLoopObserver = std::make_unique<const MainRunLoopObserver>(
107107
RunLoopObserver::Activity::BeforeWaiting, _mergeRunLoopObserverDelegate);
@@ -350,7 +350,7 @@ - (void)schedulerShouldRenderTransactions:(std::shared_ptr<const MountingCoordin
350350

351351
- (void)schedulerShouldMergeReactRevision:(SurfaceId)surfaceId
352352
{
353-
if (RCTIsMainQueue()) {
353+
if (RCTIsMainQueue() || !ReactNativeFeatureFlags::enableFabricCommitBranchingMergeOnMainThread()) {
354354
[self _mergeReactRevisionForSurfaceId:surfaceId];
355355
return;
356356
}
@@ -369,7 +369,6 @@ - (void)schedulerShouldMergeReactRevision:(SurfaceId)surfaceId
369369

370370
- (void)_mergeReactRevisionForSurfaceId:(SurfaceId)surfaceId
371371
{
372-
RCTAssertMainQueue();
373372
RCTScheduler *scheduler = [self scheduler];
374373
if (!scheduler) {
375374
return;

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1628,7 +1628,7 @@ public void doFrameGuarded(long frameTimeNanos) {
16281628

16291629
// Drain pending React revision merges first so that animations,
16301630
// preallocation, and mount items operate against the latest revision.
1631-
if (ReactNativeFeatureFlags.enableFabricCommitBranching()) {
1631+
if (ReactNativeFeatureFlags.enableFabricCommitBranchingMergeOnMainThread()) {
16321632
FabricUIManagerBinding binding = mBinding;
16331633
if (binding != null) {
16341634
Integer mergeSurfaceId;

‎packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -767,17 +767,24 @@ void FabricUIManagerBinding::schedulerShouldRenderTransactions(
767767

768768
void FabricUIManagerBinding::schedulerShouldMergeReactRevision(
769769
SurfaceId surfaceId) {
770-
std::shared_lock lock(installMutex_);
771-
auto mountingManager =
772-
getMountingManager("schedulerShouldMergeReactRevision");
773-
if (mountingManager) {
774-
mountingManager->scheduleReactRevisionMerge(surfaceId);
770+
if (ReactNativeFeatureFlags::enableFabricCommitBranchingMergeOnMainThread()) {
771+
auto mountingManager =
772+
getMountingManager("schedulerShouldMergeReactRevision");
773+
if (mountingManager) {
774+
mountingManager->scheduleReactRevisionMerge(surfaceId);
775+
}
776+
} else {
777+
mergeReactRevision(surfaceId);
775778
}
776779
}
777780

778781
void FabricUIManagerBinding::mergeReactRevision(SurfaceId surfaceId) {
779-
std::shared_lock lock(installMutex_);
780-
scheduler_->getUIManager()->getShadowTreeRegistry().visit(
782+
auto scheduler = getScheduler();
783+
if (!scheduler) {
784+
return;
785+
}
786+
787+
scheduler->getUIManager()->getShadowTreeRegistry().visit(
781788
surfaceId,
782789
[](const ShadowTree& shadowTree) { shadowTree.mergeReactRevision(); });
783790
}

0 commit comments

Comments
 (0)