IGListKit
A data-driven UICollectionView framework for building fast and flexible lists.

| Main Features | |
|---|---|
| ? | Never call performBatchUpdates(_:, completion:) or reloadData() again |
| ? | Better architecture with reusable cells and components |
| ? | Create collections with multiple data types |
| ? | Decoupled diffing algorithm |
| ✅ | Fully unit tested |
| ? | Customize your diffing behavior for your models |
| ? | Simply UICollectionView at its core |
| ? | Extendable API |
| ? | Written in Objective-C with full Swift interop support |
IGListKit is built and maintained with ❤️ by Instagram engineering.
We use the open source version master branch in the Instagram app.
Requirements
- Xcode 9.0+
- iOS 8.0+
- tvOS 9.0+
- macOS 10.11+ (diffing algorithm components only)
- Interoperability with Swift 3.0+
Installation
CocoaPods
The preferred installation method is with CocoaPods. Add the following to your Podfile:
pod 'IGListKit', '~> 3.0'
Carthage
For Carthage, add the following to your Cartfile:
github "Instagram/IGListKit" ~> 3.0
For advanced usage, see our Installation Guide.
Getting Started
$ git clone https://github.com/Instagram/IGListKit.git
$ cd IGListKit/
$ ./scripts/setup.sh