finds.dev← search

// the find

onevcat/Kingfisher

★ 24,404 · Swift · MIT · updated Sep 2026

A lightweight, pure-Swift library for downloading and caching images from the web.

Kingfisher is the de facto pure-Swift image loading and caching library for Apple platforms — download, cache, process, and display remote images with one line of code, for both UIKit/AppKit and SwiftUI. It's aimed at any iOS/macOS/tvOS/watchOS app that needs remote images without hand-rolling a cache layer or reaching for SDWebImage's Objective-C core.

The two-tier memory+disk cache has real knobs (expiration, size limits) and an opt-in async cache-probe path specifically to avoid blocking the caller thread on disk I/O, which is the kind of detail that only shows up after someone hit it in production. Processors compose with the `|>` operator (downsample, round corners, etc.) so you don't end up writing bespoke UIImage extensions for common transforms. The same request-building API (`KF`/`KFImage`) works nearly unchanged across UIKit and SwiftUI, so a view-layer migration doesn't force you to rewrite image-loading code. It's kept current fast — Swift 6 strict concurrency, visionOS, and Live Photo caching are already supported rather than pending.

There are now three ways to do the same thing (`.kf` extension, `KF` builder, `KFImage` for SwiftUI) plus a decade of Stack Overflow answers using older idioms, so onboarding involves figuring out which pattern is current. Each major version bump (6→7→8, and now a 7.0/8.0/dev-branch split) ships its own migration guide, meaning upgrading across majors is a deliberate reading exercise, not a drop-in bump. The current development branch already requires iOS 15+/Xcode 26+, so staying on the latest fixes means staying current on tooling — anyone supporting older OS versions is stuck on the 7.0 line. It's a single dependency covering cache, downloader, processors, and extensions for six-plus UI frameworks (UIKit, AppKit, SwiftUI, watchOS, tvOS, CarPlay); that's a lot of surface for one library to own, and it's hard to judge from outside how evenly tested each platform target actually is.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →