diff --git a/React/Views/RCTNavigator.m b/React/Views/RCTNavigator.m index 7bfb9f5e742584..0fde4515f11e1f 100644 --- a/React/Views/RCTNavigator.m +++ b/React/Views/RCTNavigator.m @@ -590,7 +590,10 @@ - (void)reactBridgeDidFinishTransaction return; } - _previousViews = [self.reactSubviews copy]; + // Only make a copy of the subviews whose validity we expect to be able to check (in the loop, above), + // otherwise we would unnecessarily retain a reference to view(s) no longer on the React navigation stack: + NSUInteger expectedCount = MIN(currentReactCount, self.reactSubviews.count); + _previousViews = [[self.reactSubviews subarrayWithRange: NSMakeRange(0, expectedCount)] copy]; _previousRequestedTopOfStack = _requestedTopOfStack; }