Libraries & Plugins

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.