Libraries & Plugins
This list includes libraries I have used, libraries that I have seen used in previous offerings of this course, and libraries that I have seen recommended by others online.
Apart from the list here, there are also maintained lists:
- JetBrains KLibs.io is a JetBrains search engine for KMP (multiplatform) libraries.
- Awesome KMM is a curated list of community-contributed libraries.
⚠️
Please read documentation carefully and make sure to use the most recent version of a library. I strongly recommend testing a library against a small sample project before fully committing to it.
Libraries
Official Libraries
These official libraries supported by JetBrains.
- Exposed is a DSL/DAO database framework. SQLDelight is more common for Android.
- Kandy is a plotting library, for displaying charts and graphs. Beta IIRC.
- Kotlinx datetime is the official datetime library.
- Kotlinx is the official serialization library.
- Ktor is a library for building networked clients and services.
- Markdown is a parsing library and markdown component.
Third-Party Libraries
These libraries are released and supported by the community. We only list libraries that claim to be multiplatform
, meaning that they will run on Android, Desktop, or any supported platform.
- Apache PDFBox: Java library fork working with PDF files.
- Appdirs: Find special folders for your platform e.g., Windows Pictures folder.
- Clickt: Command-line interface framework. Used for console apps only.
- Coil: Image loading library, uses coroutines.
- File Picker: Compose multiplatform file picker.
- Keval: A Kotlin mini library for math expression string evaluation.
- Kotter: Declarative API for dynamic console applications.
- Ksoup: Kotlin multiplatform HTML/XML parser. Port of Jsoup to Kotlin.
- kubriko: KMP and Compose multiplatform 2D game engine(!).
- Multiplatform Settings: Multiplatform key:value storage.
- Okio: Multiplatform IO library. Useful for working with byte streams.
- SQLDelight: Database integration. Alternative to Exposed for Android.
- Voyager: Navigation library. Alternative to Odyssey. See Meet Voyager.
Plugins
Core Plugins
These are included with with Gradle. See Gradle documentation.
- java: Base plugin for many JVM projects. Adds Java compilation.
- application: Extends Java plugin to create a runnable application. Use this for console applications.
- java-library: Extends Java plugin to support building a Java library. Use this if you are building a shared module in a multi-project build.
Community Plugins
Community plugins that can extend your build’s functionality. Search the Gradle plugin portal.
- Dependency Analysis can analyze your dependencies and locate errors in config files. Use this if you get strange dependency errors!
- lumo-ui: customizable Ul components for Compose (plugin, not a library!)
- Shadow is a plugin for creating fat/uber JARs. Useful for creating standalone console applications. This is not recommended for Android or Compose projects.