An awesome list that curates the best Kotlin Multiplatform libraries, tools and more.
Awesome Kotlin Multiplatform
Kotlin Multiplatform technology simplifies the development of cross-platform projects. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming.
This list contains libraries which support iOS and Android targets in first place.
Resources
๐ผ Website ๐ KMP Library Wizard ๐ Compose Multiplatform App Wizard ๐ Documentation โค๏ธ Kotlin -> Swift Interopedia ๐ Blog ๐บ YouTube ๐คฉ Samples ๐ Jetpack Compose Components ๐ Compose Multiplatform Components ๐ Compose Material 3 Gallery ๐จ Material Theme Builder ๐ Kotlin Multiplatform by Tutorials ๐ Simplifying Application Development with Kotlin Multiplatform MobileContents
๐ Tooling
Kotlin Multiplatform Mobile plugin for Android Studio
The Kotlin Multiplatform Mobile (KMM) plugin helps you develop applications that work on both Android and iOS.
CocoaPods integration
Kotlin/Native provides integration with the CocoaPods dependency manager. You can add dependencies on Pod libraries as well as use a multiplatform project with native targets as a CocoaPods dependency (Kotlin Pod).
Amper new experimental way for project configuration
Improving developer experience while configuring project setup. Kotlin multiplatform support is out-of-the-box. Project now has experimental status.
Swift Package integration
This gradle plugin provides two-way interoperability between Kotlin dependencies and Kotlin-based Swift Package Multiplatform.
MOKO KSwift gradle plugin
KSwift it's gradle plugin for generation Swift-friendly API for Kotlin/Native framework.
SKIE gradle plugin
A Swift-friendly API Generator for Kotlin Multiplatform.
CompleteKotlin gradle plugin
Gradle Plugin to enable auto-completion and symbol resolution for all Kotlin/Native platforms.
gradle-buildconfig-plugin gradle plugin
A plugin for generating BuildConstants for any kind of Gradle projects: Java, Kotlin, Groovy, etc. Designed for KTS scripts.
BuildKonfig gradle plugin
BuildConfig for Kotlin Multiplatform Project
Plugin to facilitate debugging iOS applications using Kotlin Native in Xcode. Defines Kotlin files as source code, with basic highlighting. Allows you to set breakpoints and includes llvm support to view data in the debug window. Xcode does not officially support custom language definitions, but they also don't explicitly block them.
Dokka documentation generation tool
Dokka is a documentation engine for Kotlin, performing the same function as javadoc for Java. Just like Kotlin itself, Dokka fully supports mixed-language Java/Kotlin projects. It understands standard Javadoc comments in Java files and KDoc comments in Kotlin files, and can generate documentation in multiple formats including standard Javadoc, HTML and Markdown.
compose-stability-analyzer - composable stability plugin
๐ฆ Real-time analysis of Jetpack Compose composable functions' stability directly within Android Studio or IntelliJ.
Nucleus - desktop platform utils
Nucleus is the native desktop platform for the JVM. Combined with Compose Multiplatform, it forms the most complete, most performant, and most deeply integrated desktop application stack ever built โ on any language, any runtime, any platform.
Swift Klib gradle plugin
Gradle Plugin to build Swift code as part of your Kotlin Multiplatform project. With this plugin, you can access Swift-only iOS libraries, such as CryptoKit and experiment with Swift to Kotlin interoperability.
parcelize-darwin gradle plugin
Kotlin/Native compiler plugin that generates Parcelable implementations for Darwin (Apple) targets. Allows writing Parcelable classes for all Darwin targets, similary to the Android's kotlin-parcelize plugin. Can be also used together with the kotlin-parcelize plugin to write Parcelable classes in the commonMain source set.
AboutLibraries gradle plugin
Collects all dependencies and licenses of gradle projects (Kotlin Multiplatform) and provides an easy to integrate Attribution / Open Source library UI to integrate in Compose / Android targets.
Power-Assert gradle plugin
The Kotlin Power-assert compiler plugin improves the debugging experience by providing detailed failure messages with contextual information. It simplifies the process of writing tests by automatically generating intermediate values in failure messages. It helps you understand why a test failed without needing complex assertion libraries.
Valkyrie IntelliJ IDEA / Android Studio plugin
Convert SVG/XML icons into Compose ImageVector with convenient code formatting. Plugin provides ability to one-click conversion or icon pack creation with batch export.
KMPify migration tool
Automates the migration of Android Jetpack Compose projects to Compose Multiplatform by converting resource imports, annotations, and references. Built with KMP and Compose Desktop, it speeds up tedious migration tasks.
Libraries
๐ Log
Napier - loggerNapier is a logger library for Kotlin Multiplatform. It supports for the Android, Darwin(iOS, macOS, watchOS, tvOS), JVM, JavaScript. Logs written in common module are displayed on logger viewer of each platform.
Kermit - logger
Kermit is a Kotlin Multiplatform logging utility with composable log outputs. The library provides prebuilt loggers for outputting to platform logging tools such as Logcat and NSLog.
KmLogging - logger
Kotlin multiplatform logging. High performance, composable and simple to use.
kotlin-logging - logger
Lightweight Multiplatform logging framework for Kotlin, written in Pure Kotlin. A convenient and performant logging facade.
๐ Network
Ktor - http clientKtor includes a multiplatform asynchronous HTTP client, which allows you to make requests and handle responses, extend its functionality with plugins (formerly known as features), such as authentication, JSON serialization, and so on.
Ktorfit - Retrofit for Kotlin Multiplatform on KTS
HTTP client / Kotlin Symbol Processor for Kotlin Multiplatform (Android,Js, Jvm , Native, iOS) using KSP and Ktor clients inspired by Retrofit https://foso.github.io/Ktorfit
Apollo GraphQL - GraphQL client
A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.
WebRTC KMP - WebRTC client
WebRTC Kotlin Multiplatform SDK
Krossbow - WebSocket client
A coroutine-based Kotlin multi-platform WebSocket client and STOMP 1.2 client over web sockets.
MOKO SocketIo - Socket.IO implementation
This is a Kotlin Multiplatform library that provides real-time, event-based communication for iOS and Android.
rsocket - RSocket Kotlin multi-platform implementation
RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets and Aeron.
kt-search - Elasticsearch & OpenSearch client
Multi platform kotlin client for Elasticsearch & Opensearch with easily extendable Kotlin DSLs for queries, mappings, bulk, and more.
๐ฆ Storage
Multiplatform-Settings - Key-Value preferencesThis is a Kotlin library for Multiplatform apps, so that common code can persist key-value data
KVault - secure key-value storage
It acts as an iOS Keychain wrapper and implements encrypted SharedPreferences for Android.
SQLDelight - SQLite database
SQLDelight generates typesafe kotlin APIs from your SQL statements. It verifies your schema, statements, and migrations at compile-time and provides IDE features like autocomplete and refactoring which make writing and maintaining SQL simple.
Realm - NoSQL database
Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Kotlin SDK for Realm, which runs on Kotlin Multiplatform and Android.
Kotbase - NoSQL JSON document database
Kotlin Multiplatform library for Couchbase Liteโa lightweight, embedded, NoSQL JSON document databaseโsupporting SQL++, key/value, and full-text search queries; observability; binary attachments; and data sync.
Kotlin Multiplatform AppDirs - User storage/settings/config directories for all platforms (desktop and Android)
Get app data directory in all desktops (Linux/Mac/Windows) as well as user-scoped data directory on Android
Store 5 - Kotlin Library for Async Data Loading and Caching
A Store is responsible for managing a particular data request. When you create an implementation of a Store, you provide it with a Fetcher, a function that defines how data will be fetched over network. You can also define how your Store will cache data in-memory and on-disk.
cache4k - In-memory Cache
Provides a simple in-memory key-value cache for Kotlin Multiplatform, with support for time-based (expiration) and size-based evictions.
SQLiter - SQLite driver
SQLiter is a SQLite driver for Kotlin Native, currently Apple and Windows variants. It is designed to serve as a driver to power user-friendly libraries rather than something to use directly. Currently SQLiter powers the SQLDelight library on native clients.
SQLlin - Low-level API for SQLite in Kotlin Multiplatform
SQLlin is a Kotlin Multiplatform SQLite library that based on DSL and KSP. You can write SQL statements with your Kotlin code and these can be verified by Kotlin compiler.
KStore - File-based object storage
A Kotlin multiplatform library that assists in saving and restoring objects to and from disk
KSafe - Encrypted key-value storage with Hardware-Backed Security
An Effortless Enterprise-Grade Encrypted key-value storage for Kotlin Multiplatform and Native Android with Hardware-Backed Security.
Universal-Cache - Kotlin caching and request sharing
Kotlin Flow caching and request sharing. Main idea: don't request data more times than it's needed.
kotlin-cacheable - Annotation-based caching library
Kotlin Cacheable is an annotation-based caching library for Kotlin Multiplatform.
๐ฑ Device
MOKO Permissions - System permissions managerKotlin Multiplatform library for providing runtime permissions on iOS & Android
Grant - Permission library for Android & iOS
Kotlin Multiplatform permission library for Android & iOS. No Fragment/Activity needed, ViewModel-first, Compose Multiplatform ready. Fixes Android dead clicks & iOS deadlocks.
Alert-KMP - Local and Native Notifications Library
Native notifications, Toasts, and Alerts for Kotlin Multiplatform.
MOKO Geo - Location manager
Geolocation access for mobile (android & ios) Kotlin Multiplatform development
MOKO Biometry - System biometry manager
This is a Kotlin Multiplatform library that provides authentication by FaceId and TouchId (Fingerprint)
MOKO Media - System media manager
This is a Kotlin Multiplatform library that provides media picking in common code (photo/video) and video player controls.
MediaPlayer-KMP - A Comprehensive Media Player for Kotlin Multiplatform
Features: Platform-agnostic support for Android, iOS, Web, and Desktop. Compose Multiplatform integration, YouTube video and audio playback, streaming support, event handling, ReelsView support, AutoPlay, and Authentication Token implementation.
Kable - Coroutines-powered API for interacting with Bluetooth Low Energy devices.
>Kotlin Asynchronous Bluetooth Low Energy provides a simple Coroutines-powered API for interacting with Bluetooth Low Energy devices.
Blue-Falcon - A Bluetooth kotlin multiplatform library for iOS and Android
>A Bluetooth "Cross Platform" Kotlin Multiplatform library for iOS, Android, MacOS, Raspberry Pi and Javascript. Bluetooth in general has the same functionality for all platforms, e.g. connect to device, fetch services, fetch characteristics.
Kontrol - Debug menu
A Kotlin Multiplatform library for creating debug menu.
KMPNotifier - Firebase Push Notification library for iOS and Android
Kotlin Multiplatform Push Notification Library using Firebase for iOS and Android.
Compass - ๐งญ Location toolkit for geocoding, geolocation, and autocomplete
Compass is a Kotlin Multiplatform library location toolkit. It provides a set of tools for working with location data, including geocoding, reverse geocoding, and more.
Connectivity - Retrieve and monitor internet connectivity
Connectivity provides network monitoring capabilities for multiplatform projects. It can monitor network connectivity using native APIs on Android and Apple devices, or by making HTTP requests to specified hosts.
kScan - Barcode Scanner
KScan is a Compose Multiplatform library that makes it easy to scan barcodes in your apps
Alarmee Alarm scheduler with local notifications.
A Kotlin/Compose Multiplatform library for easy alarm and local notification scheduling on both Android and iOS.
Camposer - Compose Multiplatform camera library for Android and iOS.
Camera library built with Compose Multiplatform for photo/video capture, zoom, focus-on-tap, flash/torch, exposure control, and optional code scanning.
CountryPicker-KMP - Country selection with Dial codes, Currencies, Flags and ISO codes
A lightweight KMP library that simplifies country selection by providing Country enum with Dial codes, Currencies, Flags and ISO codesโAdopted for Android, iOS, Desktop, and Web.
๐ Dependency Injection
Koin - DI frameworkA pragmatic lightweight dependency injection framework for Kotlin developers. Koin is a DSL, a light container and a pragmatic API
Kodein - DI framework
Kodein is a very simple and yet very useful dependency retrieval container.
kotlin-inject - DI framework
A compile-time dependency injection library for kotlin.
Koject - KSP DI framework
Koject is a DI Container Library for Kolin Multiplatform using KSP.
DI.kt - DI for kotlin multiplatform
Simple DI with compile-time dependency graph validation for kotlin multiplatform. It uses IR to create method's bodies with dependency injection.
Metro - DI framework
Kotlin compiler pluginโbased DI combining ideas from Dagger, Anvil, and KotlinโInject with added features.
๐ Architecture
KmpEssentialsEvas - Events and States for Kotlin
Evas is a library providing
Events: A performant, scalable and most importantly scoped Event-Channel integrated with coroutines. States: A pragmatic state container.
MVI Kotlin - MVI framework
MVIKotlin is a Kotlin Multiplatform framework that provides a way of (not only) writing shared code using MVI pattern. It also includes powerful debug tools like logging and time travel.
Orbit MVI - MVI framework
Orbit is a Redux/MVI-like library for KMM, targetting Android and iOS.
FlowMVI - Plugin-based MVI framework
FlowMVI is a KMP MVI library based on coroutines with a rich DSL and a powerful plugin system.
KMP-ObservableViewModel - KMP ViewModels
A library (previously known as KMM-ViewModel) that allows you to use AndroidX/Kotlin ViewModels with SwiftUI.
VisualFSM - FSM-based MVI framework
VisualFSM is a Kotlin Multiplatform library for implements an FSM-based (Finite-state machine) MVI pattern and a set of tools for visualization and analysis of FSM's diagram of states.
Redux Kotlin - Redux framework
Redux implementation for Kotlin (supports multiplatform JVM, native, JS, WASM)
FlowRedux - Statemachine library with nice DSL
Building async. running Kotlin Multiplatform state machine made easy with a DSL and coroutines.
Mobius.kt - Mobius Framework
Kotlin Multiplatform Mobius implementation.
MOKO MVVM - MVVM framework
This is a Kotlin Multiplatform library that provides architecture components of Model-View-ViewModel for UI applications. Components are lifecycle-aware on Android.
Premo โ Presentation Model (aka View Model) and Navigation
Premo is a Kotlin Multiplatform library that helps to implement the Presentation Layer and share it on iOS, Android, Desktop and Web. Focus on writing logic instead of solving common and boring UI related issues: lifecycle, persistence, navigation, etc.
Decompose - componentization and navigation
Decompose is a Kotlin Multiplatform library for breaking down your code into lifecycle-aware business logic components (aka BLoC), with routing functionality and pluggable UI (Jetpack Compose, Android Views, SwiftUI, JS React, etc.)
Decompose-Router - navigation
A Compose-multiplatform navigation library that leverage Decompose to create an API inspired by Conductor
Ballast - State Management framework
Opinionated Application State Management framework for Kotlin Multiplatform
Essenty/Lifecycle - lifecycle handling in the Kotlin Multiplatform common code
Essenty provides the Lifecycle API to help with lifecycle handling in the common code. It is very similar to Android Activity lifecycle.
multiplatform-paging - Pagination library for KMM by Cash App
A Kotlin Multiplatform library for pagination with the same API as AndroidX Paging
lazy-pagination-compose - Pagination library for Compose Multiplatform
Intuitive and customizable Compose Multiplatform pagination composables that are built on top of lazy scrollables.
kmp-viewmodel - Kotlin Multiplatform ViewModel
A Kotlin Multiplatform library that provides shared MVVM. Supports Android Parcelable, Kotlin Parcelize, AndroidX SavedStateHandle for restoring state after process death.
KStateMachine - Multiplatform state machine library with coroutines support
KStateMachine is a Kotlin DSL library for creating state machines and statecharts.
Rinku - Deep Link Handling for Kotlin Multiplatform
A Kotlin Multiplatform library for deeplink handling
Resaca - Scope ViewModels to a Composable, surviving config. changes and navigation
Scope ViewModels (or plain objects) to a Composable, surviving configuration changes and navigation, to break your app's logic into smaller and reusable components.
Circuit - Compose-driven architecture for Kotlin and Android applications.
Compose-first Kotlin framework that simplifies building multiplatform applications by unifying UI and business logic through a declarative, unidirectional data flow architecture.
๐ Analytics
CrashKiOS - Crash reporting for Kotlin/Native iOS applicationsThin library that provides symbolicated crash reports for Kotlin code on iOS.
NSExceptionKt - Better crash reports on Apple platforms
Unhandled Kotlin exceptions logging for Apple platforms.
trckr - KSP processor
KSP processer that simplifies the collection of analytics
๐ฉบ Test
Kotest - test frameworkPowerful, elegant and flexible test framework for Kotlin with additional assertions, property testing and data driven testing
Fast, powerful and easy-to-use Kotlin test framework, built from the ground up for Kotlin Multiplatform and coroutines
Turbine - test library
A small testing library for kotlinx.coroutines Flow
MockingBird - test framework
A Koltin multiplatform library that provides an easier way to mock and write unit tests for a multiplatform project
Mockative - Mocking with KSP
Mocking for Kotlin/Native and Kotlin Multiplatform using the Kotlin Symbol Processing API (KSP)
MocKMP - Mocking with KSP
A Kotlin/Multiplatform Kotlin Symbol Processor that generates Mocks & Fakes.
Mokkery - Mocking library
Mokkery is a mocking library for Kotlin Multiplatform, easy to use, boilerplate-free and compiler plugin driven. Highly inspired by MockK.
KLIP - Snapshot ((c|k)lip) manager for tests.
Kotlin Multiplatform snapshot ((c|k)lip) manager for tests. Automatically generates and asserts against a persistent Any::toString() representation of the object until you explicitly trigger an update. Powered by kotlin compiler plugin to inject relevant keys and paths.
Assertk - Fluent assertions library
Fluent assertions library for Kotlin with full Multiplatform support.
๐ Crypto
Cryptography-Kotlin - Type-safe Multiplatform cryptography library for KotlinThe library doesnโt implement any cryptography algorithm on its own, but wraps well-known future-proof solutions like OpenSSL 3.x, WebCrypto or JCA with type-safe multiplatform API providing uniform experience with aligned default behavior, and same expected results using identical parameters while allowing to use platform-specific capabilities.
Libsodium - Libsodium bindings for Kotlin Multiplatform
Libsodium bindings project uses libsodium c sources and libsodium.js to provide a kotlin multiplatform wrapper library for libsodium.
korlibs-crypto - Pure Kotlin cryptography library
SecureRandom, Hash (MD5/SHA1/SHA256), AES
cryptohash - A set of cryptographic (and not so cryptographic) hashing functions
xxHash, Blake, HMAC, Keccak, MD5, SHA, etc
murmurhash - library for hashing using MurmurHash
Kotlin Multiplatform (KMP) library for MurmurHash, a non-cryptographic hash function for general hash-based lookup focused on simplicity and performance.
Diglol Crypto - Diglol Crypto for Kotlin Multiplatform.
Lots of crypto algorithms for Kotlin Multiplatform.
KotlinCrypto/MACs - Message Authentication Code algorithms for Kotlin Multiplatform
Message Authentication Code algorithms for Kotlin Multiplatform: HmacMD5, HmacSHA1, HmacSHA224, HmacSHA256, HmacSHA384, HmacSHA512, HmacSHA512/224, HmacSHA512/256
KotlinCrypto/hash - Cryptographic hash functions for Kotlin Multiplatform
Cryptographic hash functions for Kotlin Multiplatform: MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
KotlinCrypto/secure-random - cryptographically secure random data from system sources [