Skip to main content

A library is more robust if it plays well with the rest of the ecosystem surrounding it. Arrow integrates with many useful libraries in the Kotlin ecosystem. This is a non-exhaustive list, and we're happy to hear about support for Arrow from other libraries.

We'd love to hear from you!

Do you maintain or know of a library with support for Arrow? Feel free to open an issue in the repository, and we'll add it to this list. Thanks in advance! 🤩


There's a custom set of rules for Detekt that can help you refine your style when using Arrow.



If you want to test the result of a function that uses a type defined in Arrow, like Either, you can use the matchers extension library. If you're using property-based testing (you should!), you can use generators for Arrow types.


Assertions covering Either and Option are provided by this library.


See the corresponding section.



Hoplite is a great library for handling configurations and supporting various sources, formats, and cascading setups. The library supports most Arrow types for decoding.



Akkurate provides a language to describe complex validation code. It provides integration with Arrow's typed error mechanism.



If Retrofit is your library of choice for querying HTTP services, this small integration module may come in quite handy.


The main point of contact between Ktor and Arrow is in serialization.

If you're using kotlinx.serialization, you need no further changes other than importing the serializers with @UseSerializers.

If you're using Jackson, you can use the custom mapper, and pass it to the ContentNegotiation configuration.

install(ContentNegotiation) {
register(ContentType.Application.Json, JacksonConverter(JsonMapper.mapper))


This library adds support for JSON Web Signatures and JSON Web Tokens to the Kotlin and Arrow ecosystems.



You can easily integrate cache4k as caching mechanism for memoization.