The perfect companion
for your Kotlin journey
Inspired by functional, data-oriented
and concurrent programming
Quickstart
Backend or frontend, JVM, Android or Multiplatform, Gradle or Maven, Arrow fits in all your projects
Typed errors
Structured, predictable, and efficient handling of domain errors
Concurrency and resources
High-level utilities for working with coroutines, and correctly managing resources and shared data
Resilience
Make your code respond to failures in an organized way, with minimal fuss and integration with coroutines
Immutable data with optics
Great tooling for dealing with immutable data and sealed hierarchies
Collections and functions
Powerful additions to the basics to make your code more expressive
Dive into the concepts behind Arrow
Design recipes
Bringing functional and data-oriented programming concepts in your domain models and architecture
Example projects
See how Arrow can be used in the frontend and the backend, alongside other popular libraries
What the community says
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.