# arrow-kt/arrow

The perfect companion for your Kotlin journey - Inspired by functional, data-oriented and concurrent programming

Repository: https://github.com/arrow-kt/arrow
Canonical: https://ross.abutalabs.com/products/arrow-kt-arrow
Homepage: http://arrow-kt.io
Language: Kotlin
License: NOASSERTION
License Family: other
Topics: functional-programming, kotlin-library, monads, functional-data-structure, kotlin, fp-types, for-comprehension, optics, polymorphism, typed-lambda-calculus, typeclasses, arrow, delimited-continuations, continuations, kotlin-libraries, coroutines, kotlin-dsl, hacktoberfest
Last push: 2026-08-25T18:53:00+00:00

## Health v2 (maintenance only)
Score: 91/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 75, longevity 100
- inputs: {"age_days": 3449, "days_push": 8, "days_rel": 90, "gap_med": 47.5, "n_releases_24m": 11}
- flags: no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 6580, forks 472 (observed 2026-08-28T04:09:45.394878+00:00)

## What it is
Arrow is a Kotlin library for typed functional programming, providing data types like Option and Either, typed error handling with the Raise DSL, concurrency utilities, resilience patterns, and optics for immutable data. It integrates with coroutines and works across JVM, Android, and Kotlin Multiplatform.

## Use cases
- handle domain errors in Kotlin with typed errors instead of exceptions
- validate user input and accumulate all validation errors
- manage coroutine resources and graceful shutdown in Ktor servers
- work with immutable data models using optics
- add retry and resilience patterns to Kotlin services
- write functional-style Kotlin with Option and Either types

## When to choose
- you write Kotlin (backend, Android, or multiplatform) and want structured, compiler-checked error handling
- you want functional programming abstractions that feel idiomatic to Kotlin
- you need resilience, concurrency, and immutable-data tooling in one ecosystem

## When to avoid
- your team prefers exception-based error handling and imperative style
- you work outside the Kotlin/JVM ecosystem
- you want a minimal zero-dependency project and can't accept additional library abstractions

## Facets
- artifact type: library
- maturity: active
- function: error-handling, concurrency, serialization, caching, middleware
- domain: programming-languages, developer-tools, backend, mobile-development, cross-platform
- platform: jvm, cross-platform
- tags: functional-programming, kotlin, typed-errors, monads, optics, typeclasses, coroutines, immutability, resilience, android

## Member repositories
- arrow-kt/arrow (main) score 91

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:45.394878+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:43:36.395985+00:00, confidence not recorded.
  - readme: https://github.com/arrow-kt/arrow (fetched 2026-08-28T04:09:45.394878+00:00, sha 596008ebd104)
  - homepage: http://arrow-kt.io (fetched 2026-08-29T08:40:04.885027+00:00, sha cbe0ae914942)
  - site_page: https://arrow-kt.io/learn/quickstart (fetched 2026-08-29T08:40:04.894129+00:00, sha 91210f4090b0)
  - site_page: https://apidocs.arrow-kt.io (fetched 2026-08-29T08:40:04.898382+00:00, sha 81aec4a17266)
  - site_page: https://arrow-kt.io/learn/integrations (fetched 2026-08-29T08:40:04.896492+00:00, sha a3b882032b01)
- Data as of 2026-08-30T08:39:29.467469+00:00.
