arkivanov / kmm-awesome

An awesome list that curates the best KMM libraries, tools and more.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Awesome KMM

Awesome GitHub Repo stars Maven Central

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

πŸ–Ό KMM website
πŸ“œ KMM blog
πŸ“Ί KMM YouTube
πŸ“‹ KMM Documentation

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.

The Kotlin Multiplatform Mobile (KMM) plugin for AppCode helps you develop applications for Android and iOS using the unified Gradle project model.

πŸ›  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).

πŸ›  MOKO KSwift gradle plugin

KSwift it's gradle plugin for generation Swift-friendly API for Kotlin/Native framework.

πŸ›  CompleteKotlin gradle plugin

Gradle Plugin to enable auto-completion and symbol resolution for all Kotlin/Native platforms.

πŸ›  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.

Libraries

πŸ“‹ Log

Napier - logger GitHub Repo stars Maven Central

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 - logger GitHub Repo stars Maven Central

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.

Klogger - logger GitHub Repo stars Maven Central

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.

🌎 Network

Ktor - http client GitHub Repo stars Maven Central

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. In this tutorial, we'll create a simple client application for sending a request and receiving a response.

Apollo GraphQL - GraphQL client GitHub Repo stars Maven Central

A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.

WebRTC KMP - WebRTC client GitHub Repo stars Maven Central

WebRTC Kotlin Multiplatform SDK

Krossbow - WebSocket client GitHub Repo stars Maven Central

A coroutine-based Kotlin multi-platform WebSocket client and STOMP 1.2 client over web sockets.

MOKO SocketIo - Socket.IO implementation GitHub Repo stars Maven Central

This is a Kotlin MultiPlatform library that provides real-time, event-based communication for iOS and Android.

πŸ“¦ Storage

Multiplatform-Settings - Key-Value preferences GitHub Repo stars Maven Central

This is a Kotlin library for Multiplatform apps, so that common code can persist key-value data

SQLDelight - SQLite database GitHub Repo stars Maven Central

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 GitHub Repo stars Maven Central

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 - SQLite driver GitHub Repo stars Maven Central

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 - NoSQL database GitHub Repo stars Maven Central

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.

πŸ“± Device

MOKO Permissions - System permissions manager GitHub Repo stars Maven Central

Kotlin MultiPlatform library for providing runtime permissions on iOS & Android

MOKO Geo - Location manager GitHub Repo stars Maven Central

Geolocation access for mobile (android & ios) Kotlin Multiplatform development

MOKO Biometry - System biometry manager GitHub Repo stars Maven Central

This is a Kotlin Multiplatform library that provides authentication by FaceId and TouchId (Fingerprint)

MOKO Media - System media manager GitHub Repo stars Maven Central

This is a Kotlin MultiPlatform library that provides media picking in common code (photo/video) and video player controls.

MOKO Maps - Google maps manager GitHub Repo stars Maven Central

This is a Kotlin Multiplatform library that provides controls of maps to common code.

πŸ’‰ Dependency Injection

Koin - DI framework GitHub Repo stars Maven Central

A pragmatic lightweight dependency injection framework for Kotlin developers. Koin is a DSL, a light container and a pragmatic API

Kodein - DI framework GitHub Repo stars Maven Central

Kodein-DI is a very simple and yet very useful dependency retrieval container.

PopKorn - DI framework GitHub Repo stars Maven Central

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.

πŸ— Architecture

MVI Kotlin - MVI framework GitHub Repo stars Maven Central

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.

Redux Kotlin - Redux framework GitHub Repo stars Maven Central

Redux implementation for Kotlin (supports multiplatform JVM, native, JS, WASM)

MOKO MVVM - MVVM framework GitHub Repo stars Maven Central

This is a Kotlin Multiplatform library that provides architecture components of Model-View-ViewModel for UI applications. Components are lifecycle-aware on Android.

πŸ” Analytics

