Calf for Compose Multiplatform: adaptive UI and native APIs
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...).
At a glance
- What is it?
- Calf is a Kotlin library for Compose Multiplatform applications that need adaptive UI components and platform-specific integrations such as file picking, WebView, permissions, and Cupertino icons. It supports Android, iOS, Desktop, Web, Js, and Wasm, but several planned artifacts remain unfinished.
- Who is it for?
- Adopt Calf when a Compose Multiplatform application needs several cross-platform UI or platform API wrappers and can accept its Kotlin and Compose compatibility matrix. Do not choose it for planned geolocation, maps, navigation, media, or notifications support because the README lists those artifacts as coming soon.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Calf's cross-platform boundary
Calf addresses a specific Compose Multiplatform problem: the UI can be shared, but some behavior still depends on the host operating system. A cross-platform application may need a file picker, a WebView, permission handling, platform icons, or components that adapt to different platform conventions. Calf places those integrations behind a library organized around artifacts such as calf-ui, calf-file-picker, calf-webview, calf-permissions, and calf-cupertino-icons.
The intended audience is Kotlin developers building Compose Multiplatform applications rather than developers looking for a standalone application framework. The repository includes sample/android, sample/common, sample/desktop, sample/ios, sample/web-js, and sample/web-wasm directories, so the project layout covers mobile, desktop, and web targets. The README states that the main focus is currently Android and iOS, while more Desktop components are planned. That distinction matters. Broad target coverage does not mean that every module has the same maturity or feature set.
Calf's name expands to Compose Adaptive Look & Feel. Its scope is narrower than a general-purpose responsive layout engine. The repository description emphasizes adaptive UIs and access to platform-specific APIs, while the artifact table presents concrete wrappers. A project that needs only ordinary Compose layouts may not need Calf. A project that repeatedly writes platform-specific implementations for file selection, permissions, or WebViews is the clearer candidate.
The artifact structure behind Calf
The README separates Calf into published Maven artifacts instead of presenting one undifferentiated dependency. calf-ui is described as the adaptive UI components module. calf-file-picker is a native File Picker wrapper, calf-webview is a WebView component, and calf-permissions provides an API for handling permissions. calf-cupertino-icons contains cross-platform Cupertino icons. The artifact table assigns Android, iOS, Desktop, and Web, including Js and Wasm, to the UI, file picker, WebView, and Cupertino icon modules. calf-permissions is listed for Android and iOS.
That packaging is useful when an application needs only one integration. It also makes platform support visible before implementation begins. An application that targets Android and iOS can compare the permissions module against the broader artifact list. A Desktop application can see which modules are marked as supported, while a web application can check the same row rather than assuming that every native capability has a web implementation.
The repository contains related modules beyond the principal artifact table, including calf-core, calf-io, calf-share, calf-camera-picker, calf-file-picker-coil, calf-maps, calf-media, calf-navigation, calf-notifications, and calf-geo. The README does not document every such directory as a released Maven artifact. Based on the repository layout, code may exist beyond the stable published modules. For adoption, the artifact table is the clearer source for determining whether a dependency is currently offered.
Kotlin and Compose compatibility constraints
Calf is tied to compatible Kotlin and Compose Multiplatform versions. The compatibility table associates Calf 0.14.0 with Kotlin 2.4.20 and Compose 1.12.0. Calf 0.13.0 is paired with Kotlin 2.4.10 and Compose 1.11.1. Calf 0.12.0, 0.11.0, and 0.10.0 are listed with Kotlin 2.3.20 and Compose 1.10.3. Earlier entries include Calf 0.9.0 with Kotlin 2.2.21 and Compose 1.9.2, and Calf 0.8.0 with Kotlin 2.1.21 and Compose 1.8.0.
This is more than a version label. A library built for a particular Compose generation can impose changes on an application's build configuration, especially on Android. The README specifically says that Calf 0.14.0 and later are built on Compose Multiplatform 1.12, whose Android artifacts require compileSdk = 37. It also states that Android Gradle Plugin 9.4 is the first release supporting that SDK level. Calf's Android minSdk remains 23.
Therefore, an existing application should compare its existing Kotlin, Compose, Android Gradle Plugin, and compileSdk values before selecting a Calf version. An application unable to move to the required Android toolchain cannot simply add the newest artifact without considering those constraints. The version table also shows that Calf has a substantial compatibility history, but it does not mean one release supports every platform and toolchain equally.
Getting started through Calf's documentation
The README links to a Getting Started page for installation, but it does not provide the exact dependency coordinates, Gradle syntax, repository declarations, or source-set setup steps. This review does not invent an install command or configuration snippet. The project points new users to its documentation entry page:
https://mohamedrejeb.github.io/Calf/installation/
That page is the first setup reference for this repository. The README also identifies documentation sections for adaptive UI and WebView. A first use, based on the documented product boundaries, would be to inspect the module matching the immediate need, such as calf-ui or calf-file-picker, then follow the installation instructions for the target platforms. The web demo is separately linked at https://calf-library.netlify.app/ and can provide a visible reference for the components, although the README does not describe it as a substitute for application setup.
The first application check should happen before adding all artifacts. Confirm that the chosen Calf version matches the Kotlin and Compose versions already used by the project. On Android, Calf 0.14.0 and later also require compileSdk = 37 and a compatible Android Gradle Plugin. After those constraints are resolved, the sample directories can serve as repository references for Android, common code, Desktop, iOS, Web Js, and Web Wasm targets. The README does not document a rollback procedure, so an adoption plan should not assume that reverting a Calf version is a documented operation.
What Calf does not yet cover
The artifact table gives Calf a clear development boundary. calf-geo for geolocation, calf-navigation for native navigation, calf-map for native maps, calf-media for video and audio, and calf-notification for notifications are each marked Coming soon. Those labels are important. A project needing geolocation or native maps should not treat the existence of the corresponding repository directory as evidence of a published, ready-to-use API.
The permissions module also has a narrower platform scope than the general UI modules. The table lists calf-permissions for Android and iOS, while calf-ui, calf-file-picker, calf-webview, and calf-cupertino-icons are listed across Android, iOS, Desktop, and Web, including Js and Wasm. A Desktop or Web requirement involving permissions therefore needs direct verification rather than extrapolation from the presence of other cross-platform artifacts.
Calf is also the wrong tool when the application needs a complete navigation graph, a media player, a notification manager, or a geolocation abstraction and cannot implement those features independently. It does not replace a native SDK when an application requires platform behavior outside the documented wrappers. The README also does not establish the depth of individual APIs, error handling model, test coverage, or migration guarantees. Those are adoption checks, not capabilities claimed by the README.
Maintenance, releases, and Apache-2.0
The repository is not archived, and the last push was on 2026-10-15. Recent releases include v0.14.0 on 2026-09-13, v0.13.0 on 2026-07-27, and v0.12.0 on 2026-04-16. Those dates indicate recent release activity in the repository history, but they do not by themselves establish compatibility with every current toolchain or guarantee the stability of unfinished artifacts.
Upgrade cost is visible through the compatibility matrix. Moving between Calf versions may require changing Kotlin, Compose Multiplatform, Android Gradle Plugin, or compileSdk values. For Calf 0.14.0 and later, the README calls out the Android requirement for compileSdk = 37. A team should treat dependency upgrades as build-system work, not only as a library version change.
The repository is licensed under Apache-2.0. That identifier indicates the project's declared license, but this review does not provide legal interpretation or advice about how the license applies to a particular product. The repository also includes LICENSE, CODE_OF_CONDUCT.md, and conventional Gradle build files. The README does not document a formal support policy, long-term support window, or compatibility promise beyond its version table.
Editorial conclusion
Adopt Calf when a Compose Multiplatform application needs several cross-platform UI or platform API wrappers and can accept its Kotlin and Compose compatibility matrix. Do not choose it for planned geolocation, maps, navigation, media, or notifications support because the README lists those artifacts as coming soon. Verify first that your target platform, Kotlin version, Compose version, Android SDK level, and required artifact are supported by the selected Calf release.
Frequently asked questions
What is Calf used for in Compose Multiplatform?
Calf is used to add adaptive UI components and platform-specific APIs to Compose Multiplatform applications. The documented modules include adaptive UI, file picking, WebView, permissions, and Cupertino icons.
Which platforms does Calf support?
The artifact table lists Android, iOS, Desktop, and Web, including Js and Wasm, for calf-ui, calf-file-picker, calf-webview, and calf-cupertino-icons. calf-permissions is listed for Android and iOS only.
How do I install Calf 0.14.0?
The README links to the Calf Getting Started documentation at https://mohamedrejeb.github.io/Calf/installation/. It does not show the exact Gradle dependency or configuration steps, so those should be taken from that installation page.
What Kotlin and Compose versions work with Calf 0.14.0?
The compatibility table lists Kotlin 2.4.20 and Compose 1.12.0 for Calf 0.14.0. On Android, Calf 0.14.0 and later require compileSdk = 37, while Android minSdk remains 23.
Does Calf provide maps, navigation, and media components?
Not as documented released artifacts. calf-map, calf-navigation, and calf-media are marked Coming soon, as are calf-geo and calf-notification.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/mohamedrejeb-calf)Was this useful?