Kotlin Multiplatform Mobile (KMM) is an SDK designed to simplify creating cross-platform mobile applications. With the
help of KMM, you can share common code between iOS and Android apps and write platform-specific code only where it’s
necessary. For example, to implement a native UI or when working with platform-specific APIs.
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).
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 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.
Napier 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 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.
Kodein-Log is a lightweight Kotlin/Multiplatform logging library with a simple API, that works on JVM, Android, JavaScript, iOS, as well as for all Kotlin/Native targets.
Klogger is a logger library for multiplatform Kotlin. This library provides a simple interface to do logging into suitable outputs like javascript’s console, or stdout/stderr.
Ktor 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.
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 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.
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.
Kodein-DB is a Kotlin/Multiplatform embedded NoSQL database that works on JVM, Android, Kotlin/Native and iOS. It is suited for client or mobile applications.
This is a Kotlin Multiplatform library that provides controls of maps to common code.
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.
This Kotlin multiplatform mobile utility library allows monitoring the internet connection status of the device. You can use it from shared code as well as directly from Android or iOS code.
PopKorn is a simple, powerful and lightweight Kotlin Multiplatform Dependency Injector. It doesn't need any modules or components, just use it without writing a single extra file! It supports AND, IOS, JVM, JS and NATIVE.
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.
CoRed is Redux-like implementation that maintains the benefits of Redux's core idea without the boilerplate. No more action types, action creators, switch statements or complicated setup. It is Kotlin and it has coroutine supported right out-of-the-box.
This is a Kotlin Multiplatform library that provides architecture components of Model-View-ViewModel for UI applications. Components are lifecycle-aware on Android.
Oolong is an Elm inspired Model-View-Update (MVU) implementation for Kotlin multiplatform.
Summer - Share ViewModels between iOS, Android and Web apps
Summer is a presentation level library with kotlin-multiplatform support. It can be used to share viewModels between iOS, Android and Web apps. Summer does not use code generation and thus have not significant effort on compilation time and odd build-time errors. Project aims to have out-of-box support of Android Framework, Jetpack Compose, UIKit and SwiftUI without any adapters and platform-specific limitations.
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 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.)
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.
🔑 Crypto
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.
Kotlin Multiplatform (KMP) library for MurmurHash, a non-cryptographic hash function for general hash-based lookup focused on simplicity and performance.
Kotlin multiplatform file system i/o for android, iOS, Java and NodeJS
🚀 Language extentions
Arrow - Functional companion to Kotlin's Standard Library
Arrow aims to provide a lingua franca of interfaces and abstractions across Kotlin libraries. For this, it includes the most popular data types such as Option, Either, Validated etc and functional operators such as traverse and computation blocks to empower users to write pure FP apps and libraries built atop higher order abstractions.
Kotlin serialization consists of a compiler plugin, that generates visitor code for serializable classes, runtime library with core serialization API and support libraries with various serialization formats.
Klock is a Date & Time library for Multiplatform Kotlin. It is designed to be as allocation-free as possible using Kotlin inline classes, to be consistent and portable across targets since all the code is written in Common Kotlin, and to provide an API that is powerful, fun and easy to use.
The Firebase Kotlin SDK is a Kotlin-first SDK for Firebase. It's API is similar to the Firebase Android SDK Kotlin Extensions but also supports multiplatform projects, enabling you to use Firebase directly from your common source targeting iOS, Android or JS.
This library gives access to TMDb API version 3 and 4 for mobile, desktop, and web applications. It supports Swift, Kotlin, and JavaScript by setting up as a Kotlin Multiplatform project.
GrowthBook is an open-source platform for feature flagging and a/b testing built for data teams, engineers, and product managers. It's great whether you're looking to just analyze experiment results or looking to make it easier to deploy code.
Kotlin Multiplatform BigNum library is a pure kotlin implementation of arbitrary precision arithmetic operations. It follows the same approach as Kotlin does on JVM to keep the interface familiar.
Kotlin Multiplatform (KMP) plugin and library that add support for reading resources in tests.
The plugin and a library work in tandem to provide a unified API across platforms for reading resources from each source set's resources folder.
Feel free to contribute. Follow common style and welcome! :)
License
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
terrakok/kmm-awesome
Kotlin Multiplatform Mobile (KMM) is an SDK designed to simplify creating cross-platform mobile applications. With the help of KMM, you can share common code between iOS and Android apps and write platform-specific code only where it’s necessary. For example, to implement a native UI or when working with platform-specific APIs.
Resources
Contents
Tooling
Libraries
Napier - logger

Kermit - logger

Kodein-Log - logger

Klogger - logger

Cabret - logger

KmLogging - logger

Kydra Log - logger

Ktor - http client

Apollo GraphQL - GraphQL client

