# rackt/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/rackt-redux).**

61,509 stars · 15,057 forks · TypeScript · MIT

## Links

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

## Description

Redux is a JavaScript state management library that serves as a centralized state container for application data. It operates as a predictable state machine, maintaining the entire application state in a single immutable object tree to ensure a consistent source of truth.

The library enforces a unidirectional data flow architecture where the state is read-only and can only be modified by dispatching action objects. State transitions are calculated by applying pure reducer functions to the current state and a specific action, ensuring that data updates are deterministic and trackable.

The system includes capabilities for real-time state tracking through observer-based notifications and tools for debugging state transitions by recording and navigating through changes over time.

## Tags

### Web Development

- [Centralized State Management](https://awesome-repositories.com/f/web-development/hydration-state-management/browser-side-state-management/centralized-state-management.md) — Maintains a single source of truth for application data through a centralized state management architecture. ([source](https://github.com/rackt/redux#readme))
- [State Management Libraries](https://awesome-repositories.com/f/web-development/state-management-libraries.md) — A predictable library for managing global application state through a single source of truth.

### Software Engineering & Architecture

- [Action-Based State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/action-based-state-transitions.md) — Applies a reducer function to current state and an action object to determine the next state. ([source](https://github.com/rackt/redux#readme))
- [Centralized State Containers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/centralized-state-containers.md) — Provides a single source of truth for application state with predictable mutations via a centralized container.
- [Pure State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/immutable-state-utilities/pure-state-transitions.md) — Uses pure functions to determine state updates, ensuring deterministic transitions without side effects.
- [Predictable State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/predictable-state-transitions.md) — Ensures state changes are performed through explicit, traceable reducer functions and actions.
- [Single State Trees](https://awesome-repositories.com/f/software-engineering-architecture/single-state-trees.md) — Maintains the entire application data in one immutable object tree to ensure a consistent source of truth.
- [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) — Implements state changes by processing discrete action objects that describe the intent of a mutation.
- [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 one-way cycle where actions trigger reducers to update state and notify listeners.
- [Application State Machines](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/lightweight-state-machines/automation-state-machines/entity-state-machines/application-state-machines.md) — Operates as a predictable state machine by applying reducer functions to calculate state transitions.
- [Global State Stores](https://awesome-repositories.com/f/software-engineering-architecture/state-synchronization-utilities/prop-driven-state-synchronization/global-state-stores.md) — Provides a centralized global state store to ensure a consistent and predictable source of truth. ([source](https://github.com/rackt/redux#readme))
- [State Change Observers](https://awesome-repositories.com/f/software-engineering-architecture/state-change-observers.md) — Provides an observer-based notification system to synchronize the user interface whenever the central state changes.
- [State Change Subscriptions](https://awesome-repositories.com/f/software-engineering-architecture/state-change-subscriptions.md) — Allows callback functions to be executed whenever the state tree updates to react to data changes. ([source](https://github.com/rackt/redux#readme))

### User Interface & Experience

- [Global State Managers](https://awesome-repositories.com/f/user-interface-experience/global-state-managers.md) — Maintains a global application state shared across various components to ensure consistent behavior.
- [Action Dispatchers](https://awesome-repositories.com/f/user-interface-experience/state-update-logic/state-action-value-updates/instance-scoped-action-dispatchers/action-dispatch-abstractions/action-dispatchers.md) — Modifies the state tree by dispatching action objects that describe specific events to a central store. ([source](https://github.com/rackt/redux#readme))
- [Real-time State Displays](https://awesome-repositories.com/f/user-interface-experience/real-time-state-displays.md) — Enables the user interface to update instantly by reflecting changes in the internal state.

### Development Tools & Productivity

- [State Debugging Tools](https://awesome-repositories.com/f/development-tools-productivity/state-debugging-tools.md) — Provides tools for monitoring and inspecting application state and data flow over time.

### System Administration & Monitoring

- [State Transition Logging](https://awesome-repositories.com/f/system-administration-monitoring/resource-monitoring/resource-change-monitors/state-change-monitoring/state-transition-logging.md) — Records sequences of state changes and snapshots to enable time-travel debugging and analysis. ([source](https://github.com/rackt/redux#readme))

### Part of an Awesome List

- [Programming Languages](https://awesome-repositories.com/f/awesome-lists/devtools/programming-languages.md) — Documentation for the Redux state management library.
