diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java index 4629668d494..41cf97c71fb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.java @@ -577,13 +577,15 @@ public class MountingManager { return; } - View view = viewState.mView; - - if (view != null) { - dropView(view, false); - } else { - mTagToViewState.remove(reactTag); - } + // To delete we simply remove the tag from the registry. + // In the past we called dropView here, but we want to rely on either + // (1) the correct set of MountInstructions being sent to the platform + // and/or (2) dropView being called by stopSurface. + // If Views are orphaned at this stage and leaked, it's a problem in + // the differ or LayoutAnimations, not MountingManager. + // Additionally, as documented in `dropView`, we cannot always trust a + // view's children to be up-to-date. + mTagToViewState.remove(reactTag); } @UiThread