Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


rezilience is a ZIO-native collection of policies for making asynchronous systems more resilient to failures.

It is inspired by Polly, Resilience4J and Akka.

It consists of these policies:

  • CircuitBreaker
  • Bulkhead
  • RateLimiter
  • Retry
  • Timeout

Features / Design goals

  • Type-safety: all errors that can result from any of the rezilience policies are encoded in the method signatures, so no unexpected RuntimeExceptions.
  • Support for your own error types (the E in ZIO[R, E, A]) instead of requiring your effects to have Exception as error type
  • Lightweight: rezilience uses only ZIO fibers and will not create threads or block
  • Switchable at runtime with two transition modes
  • Resource-safe: built on ZIO's ZManaged, any allocated resources are cleaned up safely after use.
  • Interrupt safe: interruptions of effects wrapped by rezilience policies are handled properly.
  • Thread-safe: all policies are safe under concurrent use.
  • ZIO integration: some policies take for example ZIO Schedules and rezilience tries to help type inference using variance annotations
  • Metrics: all policies (will) provide usage metrics for monitoring purposes
  • Composable: policies can be composed into one overall policy
  • Discoverable: no syntax extensions or implicit conversions, just plain scala



Further questions? Look for the #rezilience channel on the ZIO Discord:


Sonatype Nexus (Releases) Sonatype Nexus (Snapshots)

Add to your build.sbt:

libraryDependencies += "nl.vroste" %% "rezilience" % "<version>"

Used by

If you are using this library and find it useful, please consider adding your company or project to the list below!