ra1028/differencekit

💻 A fast and flexible O(n) difference algorithm framework for Swift collection.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 9 minutes ago
Added to GitGenius on September 18th, 2026
Created on August 3rd, 2018
Open Issues & Pull Requests: 32 (+0)
GitHub issues: Enabled
Number of forks: 242
Total Stargazers: 3,668 (+0)
Total Subscribers: 38 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 0.3 hours
Mean response time: 430.0 days
90th percentile: 859.9 days
Tracked items: 2

Most active contributors

Sign in to see contributor activity.

Related repositories by overlapping contributors

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 1
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,457 days
Stale 30+ days: 1
Stale 90+ days: 1

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

DifferenceKit is a Swift framework that implements a fast O(n) difference algorithm for calculating diffs in collections.

The tool solves the problem of efficiently detecting changes between two versions of a collection, which is essential for animating updates in table views and collection views. It uses an approach based on Paul Heckel's algorithm from 1978, which computes all types of diffs in linear time. The framework goes beyond the standard algorithm by addressing a practical problem: certain combinations of diffs cause crashes when applied simultaneously to UITableView and UICollectionView batch updates. DifferenceKit solves this by splitting diffs into minimal stages that can be safely applied without crashes.

Developers should choose this tool when building iOS, macOS, tvOS, watchOS, or Linux applications that need to animate collection view updates with accurate change detection. It handles both linear and sectioned collections, including those with duplicate elements. The framework is particularly suited for projects using UIKit or AppKit that require reliable batch update animations, and it integrates with frameworks like Texture for more complex UI scenarios.

The project maintains active development with continuous integration checks and supports multiple package managers. The codebase includes comprehensive examples, a benchmark suite for performance validation, and an interactive playground for learning the API. Documentation is available through an API reference site, and the implementation details are accessible in the repository for developers who want to understand the algorithm mechanics.