explaingit

instagram/iglistkit

13,062Objective-CAudience · developerComplexity · 3/5LicenseSetup · easy

TLDR

IGListKit is an iOS framework from Instagram that makes scrollable lists and feeds faster and easier to maintain by automatically detecting what changed in your data and updating only those rows.

Mindmap

mindmap
  root((IGListKit))
    What It Does
      Fast iOS list rendering
      Auto-diffing data
    Key Concepts
      Section controllers
      Diffing algorithm
      UICollectionView
    Install
      CocoaPods
      Swift Package Manager
      Carthage
    Compatibility
      Swift and Objective-C
      iOS 11 and above
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build complex iOS feeds like social timelines that update efficiently without reloading the entire list.

USE CASE 2

Organize a large UICollectionView into independent section controllers to keep code maintainable as the feed grows.

USE CASE 3

Improve iOS app scroll performance by replacing manual reloadData calls with IGListKit's diffing-based updates.

Tech stack

Objective-CSwiftCocoaPodsSwift Package Manager

Getting it running

Difficulty · easy Time to first run · 30min
Use freely for any purpose, including commercial apps, as long as you keep the MIT license and copyright notice.

In plain English

IGListKit is a framework for iOS developers to build faster, more organized lists and grids within their apps. It sits on top of UICollectionView, the standard iOS component for showing scrollable content, and adds smarter data management so developers do not have to manually figure out which items changed when the underlying data updates. A built-in diffing algorithm compares old data to new data and only updates the parts that changed, rather than reloading everything at once. The practical benefit is both performance and cleaner code. Apps avoid unnecessary reloads of entire lists when only a few rows change. The framework also encourages organizing each section of a list into its own separate controller, which makes large, complex feeds like the Instagram home feed easier to build and maintain. Instagram engineering built and uses this library in the production Instagram app. IGListKit is written in Objective-C and has full Swift compatibility. It targets iOS 11 and tvOS 11 and above, with some components also working on macOS. Developers can add it to a project through CocoaPods, Carthage, or Swift Package Manager, all standard iOS dependency tools. The library is open source under an MIT license. It includes example projects in the repository, a getting-started guide, and full API documentation hosted online. The project welcomes outside contributions and marks beginner-friendly issues for those new to the codebase.

Copy-paste prompts

Prompt 1
How do I set up IGListKit in a Swift project using Swift Package Manager and create my first section controller?
Prompt 2
Show me how to implement IGListDiffable in a Swift data model so IGListKit can automatically diff my data and animate row changes.
Prompt 3
Walk me through migrating an existing UICollectionView that calls reloadData manually to IGListKit's adapter pattern.
Open on GitHub → Explain another repo

← instagram on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.