# reduxjs/redux

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/reduxjs-redux).**

61,511 stars · 15,056 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/reduxjs/redux
- Homepage: https://redux.js.org
- awesome-repositories: https://awesome-repositories.com/repository/reduxjs-redux.md

## Topics

`redux`

## Description

Redux is a predictable state container designed to manage global application data through a centralized store. It operates on a unidirectional data flow architecture where state transitions are triggered by dispatching action objects, which are then processed by pure reducer functions to produce a new, immutable state tree. This approach ensures that application data remains consistent and traceable across the entire component hierarchy.

The library distinguishes itself through a functional pattern that relies on pure functions for state logic and a middleware-based extension system. This middleware allows for the interception of dispatched actions, enabling the handling of asynchronous logic and side effects before they reach the reducers. Furthermore, the project provides a comprehensive developer tooling ecosystem that supports real-time inspection of state changes and the ability to replay dispatched actions, facilitating efficient troubleshooting and debugging.

Beyond its core state management capabilities, the library includes official bindings to connect state logic to user interface components, simplifying data synchronization in complex applications. It also supports dynamic reducer replacement at runtime, allowing for flexible state logic updates. The library is available for installation via standard package managers and can be integrated into various module-bundled or browser-based environments.

## Tags

### Software Engineering & Architecture

- [Centralized State Containers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/centralized-state-containers.md) — Coordinates a centralized store that enforces a strict, unidirectional flow for consistent application data management.
- [State Containers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/centralized-state-containers/state-containers.md) — Maintains a single source of truth for global data through a centralized store that supports subscription-based updates. ([source](https://redux.js.org/api/api-reference))
- [Observer Patterns](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns.md) — Allows interface components to subscribe to the store and receive automatic notifications whenever data changes.
- [Functional State Management](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/functional-state-management.md) — Calculates new application data by applying pure functions to previous states and incoming events.
- [Action-Driven State Mutations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/action-driven-state-mutations.md) — Processes discrete action objects to drive predictable transitions within the application data model.
- [Action Reducer Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/action-reducer-patterns.md) — Uses plain objects to represent events and dedicated functions to define how those events transform application data. ([source](https://redux.js.org/tutorials/essentials/part-1-overview-concepts))
- [Pure Reducer Compositions](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/pure-reducer-compositions.md) — Combines multiple independent pure functions to compute complex state transitions based on incoming actions.
- [Unidirectional Data Flow Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/unidirectional-data-flow-architectures.md) — Enforces a strict cycle where dispatched actions trigger specific functions to update the global data tree.
- [Centralized State Stores](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/centralized-state-stores.md) — Acts as the single immutable object tree serving as the definitive source of truth for all application information.
- [Immutable State Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/immutable-data-strategies/immutable-state-patterns.md) — Generates new data objects for every state change to ensure transitions remain predictable and traceable.
- [Middleware Layers](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/reactive-messaging/communication-integration-patterns/middleware-layers.md) — Intercepts the dispatch process with a chain of functions to facilitate asynchronous logic and side effects.
- [Component State Bindings](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/component-state-bindings.md) — Connects functional user interface components to the centralized store to read and react to specific data updates. ([source](https://redux.js.org/introduction/installation))
- [Immutable Update Utilities](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/immutable-data-strategies/immutable-update-utilities.md) — Updates application data by creating copies of existing structures to keep state transitions predictable and easy to track. ([source](https://redux.js.org/tutorials/essentials/part-1-overview-concepts))

### Development Tools & Productivity

- [State Debugging Utilities](https://awesome-repositories.com/f/development-tools-productivity/debugging-profiling-testing/debugging-diagnostics/debugging-inspection-tools/state-debugging-utilities.md) — Exposes diagnostic capabilities that let developers inspect state changes and replay dispatched actions for easier troubleshooting.

### Part of an Awesome List

- [State Management](https://awesome-repositories.com/f/awesome-lists/data/state-management.md) — Predictable state container for JavaScript applications.
- [React Ecosystem](https://awesome-repositories.com/f/awesome-lists/devtools/react-ecosystem.md) — A predictable state container for JavaScript applications.
- [State Management](https://awesome-repositories.com/f/awesome-lists/devtools/state-management.md) — Listed in the “State Management” section of the Awesome React awesome list.
