Skip to main content

Arrow brings idiomatic functional programming to Kotlin

Start learning now

Arrow is composed of different libraries that greatly improve your developer experience using Kotlin

Quickstart category


Gradle or Maven, JVM or Multiplatform, Arrow fits in all your projects

Typed errors category

Typed errors

Structured, predictable, and efficient handling of errors

Coroutines category


High-level utilities for working with coroutines, and correctly managing resources and shared data

Resilience category


Make your code respond to failures in an organized way

Immutable data category

Immutable data

Great tooling for dealing with immutable data and sealed hierarchies

Collections and functions category

Collections and functions

Powerful additions to the basics to make your code more expressive

What the community says

Some opinions about Arrow from the community and its practitioners

Our system consists of multiple services built with Kotlin and Spring Boot and the communication between the services is done through GRPC. The more services involved the more the failure points which means we need a streamlined way to handle failures and errors without affecting the operation of our system. [..] By using Either and Validated, we have eliminated unexpected exceptions in our system and we can now have a look on errors through our logs without worrying about unexpected exceptions that can bring our system down

This week, I'm into sharing things that made my life as an Android developer with Kotlin easier. In my opinion, functional programming is an awesome paradigm and can be a first-class citizen in Kotlin. [..] Arrow is a "Functional companion to Kotlin's Standard Library" and provides the core constructs from the FP world to get you started.