Skip to content

IGListKit

A Swift-compatible Objective-C framework for building data-driven UICollectionView lists on iOS.

Stars
13.1k
Forks
1.5k
Licence
MIT
Language
Objective-C
Last update
13 days ago
Type
Library

What it is

IGListKit is a framework from Instagram engineering that helps iOS developers build UICollectionView-based lists from data. You supply your data and it works out what changed, so screens update without manual batch-update or reloadData calls. It is written in Objective-C and works with Swift code.

  • Build a feed or list where items of different types appear together
  • Replace manual performBatchUpdates or reloadData calls with diff-driven updates
  • Customize how models are compared when computing differences
  • Migrate an existing UITableView-based screen to a collection view structure, per linked guides

Great for

  • iOS developers building list or feed screens with UICollectionView
  • Teams who want a reusable, decoupled diffing approach for their models
  • Apps that mix several data types in one collection
  • Developers already comfortable with Objective-C or Swift interop

Not ideal for

  • Developers who need SwiftUI-only solutions, since the README describes a UICollectionView framework and does not mention SwiftUI
  • Projects that need Android or web support, since the README covers only Apple platforms
  • Beginners with no iOS background, since the README assumes familiarity with UICollectionView
Step-by-step guide: how to use IGListKitInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Xcode with Swift 5.1+ · CocoaPods, Carthage, or Swift Package Manager

    CocoaPods: add to Podfile

    pod 'IGListKit', '~> 5.2.0'

    Carthage: add to Cartfile

    github "Instagram/IGListKit" ~> 5.2.0
  2. 2

    Run it

    • Add the IGListKit dependency using CocoaPods, Carthage, or Swift Package Manager.
    • Open one of the sample apps in the Examples directory.
    • Follow the Getting Started guide on the project docs site.
    • Create a list adapter and supply your data models.
  3. 3

    Get the most out of it

    • Read the Getting Started guide at the project homepage for setup patterns
    • Study the example projects in the Examples directory
    • Customize diffing behavior for your own models as described in the README
    • Review the Vision document to understand long-term project direction

Downloads

Strengths

  • Removes the need to call performBatchUpdates or reloadData by hand, according to the README
  • Supports collections with multiple data types and reusable cells
  • Written in Objective-C with documented Swift interop and has unit tests

Trade-offs

  • README lists Swift 5.1+, iOS 11.0+ and macOS only for diffing components, so older targets may not work
  • Some linked learning material is for an earlier version and the README warns that some APIs have changed
  • Latest release 5.2.0 ships no binaries, so it must be added through a dependency manager

How it compares

ProjectStarsTypeLevelUpdatedBest for
IGListKit (this)13.1kLibraryintermediate13 days agoiOS developers building list or feed screens with UICollectionView
SDWebImage25.6kLibraryintermediate7 months agoiOS or macOS app developers who need to show remote images in lists or grids
SkeletonView12.9kLibrarybeginner5 months agoiOS developers building apps that load data from the network
SVProgressHUD12.4kLibrarybeginner8 months agoiOS developers who need a quick loading indicator for a blocking task
FSCalendar10.6kLibraryintermediate2.2 years agoiOS developers who need a calendar or date-picker view in their app
awesome-ios53.8kCurated listbeginner2 months agoiOS developers looking for a library for a specific task such as networking, animation or testing

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.