jimsynz
Ash Core Team
Reactor 1.0 Released - Saga Orchestration for Elixir
It’s been a long time coming, but Reactor has finally reached 1.0.
For those unfamiliar, Reactor is a dynamic, concurrent, dependency-resolving saga orchestrator. In practical terms: it lets you define complex workflows as a series of steps with automatic dependency
resolution, concurrent execution, and built-in compensation/rollback when things go wrong.
defmodule CreateOrder do
use Reactor
input :customer_id
input :items
step :validate_inventory do
argument :items, input(:items)
run fn %{items: items} -> InventoryService.check(items) end
end
step :charge_payment do
argument :customer_id, input(:customer_id)
argument :items, result(:validate_inventory)
run fn args -> PaymentService.charge(args.customer_id, args.items) end
undo fn args, _result -> PaymentService.refund(args.customer_id) end
end
step :create_shipment do
argument :payment, result(:charge_payment)
argument :items, result(:validate_inventory)
run fn args -> ShippingService.create(args) end
end
return :create_shipment
end
Why 1.0 now?
Honestly, Reactor has been production-ready for quite some time. The 1.0 version was prompted by a couple of small breaking changes that needed a major version bump anyway, so it felt like the right moment
to make the stability commitment official.
Highlights since the early days
- Concurrent execution - Steps run in parallel where dependencies allow, with configurable concurrency limits
- Composition - Embed sub-reactors within reactors
- Control flow - switch, map, group, and around steps for complex workflows
- Middleware - Hook into the execution lifecycle (including telemetry out of the box)
- Guards and conditions - Conditional step execution with where and guard
- Mermaid diagrams - Visualise your workflows
- Backoff support - Configurable retry strategies
- Full undo support - Including after successful completion
Links
- reactor v1.0.2 — Documentation
- GitHub - ash-project/reactor: Reactor is a dynamic, concurrent, dependency resolving saga orchestrator. · GitHub
- Your First Reactor — reactor v1.0.2
Questions and feedback welcome here or in the reactor channel on the Ash discord Ash Framework
Popular in News & Updates
Explore Livebook 0.9’s new features: deploy notebooks as user-friendly apps, star & access recent notebooks, and collapse sections.
...
New
It is my pleasure to announce the official release of the new generation of NervesHub with the v2.0.0 release.
Containers are tagged. :p...
New
We recently released Nerves 1.4.0 and an update to the Nerves new project generator, nerves_bootstrap. The biggest change is support for ...
New
It looks like it’s finally safe to announce that Nerves supports Erlang/OTP 26 and Elixir 1.15!
We’ve updated dozens of Nerves and close...
New
New versions of the Kiosk systems are out. These systems update official Nerves systems with a local web browser for rendering user inter...
New
Hologram’s journey just took a significant leap forward: Curiosum is coming on board as the Main Sponsor, and I’m joining their team to w...
New
Thanks to advancements in the overall Numerical Elixir ecosystem, Livebook v0.11 includes a highly improved integration with Whisper.
To...
New
The Raspberry Pi is a very popular hardware platform for Nerves users and the official systems are getting an upgrade! :tada: :beers:
Wh...
New
Oban.Web is a view of Oban’s inner workings that you host directly within your Phoenix application. Powered by Oban Metrics and Phoenix L...
New
Hey! For those following Hologram’s progress… I’m excited to share that I’ve just published the official roadmap for Hologram. You can ch...
New
Other popular topics
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service.
Currently when I de...
New
Hey all,
I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
What learn first? Rust or Elixir
Hi Elixir community!
I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
Hello everybody,
usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
New
Using vs code and installed ElixirLS: support and debugger.
And I got an error popped up on start up says
Failed to run ‘elixir’ comma...
New
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
Hi,
I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
I am trying to run a deploy with docker and I successfully runned with this command:
docker build -t romenigld/blog-prod .
but when I t...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








