finds.dev← search

// the find

MohamedRejeb/Calf

★ 1,616 · Kotlin · Apache-2.0 · updated Jun 2026

Calf is a library that allows you to easily create adaptive UIs and access platform specific APIs with Compose Multiplatform (Adaptive UI, File Picker, WebView, Permissions...).

Calf is a Kotlin Multiplatform library that wraps platform-specific APIs — file picker, WebView, permissions, adaptive UI components — behind a common Compose Multiplatform interface. It targets Android, iOS, desktop (JVM), and web (JS/Wasm). The primary audience is KMP developers who don't want to write expect/actual boilerplate for common UI primitives on every platform.

The modular artifact structure is well-designed: you pull in only what you need (calf-file-picker, calf-webview, etc.) rather than one fat dependency. The desktop file picker using a Rust native bridge via JNI is a practical solution to the JFileChooser problem on macOS, where the Swing dialog looks wrong in a Compose app. The compatibility table is genuinely useful — the Kotlin/Compose version matrix tells you exactly what to pin without guessing. Active maintenance is evident: the library is tracking Kotlin 2.3.20 and Compose 1.10.3, which are very recent releases.

Several planned modules (geo, navigation, maps, media, notifications) are listed as 'coming soon' and have been for a while — the README has been making those promises since early versions. The desktop file picker bundles a precompiled Rust binary extracted at runtime, which is a supply chain concern most teams don't sign up for knowingly. There are no tests visible for any platform beyond a MimeTypes unit test in the desktop module, which is thin coverage for code that bridges into native APIs where subtle bugs are common. The calf-webview on desktop is backed by JCEF, which brings its own versioning headaches and a large footprint.

View on GitHub → Homepage ↗

// 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 →