# redux-loop/redux-loop

A library that ports Elm's effect system to Redux

Repository: https://github.com/redux-loop/redux-loop
Canonical: https://ross.abutalabs.com/products/redux-loop
Homepage: https://redux-loop.js.org/
Language: JavaScript
License: MIT
License Family: permissive
Last push: 2024-03-19T18:42:21+00:00

## Health v2 (maintenance only)
Score: 23/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 0, release rhythm 8, longevity 100
- inputs: {"age_days": 3893, "days_push": 897, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1953, forks 119 (observed 2026-08-28T04:05:58.807155+00:00)

## What it is
redux-loop is a JavaScript library that ports the Elm Architecture's effect system to Redux, letting reducers declaratively describe side effects via Cmd objects returned alongside state. Effects are only interpreted by an enhanced store, keeping reducers pure and easily testable.

## Use cases
- handle async side effects in Redux reducers purely
- replace redux-thunk with declarative effect handling
- make Redux reducers fully testable with deep equality
- sequence and compose asynchronous effects like Elm
- migrate an existing redux-thunk codebase to redux-loop
- build action queues for ordered async requests

## When to choose
- you use Redux and want Elm-style effect management from reducers
- you need deterministic, easily testable reducer behavior including effects
- you want all application behavior traceable through reducers

## When to avoid
- you use Redux Toolkit or modern Redux patterns with RTK Query
- you prefer middleware-based async handling like redux-saga or redux-observable
- you are starting a new project without legacy Redux

## Facets
- artifact type: library
- maturity: maintenance
- function: state-management, middleware
- domain: frontend, web-development, developer-tools
- platform: browser, cross-platform
- tags: redux, elm-architecture, side-effects, reducers, javascript, nodejs

## Member repositories
- redux-loop/redux-loop (main) score 23

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:58.807155+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-30T03:06:34.062502+00:00, confidence not recorded.
  - readme: https://github.com/redux-loop/redux-loop (fetched 2026-08-28T04:05:58.807155+00:00, sha 74266610bb77)
  - homepage: https://redux-loop.js.org/ (fetched 2026-08-29T10:46:35.752926+00:00, sha 67d316e72ec9)
  - site_page: https://redux-loop.js.org/docs/tutorial (fetched 2026-08-29T10:46:35.762353+00:00, sha 6095db4952e4)
  - site_page: https://redux-loop.js.org/docs/tutorial/Tutorial.html (fetched 2026-08-29T10:46:35.764175+00:00, sha b89a3429ea97)
  - site_page: https://redux-loop.js.org/docs/tutorial/Testing.html (fetched 2026-08-29T10:46:35.765939+00:00, sha 48522db59841)
  - site_page: https://redux-loop.js.org/docs/tutorial/Migrating.html (fetched 2026-08-29T10:46:35.767538+00:00, sha 309c1bf54b42)
  - site_page: https://redux-loop.js.org/docs/tutorial/AdvancedTopics.html (fetched 2026-08-29T10:46:35.769252+00:00, sha c1e3089455d5)
  - site_page: https://redux-loop.js.org/docs/recipes (fetched 2026-08-29T10:46:35.770948+00:00, sha 3786b7a0de91)
  - site_page: https://redux-loop.js.org/docs/recipes/ActionQueue.html (fetched 2026-08-29T10:46:35.772302+00:00, sha 8c29bf046cef)
  - site_page: https://redux-loop.js.org/docs/api-docs (fetched 2026-08-29T10:46:35.773896+00:00, sha fa90d40d2701)
- Data as of 2026-08-30T08:39:29.467469+00:00.
