IGListKit README

The project's README from github.com/Instagram/IGListKit. As one markdown file: README.md.

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. We use the open source version main branch in the Instagram app.

Multilingual translation

Chinese README

Requirements

Installation

CocoaPods

The preferred installation method is with CocoaPods. Add the following to your Podfile:

pod 'IGListKit', '~> 5.2.0'

Carthage

For Carthage, add the following to your Cartfile:

github "Instagram/IGListKit" ~> 5.2.0

Swift Package Manager

For Swift Package Manager:

To integrate using Xcode:

File -> Swift Packages -> Add Package Dependency

Enter package URL: https://github.com/Instagram/IGListKit, and select the latest release.

For advanced usage, see our Installation Guide.

Getting Started

Try out IGListKit by opening any of the sample apps available in the Examples directory.

Documentation

You can find the docs here. Documentation is generated with jazzy and hosted on GitHub-Pages.

To regenerate docs, run ./scripts/build_docs.sh from the root directory in the repo.

Vision

For the long-term goals and "vision" of IGListKit, please read our Vision doc.

Contributing

Please see the CONTRIBUTING file for how to help. 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.

We have a set of starter tasks that are great for beginners to jump in on and start contributing.

License

IGListKit is MIT-licensed.

The files in the /Examples/ directory are licensed under a separate license as specified in each file. Documentation is licensed CC-BY-4.0.

Copyright ยฉ Meta Platforms, Inc โ€ข Terms of Use โ€ข Privacy Policy

IGListKit (Instagram/IGListKit)

Searching Databaseโ€ฆ

13.1K ยทGitHub
What is this?IGListKit is a data-driven UICollectionView framework for building fast and flexible lists on iOS, built and maintained by Instagram engineering.
Is this a UIKit replacement or a layer on top of UICollectionView?It's a framework that sits on top of UICollectionView, handling diffing and batch updates so you don't manage reloadData() yourself; it's written in Objective-C with full Swift interop.
How do I add it to a project?Install it via CocoaPods (preferred), Carthage, or Swift Package Manager by adding the dependency to your Podfile, Cartfile, or Package.swift respectively.
What are the minimum OS and Swift versions required?You need Swift 5.1+, iOS 11.0+ (tvOS 11.0+), with interoperability back to Swift 3.0+; macOS 10.13+ is only needed if you use the diffing algorithm components alone.
Do I ever need to call performBatchUpdates or reloadData manually?No โ€” the whole point of the library is that you never call performBatchUpdates(:, completion:) or reloadData() again; the diffing engine handles updates for you.
Does it only work on iPhone, or also on tvOS and Mac?It targets iOS and tvOS collection views; macOS support is limited to using just the diffing algorithm components, not the full UI framework.
Is the license the same for the whole repo, including examples?The main library is MIT-licensed, but the files under /Examples/ use a separate license, and the documentation is licensed CC-BY-4.0.
Can I mix different data types in one list?Yes, the framework is built to let you create collections combining multiple data types in a single list, using reusable cell/component sections.
Can I customize how diffing decides items changed?Yes, IGListKit lets you customize the diffing behavior for your own models, and the diffing algorithm itself is decoupled from the UI layer.
Is this used in a real app or just a demo library?Instagram uses the open source main branch of IGListKit directly in the production Instagram app, syncing changes daily.
Where can I see it in action?The repo includes sample apps in the Examples directory, plus a Getting Started guide and third-party tutorials like Ray Wenderlich's IGListKit walkthrough.
Creator
Instagram
Size
9.2 MB
Stars
13.1K
Age
10y
Commits ยท 90 Days