# facebook/flux

**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/facebook-flux).**

17,464 stars · 3,388 forks · JavaScript · NOASSERTION · archived

## Links

- GitHub: https://github.com/facebook/flux
- Homepage: https://facebookarchive.github.io/flux/
- awesome-repositories: https://awesome-repositories.com/repository/facebook-flux.md

## Description

Flux is an application architecture framework and client-side state orchestrator. It implements a unidirectional state management pattern to ensure data flows in one direction, preventing unpredictable state changes and maintaining consistency across the user interface.

The system functions as an action-driven state architecture where changes are triggered by plain object actions. A centralized dispatcher routes these actions to multiple data stores, which partition the application state and notify views of changes via a publisher-subscriber synchronization pattern.

This approach provides a predictable frontend architecture for organizing the flow of data and actions between the interface and underlying stores. It focuses on making state transitions trackable and reproducible through standardized action messaging and a consistent update order.

## Tags

### Software Engineering & Architecture

- [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) — Implements a strict, predictable cycle where state updates follow a unidirectional flow initiated by actions.
- [Action-Based State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/action-based-state-transitions.md) — Implements state update patterns where discrete action objects describe changes to ensure predictable transitions.
- [Centralized Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/action-based-state-transitions/action-interceptors/centralized-dispatchers.md) — Provides a centralized dispatcher that routes all actions to every registered store to maintain a consistent update order.
- [Application Architecture Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/application-architecture-frameworks.md) — Provides a structural approach for organizing the flow of data and actions between the UI and underlying data stores.
- [Predictable State Containers](https://awesome-repositories.com/f/software-engineering-architecture/predictable-state-containers.md) — Enforces strict state transition rules via message-based updates to make changes trackable and reproducible.
- [Unidirectional State Management](https://awesome-repositories.com/f/software-engineering-architecture/unidirectional-state-management.md) — Organizes application data flow in one direction to prevent unpredictable state changes.
- [Frontend Architecture Patterns](https://awesome-repositories.com/f/software-engineering-architecture/frontend-architecture-patterns.md) — Provides structural principles for organizing the communication between stores and views in large-scale frontend applications.

### Data & Databases

- [Event-Based Stores](https://awesome-repositories.com/f/data-databases/local-state-stores/event-based-stores.md) — Uses event-driven in-memory stores that maintain internal state and notify the interface of updates.
- [State Partitioning](https://awesome-repositories.com/f/data-databases/local-state-stores/state-partitioning.md) — Divides application data into separate stores that manage their own internal state independently.

### User Interface & Experience

- [Application Event Dispatching](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/input-event-dispatchers/application-event-dispatching.md) — Routes user interactions and events to multiple stores to ensure a consistent order of updates.
- [State Management Systems](https://awesome-repositories.com/f/user-interface-experience/state-management-systems.md) — Provides a framework for tracking application state and synchronizing data changes with user interface updates. ([source](https://github.com/facebook/flux#readme))
- [Action Routing](https://awesome-repositories.com/f/user-interface-experience/state-update-logic/state-action-value-updates/instance-scoped-action-dispatchers/action-routing.md) — Routes actions to multiple data stores to maintain a consistent order of state updates across the interface. ([source](https://github.com/facebook/flux#readme))
- [Application Architectures](https://awesome-repositories.com/f/user-interface-experience/application-architectures.md) — Implements an architectural pattern that separates state management from visual representation in user interfaces.
- [Lightweight Pub-Sub Managers](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/event-handling-systems/cross-browser-event-managers/lightweight-pub-sub-managers.md) — Uses a publish-subscribe system to notify views of store changes and trigger targeted re-renders.

### Web Development

- [Client-Side Runtimes](https://awesome-repositories.com/f/web-development/client-side-runtimes.md) — Orchestrates browser-side application state and user interactions through a central dispatch hub.
- [Browser-Side State Management](https://awesome-repositories.com/f/web-development/hydration-state-management/browser-side-state-management.md) — Manages active browser-side state and dispatches actions to multiple stores to prevent unpredictable interface changes.

### Part of an Awesome List

- [GUI Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/gui-frameworks.md) — Unidirectional data flow architecture for applications.
