Skip to main content


Arrow is composed of different libraries; simply select the ones you need in your project.


All Arrow libraries are Multiplatform-ready, so you can use them in all of your KMP projects. Be aware that some instructions here may need to be slightly changed in that situation.

Enable the Maven Central repository

Arrow is published in Maven Central, so you need to enable it as a source of dependencies in your build.

repositories {

Include the dependencies

You're now ready to include Arrow in your project. You have three possibilities that correspond to three different ways of handling versioning in your build.

One by one

Simply include the desired library in your dependencies block or as a <dependency> if you're using Maven.

dependencies {

Using version catalogs

Version catalogs provide centralized management of versions. This is especially interesting when your Gradle build has several subprojects.

arrow = "1.2.0"
# other versions

arrow-core = { module = "io.arrow-kt:arrow-core", version.ref = "arrow" }
arrow-fx-coroutines = { module = "io.arrow-kt:arrow-fx-coroutines", version.ref = "arrow" }
# other dependencies

Using a Bill-of-Materials (BOM)

Another way to keep a single version for all Arrow dependencies in your build is to include arrow-stack, which declares versions for the rest of the components.

dependencies {
// no versions on libraries

Additional setup for plug-ins

If you're using the Optics component of Arrow, we provide a Kotlin compiler plug-in that can derive most of the boilerplate required to use it. This plug-in is built with KSP, which requires an additional configuration step.

plugins {
id("") version "1.8.21-1.0.11"

dependencies {

Alphas (development builds)

For those wanting to live on the edge, we provide alphas of our development branch. Those are tagged with the upcoming version, followed by -alpha. and the sequence number of the compilation. Check Maven Central for the most recent list of available versions.