Build Status Coverage Status Pods Version Platforms Carthage Compatible

---------------- 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](https://engineering.instagram.com/). We use the open source version `master` branch in the Instagram app. ## Requirements - Xcode 8.0+ - iOS 8.0+ - tvOS 9.0+ - macOS 10.8+ *(diffing algorithm components only)* - Interoperability with Swift 3.0+ ## Installation ### CocoaPods The preferred installation method for `IGListKit` is with [CocoaPods](https://cocoapods.org). Add the following to your `Podfile`: ```ruby # Latest release of IGListKit pod 'IGListKit', '~> 2.0.0' # Use the master branch (we use this at Instagram) pod 'IGListKit', :git => 'https://github.com/Instagram/IGListKit.git', :branch => 'master' ``` ### Carthage If using [Carthage](https://github.com/Carthage/Carthage), add the following to your `Cartfile`: ```ogdl github "Instagram/IGListKit" ~> 2.0.0 ``` ## Getting Started - Our [Getting Started guide](https://instagram.github.io/IGListKit/getting-started.html) - Ray Wenderlich's [IGListKit Tutorial: Better UICollectionViews](https://www.raywenderlich.com/147162/iglistkit-tutorial-better-uicollectionviews) - Ryan Nystrom's [talk at try! Swift NYC](https://realm.io/news/tryswift-ryan-nystrom-refactoring-at-scale-lessons-learned-rewriting-instagram-feed/) ## Documentation You can find [the docs here](https://instagram.github.io/IGListKit). Documentation is generated with [jazzy](https://github.com/realm/jazzy) and hosted on [GitHub-Pages](https://pages.github.com). ## Contributing Please see the [CONTRIBUTING](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) file for how to help out. At Instagram we sync the open source version of `IGListKit` daily, so we're always testing the latest changes. But that requires all changes be thoroughly tested and follow our style guide. ## License `IGListKit` is BSD-licensed. We also provide an additional patent grant. The files in the `/Examples/` directory are licensed under a separate license as specified in each file. Documentation is licensed [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/).