I have used diffable data source with UITableView
for a while and I like it. But today I realized one issue inherent in its design. To use diffable data source, one needs to generate and apply snapshot when data changes. If the data volume is large, or more likely, the data volume is not very large but generating each data point takes a small amount of time, the accumulated time to generate snapshot would become noticeable and lead to bad user experience. I don't think the old API had this issue because delegate functions were only invoked for the items to be shown on the screen.
Since it's a new technology (it was introduced for SwiftUI, right?), I can't believe it could have so apparent limitation. But from the materials I can find on the net, I can't see how it can solve this issue. In the WWDC 2019 session 220 video, the speaker mentioned it could run on background thread in a transparent way, but I don't think that necessarily alleviate the issue in all scenarios. For example, in scenarios where data change are initiated by user interaction it's typical to process data and update UI in a synchronous way, so running on background doesn't really help.
I think I must miss something, but I can't see what it is. Any explanation will be greatly appreciated.