// the take
Difference is a small Swift library that replaces XCTest's unhelpful equality-failure dump with a property-by-property diff, so you see exactly which field differs instead of two full object descriptions. It's for iOS/macOS Swift developers writing unit tests who are tired of eyeballing giant structs in Xcode's test failure output.
Solves a real, specific annoyance rather than being a general-purpose framework — it does one thing. Integration is trivial: drop in an XCTAssertEqual override or a Quick/Nimble matcher and diffs show up automatically in existing test suites with no API changes to the tests themselves. The lldb `po dumpDiff(a, b)` entry point is handy for ad-hoc debugging outside of tests. Bonus support for The Composable Architecture's reducer/state diffing shows it's been used beyond the basic XCTest case.
Diffing is built on Swift's Mirror reflection API, which is slow on large object graphs and has known blind spots — it doesn't always produce sensible output for enums with associated values, closures, or computed properties, so the diffs it prints for anything beyond simple structs/classes need to be sanity-checked. There's no way to exclude noisy fields (timestamps, generated IDs) from a diff, which matters a lot in real test fixtures. It's effectively a one-person project with infrequent releases, so if a future Swift Mirror behavior change breaks diffing, there's no guarantee of a quick fix. LinuxMain.swift suggests old Linux/SPM test support that may or may not still work on current toolchains.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →