{"adoption": {"forks": 147, "observed_at": "2026-08-28T04:05:43.673641+00:00", "stars": 1848}, "canonical_url": "https://ross.abutalabs.com/products/dwifft", "card": {"archived": false, "artifact_type": "library", "description": "Swift Diff", "domain": ["mobile-development", "apple-ecosystem"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["jflinter/Dwifft"], "name": "jflinter/Dwifft", "platform": [], "pushed_at": "2023-05-04T13:43:07+00:00", "repo": "jflinter/Dwifft", "stars": 1848, "tags": ["diff", "longest-common-subsequence", "uitableview", "uicollectionview", "swift", "algorithm", "algorithms", "ios", "apple"], "topics": ["swift", "diff", "algorithm"], "urls": [], "use_cases": ["animate table view updates when data changes", "compute diff between two arrays in Swift", "avoid reloadData and keep scroll position", "handle section insertions and deletions in UITableView", "calculate edit operations between two collections"], "what_it_is": "Dwifft is a small Swift library that computes the diff (edit operations) between two collections using the Longest Common Subsequence algorithm. It also provides UIKit bindings that automatically animate UITableView and UICollectionView updates when the underlying data changes.", "when_to_avoid": ["you need cross-platform diffing outside Apple's UIKit ecosystem", "your project uses SwiftUI rather than UITableView/UICollectionView", "you need extremely large-scale diffing with performance beyond LCS"], "when_to_choose": ["you have a UITableView or UICollectionView backed by an array that changes over time", "you need animated row/section insertions and deletions instead of reloadData", "you want a lightweight, pure-Swift LCS diff implementation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dwifft", "repo": "jflinter/Dwifft", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:43.673641+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:17:48.490410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "654c093438d520defad0b0df19bf0a2e245d504b1cdfffaf2b18d596afb62489", "fetched_at": "2026-08-28T04:05:43.673641+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jflinter/Dwifft"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4028, "days_push": 1217, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}