The changelog for JSQDataSourcesKit. Also see the releases on GitHub.


This release closes the 8.1.0 milestone.



This release closes the 8.0.0 milestone.




This release closes the 7.0.0 milestone.




This release closes the 6.0.0 milestone.

Swift 3.0 now required.


This release closes the 5.0.0 milestone.

Swift 2.3 now required.


This release closes the 4.0.1 milestone.


This release closes the 4.0.0 milestone.

This release is essentially a complete re-write of the library. If you are currently using this, migration to 4.0 will be pretty involved, but it will be worth it. The result is a dramatically simpler API.

As always, see the updated documentation for details.

New 🎉

Bug fixes 🐛

⚠️ Breaking changes ⚠️


Major API changes

This release includes a complete revamp of the API (#48). It is now much cleaner, simpler, and easier to use. It has also been updated to be more Swifty according to the latest Swift API Guidelines.

This library was originally written before protocol extensions were introduced in Swift. The reimagining of this library and it's APIs are now heavily based on protocol extensions.

New DataSource
DataSourceProvider objects

All of the *DataSourceProvider classes have been unified into a single class, DataSourceProvider. This new class is initialized with a DataSourceProtocol and replaces all of the following:

Section objects

The section objects are now unified into a single Section object and SectionInfoProtocol protocol, instead of having table-specific and collection-specific models. The new Section and SectionInfoProtocol replace the following:

Cell factory objects

The cell factories have been unified into a single ViewFactory object and ReusableViewFactoryProtocol protocol, which replace the following:


The *FetchedResultsDelegateProvider classes have been unified into a single class, FetchedResultsDelegateProvider, which replaces the following:

TitledCollectionReusableView changes:


Bug fixes from the 3.0.1 milestone.


This release closes the 3.0.0 milestone.

NOTE: This is actually a minor update, but there are breaking changes. Thus, the major version bump.

Breaking changes

// Old
CollectionViewDataSourceProvider<Item, SectionInfo, CellFactory, SupplementaryViewFactory>
TableViewDataSourceProvider<Item, SectionInfo, CellFactory>

// New
CollectionViewDataSourceProvider<SectionInfo, CellFactory, SupplementaryViewFactory>
TableViewDataSourceProvider<SectionInfo, CellFactory>

All we need to ensure is that SectionInfo.Item == CellFactory.Item for type-safey across these components, thus the top-level Item simply isn't needed. The behavior of these classes remains unchanged, and initialization is now less verbose.

init(collectionView: cellFactory: fetchedResultsController:)
init(tableView: cellFactory: fetchedResultsController:)


All documentation has been updated. 📜


🎉 JSQDataSourcesKit 2.0 is here! 🎉

In short, this release contains tons of refinements and fixes. The codebase is substantially cleaner, and more user-friendly.

Breaking changes

Issues closed

Find the complete list of closed issues here for the 2.0.0 milestone.


All documentation has been updated. 📜

Example app

The example app is now much cleaner, and much more awesome. 😎


It's here! 🎉

Checkout the README and documentation.