Skip to main content

Overview of libraries

Arrow is not a single library, but a collection of them. The guiding principle is that each Arrow library should be self-contained: each library improves or extends a single commonly-used library in the Kotlin ecosystem (like arrow-core and arrow-fx-coroutines) or a particular Kotlin language feature (like arrow-optics), or focuses on a particular set of tasks (like arrow-resilience).

Note that during the transition to Arrow 2.x some libraries were further split. If you are an Arrow 1.x user you can follow the deprecation warnings to make the switch to the new organization, or read our 1.2.0 migration guide.

LibraryFeatures
arrow-core
Companion to Kotlin's standard library
Typed errors, including Raise, Either, and Option
Non-empty collections
Memoized recursive functions
arrow-fx-coroutines
Companion to KotlinX Coroutines
High-level concurrency, including parMap and parZip
Resource management (with suspend)
arrow-autocloseResource management (no suspend)
suspendappGraceful shutdown
arrow-resilienceResilience patterns
arrow-optics + arrow-optics-ksp-plugin
Companion to data and sealed classes
Utilities for immutable data
arrow-fx-stmSoftware Transactional Memory (STM)
arrow-atomic
Multiplatform-ready references
Atomic references
arrow-collectors
Companion to fold and reduce
Aggregation with single traversal
arrow-eval
More powerful laziness
Control over evaluation
arrow-functions
Part of arrow-core in 1.x
Utilities for functions
arrow-core-high-arityarrow-core for more than 10 parameters
LibraryIntegrates with
arrow-core-serializationKotlinX Serialization for core types
arrow-cache4kcache4k for memoization
arrow-optics-composeCompose state management with optics