A type-safe, data-driven framework for partial updates in UICollectionView and UITableView on iOS.
DataSources is a Swift framework for iOS that provides type-safe, data-driven updates for UICollectionView and UITableView. It solves the problem of synchronizing data with list UI components by enabling efficient partial updates (insert, delete, move) without requiring full reloads, resulting in smoother animations and better performance.
iOS developers building apps with complex list interfaces, such as social media feeds, product catalogs, or data-heavy tables, who need fine-grained control over UI updates.
Developers choose DataSources for its type safety, simplified API, and support for partial updates, which reduce boilerplate code and prevent common synchronization bugs compared to manual UICollectionView/UITableView management.
💾 🔜📱 Type-safe data-driven CollectionView, TableView Framework. (We can also use ASCollectionNode)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides clearly typed objects via IndexPath retrieval, eliminating casting errors and improving code safety, as shown in the usage examples where models are directly accessed.
Automatically computes and applies animated insertions, deletions, and moves without full reloads, leading to smoother UI performance, with a fallback to non-animated updates for over 300 changes.
Supports multiple UI components like UICollectionView, UITableView, and ASCollectionNode from Texture via adapters, allowing integration with different list-based frameworks.
Reduces boilerplate code by enabling data-driven updates where UI automatically reflects changes in the data array, as demonstrated in the simplified usage with `SectionDataController`.
The README explicitly states that moving items between sections is not supported, limiting flexibility for complex list manipulations like reordering across sections.
Handling multiple sections requires defining separate Section objects and managing updates per section, adding boilerplate compared to single-section usage.
Restricted to iOS 9+ and Swift, with no native support for other platforms like macOS or cross-platform frameworks, and dependency on UIKit/Texture ecosystems.