I think then you are reassigning an array which causes angular to think there is sonething really new. That causes an expensive rerender and possibly a scrolltotop
Consider keeping the old array and replacing the difference within that array?
Then the change detection may not struggle that much