synesthesia-it / Boomerang

Swift micro-framework for MVVM (Model-View-ViewModel) native applications.
MIT License
36 stars 10 forks source link

Custom Diffing algorithms for tables and collections #29

Open stefanomondino opened 3 years ago

stefanomondino commented 3 years ago

At the moment, Boomerang does a great job handling differences and animations in table and collections when used with the RxSwiftDataSources integration.

The Core version doesn't implement anything like that and simply defer the diffing/updating logic to the developer, resulting in a naive implementation with reloadData() that may be not the best choice for large datasets.

This also prevents ReactiveSwift users to get a custom implementation of Boomerang, since there's no RxDataSources equivalent on that platform.

We should investigate to find an alternative to the (excellent) RxDataSources diffing algorithm (Differentiator + custom implementations for views) so that: 1) it's available outside Rx environments 2) it's compatible with macOS and watchOS (see #28)

At the moment, this should be a low-prioritized task, more like an inquiry: RxDataSources is battle-tested and works really good, there should be enough valid reasons to reinvent the wheel.