Instagram/IGListKit breaking changes

swift

22 curated breaking changes across major versions of Instagram/IGListKit. Use this as a migration checklist before bumping dependencies.

22
changes
Breaking changes by transition
  • 5.0.0 \u2192 5.1.0breaking

    Added methods to the `IGListAdapterDelegate` to include callback methods for any time a cell will appear or did disappear from the screen. This can be used in conjunction with the `IGListAdapterDelegateAnnouncer` to listen globally for cell lifecycle events. Any implementer of `IGListAdapterDelegate` must update to include these methods. [Jesse Seidman](https://github.com/jseidman95) [(fa50aa1)](https://github.com/Instagram/IGListKit/commit/fa50aa1cf1be85940787e211d23eb5e7873dbf24), [(d1d6f9d)](

  • 5.0.0 \u2192 5.1.0breaking

    Added `willCrash` delegate methods in order to capture incoming crashes in IGListKit for analysis. Any implementer of `IGListAdapterUpdaterDelegate` and/or `IGListUpdatingDelegate` must update to include these methods. [Hoà V. DINH](https://github.com/dinhvh) [(da1050e)](https://github.com/Instagram/IGListKit/commit/da1050ef397c9cf38e88ac047196fe53fe6febb0)

  • 4.0.0 \u2192 5.0.0breaking

    Changed iOS deployment target to 11.0 and macOS deployment target to 10.13 [Kent Sutherland](https://github.com/ksuther) [(#1573)](https://github.com/Instagram/IGListKit/pull/1573)

  • 4.0.0 \u2192 5.0.0breaking

    Removed unneeded diffing functions `IGListDiffExperiment(...)` and `IGListDiffPathsExperiment(...)`. [Maxime Ollivier](https://github.com/maxolls) [(254c041)](https://github.com/Instagram/IGListKit/commit/254c04196a6b906a155d8a1dd670c720500bed6c)

  • 4.0.0 \u2192 5.0.0breaking

    `ListSectionController.collectionContext` and `ListGenericSectionController.object` are now implicitly-unwrapped optionals in Swift. [Nate Stedman](https://github.com/natestedman) [(a6526ce)](https://github.com/Instagram/IGListKit/commit/a6526ce097fe38de85459cd6a34d948ec8440db7)

  • 4.0.0 \u2192 5.0.0breaking

    The argument of `IGListGenericSectionController`'s `-didUpdateToObject:` is now generic, not `id`. [Nate Stedman](https://github.com/natestedman) [(a6526ce)](https://github.com/Instagram/IGListKit/commit/a6526ce097fe38de85459cd6a34d948ec8440db7)

  • 4.0.0 \u2192 5.0.0breaking

    Updated `IGListUpdatingDelegate`, including a new method to safely perform `[IGListAdapter setDataSource:]` and changes to `-performUpdateWithCollectionViewBlock` that allows section-controllers to be created before the diffing (and therefore use a more accurate `toObjects` array) [Maxime Ollivier](https://github.com/maxolls) [(43af883)](https://github.com/Instagram/IGListKit/commit/43af8838dfdcfc50b8145c56cfecb5f5ed9195a5) ```objc // OLD

  • 3.4.0 \u2192 4.0.0breaking

    Added Swift annotation name to `IGListAdapterDelegate` which removes `IG` prefix. The new name for Swift clients is `ListAdapterDelegate`. [Andrea Antonioni](https://github.com/andreaantonioni) [(#1116)](https://github.com/Instagram/IGListKit/pull/1116)

  • 3.4.0 \u2192 4.0.0breaking

    Remove support for iOS 8 [Ian Perry](https://github.com/iperry90) [(#1381)](https://github.com/Instagram/IGListKit/pull/1381)

  • 3.4.0 \u2192 4.0.0breaking

    `IGListKit` has been split into `IGListKit` and `IGListDiffKit` for Xcode and Carthage builds. Cocoapods continues to use an all-inclusive `IGListKit` podspec. [Nate Stedman](https://github.com/natestedman) [(#1377)](https://github.com/Instagram/IGListKit/pull/1377)

  • 3.4.0 \u2192 4.0.0breaking

    Remove `coalescanceTime` from IGListAdapterUpdate, since it increase crash rate. [Zhisheng Huang](https://github.com/lorixx) [(2f76e8c)](https://github.com/Instagram/IGListKit/commit/2f76e8ce684bf7cea75ee52f25d4ea0af3e0081b)

  • 3.4.0 \u2192 4.0.0breaking

    All `IGListBindingSectionControllerSelectionDelegate` methods are now required. [Bofei Zhu](https://github.com/zhubofei) [(#1186)](https://github.com/Instagram/IGListKit/pull/1186)

  • 2.1.0 \u2192 3.0.0breaking

    Added Swift annotation names which remove `IG` prefixes from class names, C functions, and other APIs. Note, this only affects Swift clients. [Robert Payne](https://github.com/robertjpayne) [(#593)](https://github.com/Instagram/IGListKit/pull/593) Example: ```swift // OLD class MySectionController : IGListSectionController { ... } // NEW class MySectionController : ListSectionController { ... } // OLD IGListDiff([], [], .equality) // NEW ListDiff(oldArray: [], newArray: [], .equality) ```

  • 2.1.0 \u2192 3.0.0breaking

    Updated `didSelect` delegate call in `IGListSingleSectionControllerDelegate` to include object. [Sherlouk](https://github.com/Sherlouk) [(#397)](https://github.com/Instagram/IGListKit/pull/397) ```objc // OLD

  • 2.1.0 \u2192 3.0.0breaking

    (void)didSelectSingleSectionController:(IGListSingleSectionController *)sectionController; // NEW

  • 2.1.0 \u2192 3.0.0breaking

    (void)didSelectSectionController:(IGListSingleSectionController *)sectionController withObject:(id)object; ```

  • 2.1.0 \u2192 3.0.0breaking

    `IGListUpdatingDelegate` now conforms to `NSObject`, bringing it in line with other framework protocols. [Adlai Holler](https://github.com/Adlai-Holler) [(#435)](https://github.com/Instagram/IGListKit/pull/435)

  • 1.0.0 \u2192 2.0.0breaking

    Diff result method on `IGListIndexPathResult` changed. `-resultWithUpdatedMovesAsDeleteInserts` was removed and replaced with `-resultForBatchUpdates` [(b5aa5e3)](https://github.com/Instagram/IGListKit/commit/b5aa5e39002854c947e777c11ae241f67f24d19c)

  • 1.0.0 \u2192 2.0.0breaking

    (IGListIndexPathResult *)resultWithUpdatedMovesAsDeleteInserts;

  • 1.0.0 \u2192 2.0.0breaking

    (IGListIndexPathResult *)resultForBatchUpdates; ```

  • 1.0.0 \u2192 2.0.0breaking

    `IGListDiffable` equality method changed from `isEqual:` to `isEqualToDiffableObject:` [(ab890fc)](https://github.com/Instagram/IGListKit/commit/ab890fc6070f170a2db5a383a6296e62dcf75678)

  • 1.0.0 \u2192 2.0.0breaking

    The default `NSObject<IGListDiffable>` category was removed and replaced with `NSString<IGListDiffable>` and `NSNumber<IGListDiffable>` categories. All other models will need to conform to `IGListDiffable`. [(3947600)](https://github.com/Instagram/IGListKit/commit/394760081c7c2daa5ae6c18e00cdeaf2b67e22c1)

API access

Get this data programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/breaking/swift/Instagram/IGListKit
Instagram/IGListKit breaking changes — Swift migration guide | DepScope