kgql - GraphQL Document wrapper generator

WebRTC KMP - WebRTC client

Krossbow - WebSocket client

MOKO SocketIo - Socket.IO implementation

rsocket - RSocket Kotlin multi-platform implementation

Multiplatform-Settings - Key-Value preferences

abc-kmm-shared-storage - Key-Value storage

KVault - secure key-value storage

SQLDelight - SQLite database

Realm - NoSQL database

cache4k - In-memory Cache

SQLiter - SQLite driver

Kodein-DB - NoSQL database

MOKO Permissions - System permissions manager

abc-kmm-notifications - Notification Manager

abc-kmm-Location - Location manager

MOKO Geo - Location manager

MOKO Biometry - System biometry manager

MOKO Media - System media manager

MOKO Maps - Google/Mapbox maps manager

Kable - Coroutines-powered API for interacting with Bluetooth Low Energy devices.

Blue-Falcon - A Bluetooth kotlin multiplatform library for iOS and Android

Connectivity status - Multiplatform connectivity status

Kontrol - Debug menu

Koin - DI framework

Kodein - DI framework

DI.kt - DI for kotlin multiplatform

PopKorn - DI framework

MVI Kotlin - MVI framework

Orbit MVI - MVI framework

Redux Kotlin - Redux framework

CoRed - Opinionated Redux-like implementation

Flywheel - Redux for Kotlin Multiplatform

FlowRedux - Statemachine library with nice DSL

Mobius.kt - Mobius Framework

MOKO MVVM - MVVM framework

Oolong - MVU for Kotlin Multiplatform

Summer - Share ViewModels between iOS, Android and Web apps

Premo — Presentation Model (aka View Model) and Navigation

Decompose - componentization and navigation

multiplatform-paging - Pagination library for KMM

MOKO Crash Reporting - reporting to Crashlytics

CrashKiOS - Crash reporting for Kotlin/Native iOS applications

abc-kmm-analytics-tools - Analytics Tools

Kotest - test framework

MockingBird - test framework

Mockative - Mocking with KSP

MocKMP - Mocking with KSP

KLIP - Snapshot ((c|k)lip) manager for tests.

Libsodium - Libsodium bindings for Kotlin Multiplatform

Krypto - Pure Kotlin cryptography library

cryptohash - A set of cryptographic (and not so cryptographic) hashing functions

murmurhash - library for hashing using MurmurHash

Okio - access, store, and process your data

KorIO - access, store, and process your data

Suparnatural FS - file system i/o

Arrow - Functional companion to Kotlin's Standard Library

Result - success/failure result

kotlinx.serialization - JSON serialization

Kotlin Object Notation - Lightweight DSL to build fluid JSON trees

MOKO Parcelize - Parcelize in common code

Pbandk - Kotlin code generator and runtime for Protocol Buffers.

Kotlinx DateTime - Date & Time library

Klock - Date & Time library

Island Time - Date & Time library

Kotlinx Coroutines - Kotlin coroutines

Reaktive - Reactive Extensions

Kotlinx Atomicfu - atomic operations

Stately - Kotlin Multiplatform State Library

CoroutineWorker - Workers for Kotlin Native

Koru - Coroutine wrappers for Kotlin Native

KMP-NativeCoroutines - Swift wrapper for Kotlin Coroutines

Korau - Kotlin cORoutines AUdio

MOKO Graphics - Graphics primitives

Korim - Imaging utilities

Firebase Kotlin SDK - A Kotlin-first SDK for Firebase

VK SDK Kotlin - Unofficial VK SDK

bitcoin-kmp - Kotlin Multiplatform Bitcoin Library

MOKO Tensorflow - Mobile Kotlin TensorFlow

qBittorrent - wrapper for the qBittorrent Web API

Cognito-idp - AWS Cognito Identity Provider

TMDb API - access to TMDb API

Growth Book SDK - GrowthBook Kotlin SDK

KBigNum - Big Numbers

BigNum - Big Numbers

MOKO Resources - System resources manager

Kotlinx-Resources - text resources manager

UUID - UUID generator

ByteBuffer - Kotlin Multiplatform bytebuffer/byte[] wrapper

Kase64 - Base64 encoder/decoder

Colormath - Multiplatform Kotlin color conversion and manipulation

GEOK - Kotlin geometry library

fluid-currency - currency library

fluid-country - country library

Kmem - Data primitives

KaseChange - convert strings between various case formats

FuzzyWuzzy-Kotlin - Fuzzy string matching for Kotlin

kotlin-semver - Semantic versioning

Suggest your an idea
What libraries are you missing?
Authors
https://github.com/terrakok/kmm-awesome/graphs/contributors
Contribution guide
Feel free to contribute. Follow common style and welcome! :)
License