{"id":2866,"url":"https://github.com/Instagram/IGListKit","last_synced_at":"2025-08-03T12:31:32.184Z","repository":{"id":37430796,"uuid":"67588512","full_name":"Instagram/IGListKit","owner":"Instagram","description":"A data-driven UICollectionView framework for building fast and flexible lists.","archived":false,"fork":false,"pushed_at":"2025-06-28T17:33:16.000Z","size":9012,"stargazers_count":13015,"open_issues_count":163,"forks_count":1546,"subscribers_count":334,"default_branch":"main","last_synced_at":"2025-07-30T02:59:29.634Z","etag":null,"topics":["diffing","instagram","ios","objective-c","uicollectionview"],"latest_commit_sha":null,"homepage":"https://instagram.github.io/IGListKit/","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Instagram.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-09-07T08:39:27.000Z","updated_at":"2025-07-28T05:18:05.000Z","dependencies_parsed_at":"2022-07-08T18:43:59.957Z","dependency_job_id":"b81d6fa5-89c4-4091-9988-d60f5ca781cd","html_url":"https://github.com/Instagram/IGListKit","commit_stats":{"total_commits":810,"total_committers":205,"mean_commits":3.951219512195122,"dds":0.7876543209876543,"last_synced_commit":"53a96a9896732ffeb2683953aa6bd23642743ec8"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/Instagram/IGListKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Instagram%2FIGListKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Instagram%2FIGListKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Instagram%2FIGListKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Instagram%2FIGListKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Instagram","download_url":"https://codeload.github.com/Instagram/IGListKit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Instagram%2FIGListKit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268448362,"owners_count":24252019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diffing","instagram","ios","objective-c","uicollectionview"],"created_at":"2024-01-05T20:16:24.925Z","updated_at":"2025-08-03T12:31:32.155Z","avatar_url":"https://github.com/Instagram.png","language":"Objective-C","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Instagram/IGListKit/main/Resources/logo.png\" width=450 /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Instagram/IGListKit/actions/workflows/CI.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Instagram/IGListKit/CI.yml\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://coveralls.io/github/Instagram/IGListKit?branch=main\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/Instagram/IGListKit/badge.svg?branch=main\" alt=\"Coverage Status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://cocoapods.org/pods/IGListKit\"\u003e\u003cimg src=\"https://img.shields.io/cocoapods/v/IGListKit.svg?style=flat\" alt=\"Pods Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://instagram.github.io/IGListKit/\"\u003e\u003cimg src=\"https://img.shields.io/cocoapods/p/IGListKit.svg?style=flat\" alt=\"Platforms\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Carthage/Carthage\"\u003e\u003cimg src=\"https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat\" alt=\"Carthage Compatible\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n----------------\n\nA data-driven `UICollectionView` framework for building fast and flexible lists.\n\n|         | Main Features  |\n----------|-----------------\n\u0026#128581; | Never call `performBatchUpdates(_:, completion:)` or `reloadData()` again\n\u0026#127968; | Better architecture with reusable cells and components\n\u0026#128288; | Create collections with multiple data types\n\u0026#128273; | Decoupled diffing algorithm\n\u0026#9989;   | Fully unit tested\n\u0026#128269; | Customize your diffing behavior for your models\n\u0026#128241; | Simply `UICollectionView` at its core\n\u0026#128640; | Extendable API\n\u0026#128038; | Written in Objective-C with full Swift interop support\n\n`IGListKit` is built and maintained with \u0026#10084;\u0026#65039; by [Instagram engineering](https://engineering.instagram.com/).\nWe use the open source version `main` branch in the Instagram app.\n\n## Multilingual translation\n\n[Chinese README](README.zh.md)\n\n## Requirements\n\n- Swift 5.1+\n- iOS 11.0+\n- tvOS 11.0+\n- macOS 10.13+ *(diffing algorithm components only)*\n- Interoperability with Swift 3.0+\n\n## Installation\n\n### CocoaPods\n\nThe preferred installation method is with [CocoaPods](https://cocoapods.org). Add the following to your `Podfile`:\n\n```ruby\npod 'IGListKit', '~\u003e 5.0.0'\n```\n\n### Carthage\n\nFor [Carthage](https://github.com/Carthage/Carthage), add the following to your `Cartfile`:\n\n```ogdl\ngithub \"Instagram/IGListKit\" ~\u003e 5.0.0\n```\n\n### Swift Package Manager\n\nFor [Swift Package Manager](https://swift.org/package-manager/):\n\n```\nTo integrate using Xcode:\n\nFile -\u003e Swift Packages -\u003e Add Package Dependency\n\nEnter package URL: https://github.com/Instagram/IGListKit, and select the latest release.\n```\n\n\u003e For advanced usage, see our [Installation Guide](https://instagram.github.io/IGListKit/installation.html).\n\n## Getting Started\n\nTry out IGListKit by opening any of the sample apps available in the `Examples ` directory.\n\n- Our [Getting Started guide](https://instagram.github.io/IGListKit/getting-started.html)\n- Ray Wenderlich's [IGListKit Tutorial: Better UICollectionViews](https://www.raywenderlich.com/147162/iglistkit-tutorial-better-uicollectionviews)\n- Our [example projects](https://github.com/Instagram/IGListKit/tree/main/Examples)\n- Ryan Nystrom's [talk at try! Swift NYC](https://academy.realm.io/posts/tryswift-ryan-nystrom-refactoring-at-scale-lessons-learned-rewriting-instagram-feed/)(Note: this talk was for an earlier version. Some APIs have changed.)\n- [Migrating an UITableView to IGListCollectionView](https://medium.com/cocoaacademymag/iglistkit-migrating-an-uitableview-to-iglistkitcollectionview-65a30cf9bac9), by Rodrigo Cavalcante\n- [Keeping data fresh in Buffer for iOS with AsyncDisplayKit, IGListKit \u0026 Pusher](https://overflow.buffer.com/2017/04/10/keeping-data-fresh-buffer-ios-asyncdisplaykit-iglistkit-pusher/), Andy Yates, Buffer\n\n## Documentation\n\nYou 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).\n\nTo regenerate docs, run `./scripts/build_docs.sh` from the root directory in the repo.\n\n## Vision\n\nFor the long-term goals and \"vision\" of `IGListKit`, please read our [Vision](https://github.com/Instagram/IGListKit/blob/main/Guides/VISION.md) doc.\n\n## Contributing\n\nPlease see the [CONTRIBUTING](https://github.com/Instagram/IGListKit/blob/main/.github/CONTRIBUTING.md) 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.\n\nWe have a set of [starter tasks](https://github.com/Instagram/IGListKit/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task) that are great for beginners to jump in on and start contributing.\n\n## License\n\n`IGListKit` is [MIT-licensed](./LICENSE.md).\n\nThe 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/).\n\n## Legal\n\nCopyright © Meta Platforms, Inc \u0026#x2022; \u003ca href=\"https://opensource.fb.com/legal/terms\"\u003eTerms of Use\u003c/a\u003e \u0026#x2022; \u003ca href=\"https://opensource.fb.com/legal/privacy\"\u003ePrivacy Policy\u003c/a\u003e\n","funding_links":[],"categories":["UI","Objective-C","HarmonyOS","Object-C 库","前端开发框架及项目","Objective-C  Stars 1000以内排名整理","UI Frameworks","iOS","uicollectionview","Major"],"sub_categories":["Table View / Collection View","Windows Manager","Layout","Other free courses","其他_文本生成、文本对话","DataSources","UI"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInstagram%2FIGListKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FInstagram%2FIGListKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FInstagram%2FIGListKit/lists"}