For state management, the strongest matches are reduxjs/redux-toolkit (Redux Toolkit is the standard, comprehensive framework for managing), reduxjs/redux (Redux is the industry-standard state container that provides a) and reactjs/react-redux (React Redux is the standard library for connecting React). pmndrs/zustand and mobxjs/mobx round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Compare the top state management libraries for your project. We ranked the best options by stars and activity to help you find the right fit.
Redux Toolkit is a state management toolkit and store configurator designed to simplify the development of Redux applications by reducing boilerplate code. It functions as an immutable state manager and a centralized store configuration system that provides a streamlined workflow for managing global application state. The project distinguishes itself through an automated async action orchestrator that manages the lifecycle of promises by automatically dispatching pending, fulfilled, and rejected actions. It also acts as a normalized state organizer, providing tools to structure complex relati
Redux Toolkit is the standard, comprehensive framework for managing global application state in React, providing built-in support for asynchronous actions, immutable updates, and developer tools while significantly reducing boilerplate.
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 mid
Redux is the industry-standard state container that provides a centralized store, immutable updates, and robust React integration, making it a comprehensive solution for managing complex frontend application state.
React Redux is a global state management bridge and a set of bindings that connect React components to a Redux state store. It serves as a communication layer and state store connector, allowing a declarative user interface to synchronize with a centralized source of truth. The library enables the synchronization of shared global state across an application by providing mechanisms to read state and dispatch actions directly from the view layer. It ensures predictable state transitions by bridging the gap between UI components and the Redux state container. The project covers core capabilitie
React Redux is the standard library for connecting React applications to a centralized state store, providing the essential global state management, asynchronous action handling, and devtool support required for complex UI architectures.
Zustand is a state management library that provides a centralized store for managing shared application data. It functions as a reactive container that connects application state to components, allowing them to subscribe to specific slices of data and trigger updates automatically. By utilizing selector-based data access and immutable state updates, the library ensures that components only re-render when their observed data changes, maintaining a predictable and efficient data flow. The library distinguishes itself through a pluggable, middleware-based architecture that allows for the extensi
Zustand is a lightweight, hook-based state management library for React that provides a centralized store, asynchronous action handling, and efficient selector-based updates with minimal boilerplate.
MobX is a reactive state management library and fine-grained reactivity engine. It provides an observable data store that automatically triggers updates in the user interface when data structures change, functioning as a transparent functional reactive store to maintain a consistent source of truth. The system utilizes a dependency-graph mapping and proxy-based object observation to track data dependencies. This ensures that only the specific components dependent on changed data are updated, which reduces unnecessary re-renders and optimizes frontend performance. The library supports decoupl
MobX is a comprehensive state management library that provides a reactive, observable store with seamless React integration, efficient fine-grained updates, and robust support for complex application state architectures.
Jotai is a state management library for React applications that utilizes an atomic model to handle data. It organizes application state into small, independent units called atoms, which automatically track dependencies and trigger granular updates to components. By building state through these composable primitives, the library ensures that only the necessary parts of an application re-render when data changes. The library distinguishes itself through its flexible approach to state composition and asynchronous data handling. It integrates promises directly into the state model, allowing devel
Jotai is a comprehensive state management library for React that uses an atomic model to provide efficient, granular updates and seamless asynchronous handling with minimal boilerplate.
Easy-peasy is a React state management library and typed framework that provides a centralized store for managing global application state. It functions as an immutable state store and an async state orchestrator, ensuring end-to-end type safety for state definitions, actions, and derived values. The library distinguishes itself by converting direct mutation syntax into immutable updates to simplify the management of nested data. It includes a mechanism for persisting the state tree to storage and rehydrating it during the application boot process, with the ability to suspend the user interfa
Easy-peasy is a dedicated React state management library that provides a centralized store, handles asynchronous actions, and simplifies immutable updates, meeting all the requirements for complex frontend state architectures.
This project is a state management framework for Angular applications that provides a predictable state container. It implements a Redux-style architecture using a centralized store, managing global and local application data through an observable-based data flow of actions and reducers. The framework includes a specialized entity management tool for organizing and synchronizing server-side data collections within client-side stores. It also provides a reactive store system that integrates state updates with Angular signals for change detection and includes debugging mechanisms for time-trave
This is a comprehensive state management framework designed specifically for Angular, providing a centralized store, asynchronous effect handling, and robust debugging tools that align with the requirements for complex UI architectures.
Recoil is an atomic state management framework and library for React. It functions as a state container that breaks application data into independent units called atoms to minimize unnecessary component re-renders. The system integrates with React hooks to provide a reactive state store. It utilizes a graph-based approach to data flow, employing a dependency graph to track relationships between state units and propagate updates automatically. The library coordinates global state across complex component trees, enabling independent components to communicate and share data without manual prop
Recoil is a dedicated state management library for React that provides a global store, handles asynchronous data flow, and uses atomic primitives to minimize boilerplate and optimize re-renders in complex UI architectures.
Refluxjs is a state management library designed to implement a unidirectional dataflow architecture. It manages application state through a strict cycle of actions and stores to prevent unpredictable update loops. The library coordinates asynchronous operations by managing event streams and triggering related success or failure actions. It also provides a global state registry that tracks store states via unique identifiers, enabling deep cloning for persistence and time-travel debugging. Its capability surface covers centralized state management, including the creation of data stores and de
Refluxjs is a library that implements a unidirectional dataflow architecture for managing global application state, providing the core features needed for complex frontend state coordination.
This library provides a collection of reusable hooks designed to manage state, side effects, and browser interactions within React applications. It functions as a toolkit for handling asynchronous data fetching and complex component logic, offering a set of type-safe utilities that reduce boilerplate code and improve maintainability. The library distinguishes itself through its focus on isomorphic lifecycle synchronization, ensuring consistent behavior across client and server environments to prevent hydration mismatches. It employs ref-based closure stabilization to ensure that asynchronous
This library provides a comprehensive suite of React hooks for managing component-level state, side effects, and asynchronous data, serving as a practical toolkit for complex frontend state logic even if it lacks a centralized global store.
Pinia is a state management library for Vue applications that provides a centralized, type-safe architecture for organizing reactive data. It utilizes a modular store pattern, allowing developers to define independent, reusable state containers that manage shared application data, computed getters, and executable actions. The library distinguishes itself through a flexible definition model that supports both functional setup patterns and traditional object-based structures. It features a plugin-based extension architecture that enables developers to hook into the store lifecycle for custom fu
Pinia is a centralized state management library designed specifically for the Vue ecosystem, offering a modular and type-safe approach to handling complex application state.
Vuex is a centralized state management library for Vue.js applications. It provides a single source of truth for application data, ensuring consistent state across a component tree through a reactive data store. The system organizes the global state tree into independent, namespaced modules to prevent naming collisions and maintain code organization. It distinguishes between synchronous mutations for predictable state transitions and asynchronous actions for handling complex operations. The library includes cached getters for derived state, store lifecycle hooks for mutation interception, an
Vuex is a centralized state management library designed specifically for the Vue.js ecosystem, providing the requested global store, asynchronous action handling, and devtool support for complex UI architectures.
Effector is a reactive state management library designed for building complex, event-driven applications. It functions as a data flow engine that models application logic as a directed acyclic graph, ensuring that state updates propagate automatically through interconnected nodes. By utilizing atomic state updates and declarative unit composition, the library maintains data consistency and provides a predictable execution model for managing application state. The project distinguishes itself through its framework-agnostic architecture, which decouples business logic from user interface implem
Effector is a reactive state management library that provides a robust, framework-agnostic engine for handling complex application logic, global state, and asynchronous actions with excellent React integration and developer tooling.
unstated-next is a lightweight state management library for React that shares state and logic across components. It functions as a tool to transform custom hooks into shared state containers, providing a minimalist approach to synchronizing data without the use of complex external state stores. The project uses a provider-consumer pattern to decouple state definition from its usage. It wraps custom hooks into context containers to reduce manual boilerplate, allowing state and methods to be broadcast from a central provider to deeply nested child components. The system supports state containe
This library provides a minimalist, hook-based approach to managing and sharing state across React components, fitting the category by leveraging the Context API to handle global state without the boilerplate of traditional stores.
Unstated is a React state management library that encapsulates application state and update logic within decoupled containers. It functions as a container-based state store, allowing state and business logic to be organized into standalone classes that trigger component re-renders when data changes. The project serves as a dependency injection framework, enabling specific state container instances to be supplied to the component tree. This mechanism supports the use of mock containers or stubs to facilitate controlled testing and custom configurations. The library covers global state managem
Unstated is a React-focused state management library that uses container-based dependency injection to handle global state and component re-renders, fitting the requirements for managing complex frontend application state.
Legend-State is a reactive state management library for JavaScript applications that provides a centralized container for application data. It utilizes a fine-grained reactivity engine to track state access automatically, allowing developers to update and retrieve data without the need for boilerplate patterns like reducers, actions, or dispatchers. The library distinguishes itself through its hierarchical, path-based state addressing and proxy-based dependency tracking. By isolating state dependencies, it ensures that user interface updates are triggered only for the specific components that
Legend-State is a reactive frontend state management library that provides a centralized store with fine-grained reactivity and React integration, effectively minimizing boilerplate by removing the need for traditional action-reducer patterns.
mobx-react is a library that provides state bindings to connect React components to MobX observable state. It functions as a component state synchronizer, ensuring that user interface elements automatically re-render only when the specific observed data they consume changes. The project enables a decoupled state architecture by moving business logic and domain state into standalone stores, separating data management from the React component tree. It facilitates global state distribution across deep component hierarchies using providers and context to avoid manual prop drilling. The library c
This library provides the essential bindings to integrate MobX's reactive state management with React components, enabling global state distribution and efficient UI synchronization for complex architectures.
MobX State Tree is a structured, tree-based state management library for JavaScript applications that combines typed model definitions with reactive snapshots and patch-based change tracking. It provides a reactive state container with runtime and compile-time type safety, where application state is defined as a tree of typed models with collocated actions, computed views, and lifecycle hooks for predictable state mutations. The library is built around an action-centric mutation model that encapsulates all state changes within named functions that directly modify the tree, supported by genera
MobX State Tree is a robust, tree-based state management library that provides a structured approach to global state with built-in React integration, asynchronous action support, and powerful devtool capabilities.
This project is a declarative framework for building reactive user interfaces by embedding logic directly into HTML markup. It functions as a lightweight state container that tracks data changes and automatically synchronizes the document object model with the underlying application state. By utilizing proxy-based observation, it ensures that interface updates occur precisely when reactive properties are modified. The framework distinguishes itself by allowing developers to define interactive behavior through custom attributes rather than external scripts. This approach enables the compositio
Alpine.js provides a reactive state container that manages application data and synchronizes it with the DOM, serving as a lightweight alternative to complex state management libraries for frontend development.
Little State Machine is a lightweight state management library for React applications that provides a centralized data store for managing shared application information. It utilizes a context-based provider pattern to distribute state across the component tree, ensuring consistent data access without the need for manual property drilling. The library distinguishes itself through built-in support for automatic browser storage persistence, which synchronizes the in-memory state with local or session storage to maintain data continuity across page refreshes. It also incorporates middleware-drive
This library provides a centralized global state store with React integration and middleware support, making it a suitable tool for managing application state in complex UI architectures.
Nano Stores is a framework-agnostic state management library that uses a system of small, independent atomic stores to synchronize data across different JavaScript UI frameworks. It provides a reactive state container designed to minimize unnecessary component re-renders by decoupling application state into independent stores. The library features specialized synchronizers for real-time distributed state using WebSockets with conflict-free replicated data types, as well as a browser storage persistor for maintaining state across multiple open tabs. It utilizes adapter-based integration to map
Nano Stores is a lightweight, framework-agnostic state management library that provides atomic stores, asynchronous handling, and React integration, making it a highly effective tool for managing complex frontend state.
re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates. The framework distinguishes itself through a reactive signal graph and an interceptor-based middleware pipeline. By treating application logic as a sequence of data-driven events and declarative side effects, it decouples business logic from the view layer. This architectur
re-frame is a functional state management framework for ClojureScript that provides a centralized, immutable data store and reactive flow, making it a robust choice for complex state architectures despite its specific focus on the Clojure ecosystem rather than general JavaScript/React.
SWR is a data fetching library that provides a collection of hooks for managing remote data synchronization, caching, and state updates in web applications. It employs a declarative approach to handle complex network request lifecycles and dependency chains, ensuring that client-side application state remains consistent with server data through automatic revalidation and background updates. The library distinguishes itself through a reactive cache layer that automatically synchronizes local state with remote sources based on component lifecycle events. It features event-driven revalidation, w
SWR is a specialized state management library focused on synchronizing remote server data with the frontend, providing a reactive cache and global state access that integrates seamlessly with React.
Signals is a reactive state management library and fine-grained reactivity engine. It functions as a dependency-tracking state manager that maps relationships between values to ensure derived data and user interface elements remain synchronized. The library distinguishes itself through direct-to-node DOM binding, which allows state to update specific text nodes in the browser without triggering a full component render cycle. It employs a runtime dependency graph and atomic batching to group multiple state modifications into single notification cycles, reducing redundant executions. The syste
This library provides a fine-grained reactive state management system that integrates with React and handles complex state updates, though it focuses on direct DOM-level reactivity rather than the traditional global store pattern.
Declarative state and side effects management for popular JavaScript frameworks
Cerebral is a state management framework that provides a centralized store, side-effect handling, and React integration, making it a direct fit for managing complex frontend application state.
This project is a reactive state management library designed for Angular applications. It provides a centralized store that maintains a single immutable source of truth, ensuring that all application data transitions follow a predictable, unidirectional flow. The library implements the Redux pattern, utilizing discrete actions and pure functions to trigger state updates. It leverages observable streams to propagate these changes, allowing user interface components to bind reactively to specific slices of data. By isolating asynchronous operations and external interactions into independent act
This library provides a robust, centralized state management system for Angular applications using reactive streams and immutable updates, fitting the category perfectly despite being tailored for the Angular ecosystem rather than React.
Declarative, incremental state management library
State Adapt is a frontend state management library that provides a declarative approach to managing state with built-in support for asynchronous actions and React integration, making it a direct fit for complex UI architectures.
A Blazor State management library by TimeWarp.
This library provides a structured state management pattern for Blazor applications, featuring a global store, asynchronous action handling, and immutable state updates, though it is tailored for the .NET ecosystem rather than React.
| Repository | Stele | Limbaj | Licență | Ultimul push |
|---|---|---|---|---|
| reduxjs/redux-toolkit | 11.2K | TypeScript | MIT | |
| reduxjs/redux | 61.5K | TypeScript | MIT | |
| reactjs/react-redux | 23.5K | TypeScript | MIT | |
| pmndrs/zustand | 58.4K | TypeScript | MIT | |
| mobxjs/mobx | 28.2K | TypeScript | MIT | |
| pmndrs/jotai | 21.2K | TypeScript | MIT | |
| ctrlplusb/easy-peasy | 5K | JavaScript | MIT | |
| ngrx/platform | 8.3K | TypeScript | NOASSERTION | |
| facebookexperimental/recoil | 19.5K | JavaScript | MIT | |
| reflux/refluxjs | 5.3K | JavaScript | BSD-3-Clause |