title: SwiftUI List freezes on @ObservedObject update
body: <p>I have the List which automatically fetches more data near the end:</p>
  
  <pre><code>struct AdCardListView: View {
      @ObservedObject var model: AdListViewModel = AdListViewModel()
  
      var body: some View {
          List { ForEach(self.model.adArray.enumerated().map({ $0 }), id: \.element.id) { index, ad in
                  AdCardView(ad: ad)
                      .onAppear {
                          DispatchQueue.main.async {
                              let count = self.model.adArray.count
                              if index &gt;= count - 5 { //5 Views to the end, start loading more.
                                  self.model.fetch(count: count)
                              }
                          }
                  }
                  }
              }
      }
  }
  </code></pre>
  
  <p>Model looking like:</p>
  
  <pre><code>final class AdListViewModel: ObservableObject {
      @Published var adArray = [Ad]()
      ...
   func fetch(count: Int = 0) {
      ...
      DispatchQueue.main.async {
          self.adArray.append(contentsOf: newAds) //&lt;-- problem here
      }
      ...
  }
  </code></pre>
  
  <p>My problem: every @Published/@ObservedObject modification I have a little freeze when scroll list. Also, I found that List recalculates the body of all visible views + a few views above and below.</p>
  
  <p>But I can't determine what leads to hangs of scrolling and fix it (maybe freeze is a transfer to a distance equal to (scrolling speed * rendering time)?</p>
  
  <p>Why SwiftUI recalculate bodies on the existing views? They have not changed!</p>
  
  <p>Can you help me?</p>