A drop-in iOS library that stops the keyboard from covering UITextField and UITextView, with no code required.
Instagram/IGListKit
A data-driven UICollectionView framework from Instagram for building fast, flexible iOS lists with automatic diffing.
- Stars
- 13,081
- Forks
- 1,539
- Open issues
- 65
- Last commit
- 4 days ago
What is it?
IGListKit is a Objective-C framework for building lists on top of UICollectionView. Instead of manually calling performBatchUpdates or reloadData, developers describe their data and the framework computes the differences between old and new states, then applies the updates to the collection view.
The framework separates data models from view logic through section controllers, which let a single collection hold multiple data types and reusable cells or components. A decoupled diffing algorithm compares items, and developers can customize how models are compared. It supports iOS, tvOS, and macOS for the diffing components, and offers full Swift interoperability.
IGListKit is maintained by Instagram engineering and is used in the Instagram app. It is installable through CocoaPods, Carthage, and Swift Package Manager, and includes sample apps in the Examples directory.
Key features
- 01Automatically computes diffs and applies batch updates to UICollectionView
- 02Supports collections with multiple data types using section controllers
- 03Customizable diffing behavior for your models
- 04Decoupled diffing algorithm usable on its own
- 05Full Swift interoperability
Use cases
- Building feed-style or mixed-content lists in an iOS app with frequently changing data
- Replacing manual performBatchUpdates and reloadData logic in existing collection views
- Migrating table-based screens to collection-based layouts
Quick start
- 1
Add the IGListKit pod to your Podfile
pod 'IGListKit', '~> 5.2.0' - 2
Add the Swift Package via Xcode using the package URL
- 3
Open an example app from the Examples directory to try it out
Things to know
- Targets iOS, tvOS and macOS only, with macOS limited to the diffing components.
- Requires iOS 11.0 or later and Swift 5.1 or later.
- Written in Objective-C, so Swift users rely on interop.
Topics
FAQ
- What is IGListKit?
- A data-driven UICollectionView framework from Instagram for building fast, flexible iOS lists with automatic diffing. IGListKit is a Objective-C framework for building lists on top of UICollectionView. Instead of manually calling performBatchUpdates or reloadData, developers describe their data and the framework computes the differences between old and new states, then applies the updates to the collection view.
- Is IGListKit free to use? What license does it have?
- IGListKit is open source under the MIT license. Check the license terms before using it in commercial products.
- Is IGListKit still maintained?
- Actively maintained. The last commit to IGListKit was on Nov 3, 2026.
- What can I use IGListKit for?
- Building feed-style or mixed-content lists in an iOS app with frequently changing data Replacing manual performBatchUpdates and reloadData logic in existing collection views Migrating table-based screens to collection-based layouts
- How do I install IGListKit?
- Add the IGListKit pod to your Podfile: pod 'IGListKit', '~> 5.2.0' Add the Swift Package via Xcode using the package URL Open an example app from the Examples directory to try it out
- Where can I get IGListKit?
- The source code and installation instructions are on GitHub: https://github.com/Instagram/IGListKit
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An iOS view controller for cropping UIImage objects, with rotation, circular crop, and aspect-ratio locking, modeled on the Photos app editor.
An iOS/tvOS framework that renders UIKit-style interfaces asynchronously on background threads to keep scrolling smooth.
A React Native camera library for photo and video capture, QR/barcode scanning, and real-time frame processing on iOS and Android.
A cross-platform UI framework that compiles declarative TypeScript components into native iOS, Android and macOS views, without web views or JS bridges.
Lottie and dotLottie splash screens for React Native that play natively from app launch, before the JavaScript bundle loads.