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 2.0 / 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-collectors
Companion to fold and reduce
Aggregation with single traversal
arrow-eval
More powerful laziness
Control over evaluation
Part of arrow-core in 1.x
arrow-functionsUtilities for functions
Part of arrow-core in 1.x
arrow-core-high-arityarrow-core for more than 10 parameters
arrow-atomic
Multiplatform-ready references
Atomic references
Replaced by standard-library atomics
Use caseLibraryIntegrates with
Serializationarrow-core-serializationKotlinX Serialization for core types
arrow-core-jacksonJackson for core types
arrow-core-retrofitRetrofit with core types
Ktorsuspendapp-ktorGraceful shutdown with Ktor
arrow-resilience-ktor-clientResilience client plug-ins
Memoizationarrow-cache4kcache4k for memoization
Composearrow-optics-composeCompose state management with optics