MOKO Crash Reporting - reporting to Crashlytics GitHub Repo stars Maven Central

Fatal and Non-Fatal reporting to Crashlytics for Kotlin Multiplatform Mobile

🩺 Test

Kotest - test framework GitHub Repo stars Maven Central

Powerful, elegant and flexible test framework for Kotlin with additional assertions, property testing and data driven testing

πŸ”‘ Crypto

Libsodium - Libsodium bindings for Kotlin Multiplatform GitHub Repo stars Maven Central

Libsodium bindings project uses libsodium c sources and libsodium.js to provide a kotlin multiplatform wrapper library for libsodium.

πŸ“ File

Okio - access, store, and process your data GitHub Repo stars Maven Central

Okio is a library that complements java.io and java.nio to make it much easier to access, store, and process your data.

KorIO - access, store, and process your data GitHub Repo stars Maven Central

KorIO is a library for Charsets, Encodings, Checksums, Compression, I/O, Streams, Virtual File System, Networking, Http, WebSockets, Serialization…

Suparnatural FS - file system i/o GitHub Repo stars Maven Central

Kotlin multiplatform file system i/o for android, iOS, Java and NodeJS

πŸ—ƒ Serializer

kotlinx.serialization - JSON serialization GitHub Repo stars Maven Central

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.

MOKO Parcelize - Parcelize in common code GitHub Repo stars Maven Central

This is a Kotlin Multiplatform library that supports Parcelize in common code.

⏰ Date-Time

Kotlinx DateTime - Date & Time library GitHub Repo stars Maven Central

A multiplatform Kotlin library for working with date and time.

Klock - Date & Time library GitHub Repo stars Maven Central

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.

Island Time - Date & Time library GitHub Repo stars Maven Central

A Kotlin Multiplatform library for working with dates and times, heavily inspired by the java.time library.

➿ Asynchronous

Kotlinx Coroutines - Kotlin coroutines GitHub Repo stars Maven Central

Library support for Kotlin coroutines

Reaktive - Reactive Extensions GitHub Repo stars Maven Central

Kotlin multiplatform implementation of Reactive Extensions.

Kotlinx Atomicfu - atomic operations GitHub Repo stars Maven Central

The idiomatic way to use atomic operations in Kotlin.

Stately - Kotlin Multiplatform State Library GitHub Repo stars Maven Central

Stately is a state utility library to facilitate state management in Kotlin Multiplatform.

CoroutineWorker - Workers for Kotlin Native GitHub Repo stars Maven Central

Kotlin Coroutine-based workers for native

Koru - Coroutine wrappers for Kotlin Native GitHub Repo stars Maven Central

Automatically generates wrappers for suspend functions and Flow for easy access from Swift code in Kotlin Multiplatform projects.

πŸ”§ Utils

UUID - UUID generator GitHub Repo stars Maven Central

Kotlin Multiplatform UUID

MOKO Resources - System resources manager GitHub Repo stars Maven Central

This is a Kotlin MultiPlatform library that provides access to the resources on iOS & Android with the support of the default system localization.

MOKO Graphics - Graphics primitives GitHub Repo stars Maven Central

This is a Kotlin Multiplatform library that provides graphics primitives to common code.

Kmem - Data primitives GitHub Repo stars Maven Central

Kmem is bit, array and fast memory utilities library for multiplatform Kotlin

KBigNum - Big Numbers GitHub Repo stars Maven Central

Library for Big Numbers

BigNum - Big Numbers GitHub Repo stars Maven Central

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.

KaseChange - convert strings between various case formats GitHub Repo stars Maven Central

Multiplatform Kotlin library to convert strings between various case formats including Camel Case, Snake Case, Pascal Case and Kebab Case

Sample apps

todo

Authors

https://github.com/terrakok/kmm-awesome/graphs/contributors

Contribution guide

Feel free to contribute. Follow common style and welcome! :)

About

An awesome list that curates the best KMM libraries, tools and more.