Skip to main content

Ecosystem

Redux is a tiny library, but its contracts and APIs are carefully chosen to spawn an ecosystem of tools and extensions, and the community has created a wide variety of helpful addons, libraries, and tools. You don't need to use any of these addons to use Redux, but they can help make it easier to implement features and solve problems in your application.

For inspiration or examples, the JS ecosystem is quite rich and can be explored here.

First-party modules

The core redux-kotlin library is intentionally minimal. Optional companion modules build on its contracts; add only the ones you need — or start with a bundle, the recommended install. Published modules share the core's group id org.reduxkotlin and version; rows marked as repo tools are developer tools that ship in the repository and are not published to Maven.

ModulePurpose
redux-kotlin-bundle-composeThe bundle plus the Compose bindings and redux-kotlin-compose-saveable — the single dependency for Compose Multiplatform apps.
redux-kotlin-bundleOne-dependency assembly of the concurrent ModelState stack (createConcurrentModelStore, registry helpers) — concurrent + multimodel + granular + routing in one artifact, no Compose runtime.
redux-kotlin-bomMaven BOM aligning the versions of every org.reduxkotlin module, for à-la-carte setups.

Core & stores

ModulePurpose
redux-kotlinThe core store, reducer, and middleware contracts.
redux-kotlin-concurrentcreateConcurrentStore — lock-free reads with caller-serialized writes; NotificationContext controls where subscriber callbacks run (incl. coalescingNotificationContext for lag-free main-thread notify).
redux-kotlin-threadsafeDeprecated in favor of redux-kotlin-concurrent. createThreadSafeStore — a store wrapper that serialises every store function on one lock.
redux-kotlin-thunkThunk middleware for async actions — dispatch functions that can themselves dispatch once async work completes (createThunkMiddleware()).

State shape

ModulePurpose
redux-kotlin-granularGranular Subscriptions — subscribe to a single field or selector with an (old, new) callback that fires only when that value changes.
redux-kotlin-registryStore Registry — manage many stores keyed by a unique identifier, with thread-safe getOrCreate and manual lifecycle.
redux-kotlin-multimodelModelState — a type-safe bag of independent feature models keyed by class, plus combineModelReducers to drive them from one store.
redux-kotlin-multimodel-granularGranular subscriptions for ModelStatesubscribeTo(Model::field) / subscribeToModel(...).

Routing

ModulePurpose
redux-kotlin-routingRouted (model, action) dispatch over ModelState — declare each slot with model(initial) { on<Action> { … } } instead of a when(action) cascade; optional preloadedState overlays restored models at construction.
redux-kotlin-routing-codegenKSP processor for the routing DSL — @Reduce / @ReduxInitial annotations generate the ReduxModule wiring. Repo tool: not yet published to Maven Central.

Compose

ModulePurpose
redux-kotlin-composeCompose integration — bind store fields to Compose State<T> with fieldState / selectorState.
redux-kotlin-compose-multimodelCompose fieldState(Model::field) bindings for ModelState stores.
redux-kotlin-compose-saveableStateSaver + rememberSaveableState store-anchored snapshot persistence for Compose (survives rotation + process death) via Compose SaveableStateRegistry.

DevTools (experimental)

ModulePurpose
redux-kotlin-devtools-*DevTools family — action/state inspection, diffing, and pipeline timing for a running app. Published (experimental — exempt from semver until the surface stabilizes): core, bridge, remote, inapp, inapp-noop (release no-op facade), ui. Unpublished repo tools: standalone (Compose desktop monitor app) and cli (the rk-devtools terminal tool).

Community

Presenter-middleware (archived)
A middleware for writing concise UI binding code and no-fuss lifecycle/subscription management. The repository is archived and no longer maintained.