30 open-source projects similar to immerjs/use-immer, ranked by how many features they have in common. Compare stars, activity and what each one does to find the best Use Immer alternative.
use-immer is a React state management utility that provides a custom hook for updating immutable state. It allows for the modification of a temporary draft version of data to calculate the next state transition. The tool simplifies the management of complex state by enabling direct mutations on a draft, which removes the need to manually copy nested objects or arrays using spread operators. This approach ensures the generation of a new immutable snapshot for predictable state changes. The library covers capabilities for updating deeply nested state and supports processing state changes throu
React is a JavaScript library for building user interfaces based on a component-driven architecture and unidirectional data flow.
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
Immer is an immutable state management library for JavaScript that enables the creation of new versions of state trees. It functions as a state container that uses a proxy-based handler to ensure data immutability. The library utilizes a copy-on-write mechanism and a draft-based mutation model. This allows users to write mutating code on a temporary proxy, which the system then uses to produce a new immutable result while keeping the original state unchanged. The project covers immutable state management and complex object cloning to facilitate predictable state transitions. These capabiliti
Akita is a JavaScript state management library that provides a system for managing application data and user interface state. It utilizes an observable data store and immutable state containers to synchronize data across interfaces, employing an entity state manager to handle flat collections of objects with unique identifiers. The project distinguishes itself through a comprehensive history management system that supports both global application-wide state reversal and granular, per-entity undo and redo functionality. It also includes a client-side data cache with time-to-live settings to pr
This project is a React learning resource consisting of starter files and reference projects. It provides a collection of full stack React project templates and component library examples to demonstrate the construction of interactive user interfaces and single page applications. The resource includes a state management guide covering the use of hooks, reducers, and context providers. It features practical implementations for managing local component state, synchronizing global application data, and handling complex state transitions. The material covers full stack web development, including
react-use is a collection of reusable state and effect hooks for managing common logic in React applications. It serves as a comprehensive library for implementing state management patterns and wrapping various browser APIs into consistent hook interfaces. The project provides a specialized toolkit for DOM interaction and browser API integration, allowing components to track element dimensions, manage cookies, and monitor hardware sensors. It includes a suite of animation and timing utilities for physics-based numeric interpolation and frame-synced state updates. Beyond basic state managemen
This project is an implementation of React Server Components, providing a full-stack component architecture that blends server-side rendering with client-side interactivity. It enables the development of web applications where server-only components for data fetching and interactive client components coexist within a single component tree. The system focuses on server-client data orchestration, allowing for the execution of server functions and database mutations across the network boundary. It distinguishes itself through a hybrid component architecture that shifts component execution to the
React is a JavaScript library for building user interfaces through the composition of modular, self-contained components. It employs a declarative programming model where developers describe the desired visual state, and the library automatically manages the underlying document updates and state synchronization. By utilizing a virtual representation of the document, it calculates and applies minimal changes to the browser, ensuring efficient rendering even in complex applications. The library distinguishes itself through a sophisticated scheduling system that manages rendering work in increme
Immer is an immutable state management library used to create new versions of data structures. It allows the production of new state by mutating a temporary draft instead of using manual object spreading. The project implements structural sharing to reuse unchanged parts of a data tree between versions, which reduces memory consumption. It also functions as a JSON patch generator to calculate and output the differences between two state versions. To ensure data integrity, the library includes a state mutation protector that freezes data structures to detect and prevent accidental modificatio
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
Draft-js is a framework for building customizable rich text editors within React applications. It serves as a state manager for document content and metadata, providing a system to handle text ranges, atomic blocks, and the conversion of HTML strings into structured document formats. The framework enables the creation of interactive editing interfaces that support custom inline styling and configurable block rendering. It includes tools for managing rich media document handling, allowing the integration of non-editable content and metadata into a text stream. The project covers a broad range
This is a JavaScript immutable data library used to create objects and arrays that prevent direct mutation. It serves as an immutable state manager and object wrapper designed to ensure data consistency by blocking modifications while remaining compatible with standard JavaScript syntax. The library functions as a converter that transforms standard mutable data into frozen structures and can convert them back for local modifications. This allows for a workflow where data is switched between immutable and mutable versions to perform bulk edits before locking the state again. The project provi
This repository serves as a comprehensive knowledge base and study guide for developers preparing for technical assessments and job screenings focused on React. It provides a structured collection of common industry inquiries and answers designed to build proficiency in the core concepts and patterns required for modern web interface development. The resource covers the fundamental pillars of the library, including component-based architecture, declarative rendering, and unidirectional data flow. It details essential patterns for managing both local and global application state, as well as te
This project is an open-source educational resource and technical guide focused on React.js. It serves as a learning platform and curriculum for mastering frontend web development through structured tutorials and hands-on coding exercises. The resource specifically focuses on component architecture and the creation of modular, reusable user interfaces. It provides guidance on implementing unidirectional data flow and managing the lifecycle of interactive components. The curriculum covers core capabilities including state management patterns and the implementation of global stores. It transla
Valtio is a proxy-based state management library and reactive state engine that provides a mutable state store. It allows application state to be updated through direct object mutations rather than immutable patterns, using JavaScript proxies to track changes and trigger updates. For React applications, it includes a synchronization hook that ensures components re-render only when the specific properties they access are modified. The system supports reactive data derivation through computed properties that automatically update when their underlying dependencies change. It maintains reactivity
This project is an interactive learning platform designed for mastering component-based user interface patterns and state management using the React library. It functions as a frontend development tutorial and course, providing a guided environment for learning declarative rendering and virtual DOM concepts. The platform distinguishes itself through a live-reload coding environment and a split-view interface for real-time code validation. These tools allow learners to compare their live code output against target solutions and use guided source-code markers to identify required edits and crit
react-basic provides a conceptual implementation of the React model, focusing on a component-based UI architecture. It employs pure functions to transform raw data into structural interface representations and uses a declarative system for managing UI state and hierarchical data distribution. The project distinguishes itself through specialized caching strategies, including tree-based result caching that stores values based on the structural position of elements. It also features a mechanism for deferred function execution to remove boilerplate from business paths and supports the isolation o
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
React Refresh Webpack Plugin is a development tool that enables live reloading of React components while preserving their local state during development. It integrates with build processes to instantly update component code without losing user state or session data, while also offering options to clear and reinitialize component state when unstable interfaces need clean recovery. The plugin manages updates and state preservation in the browser by intercepting the bundling lifecycle, applying abstract syntax tree transformations to inject metadata and preamble hooks, and communicating with mod
React Cursor is a state management library for React applications that maintains centralized application state through hierarchical cursor paths and immutable data modeling. It stores all application data in a single root location, keeping downward component trees stateless and predictable. The library enables path-based cursor refinement, allowing developers to drill down through recursive data structures to create localized child cursors pointing to specific nested substructures. Modifications are propagated upward by generating new immutable state trees using pure function updates applied
Constate is a global state management tool for React designed to minimize unnecessary component re-renders. It functions as a state manager and optimization tool that utilizes specialized contexts to organize shared data across a component tree. The library distinguishes itself through a state-slicing provider pattern, which splits global state into multiple contexts to isolate data dependencies. It includes a state selector system that allows components to extract specific slices of global state, ensuring interface updates only occur when the selected data dependencies change. The project c
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 project is a collection of architectural guidelines and design patterns for building applications with the React library. It provides a framework for organizing frontend architecture, component design standards, and state management strategies to reduce technical debt and complexity. The guide emphasizes a modular approach to component design, focusing on the separation of business logic from the user interface and the use of primitive props to ensure single responsibility. It advocates for a testing philosophy centered on user behavior and integration outcomes rather than internal imple
This project is a comprehensive collection of reusable code snippets, custom hooks, and implementation patterns for building user interfaces with React. It serves as a library of short examples designed to solve common development tasks, ranging from state management to DOM integration. The collection provides a wide array of specialized utilities for interacting with browser APIs, including window dimension tracking, media query evaluation, and online status monitoring. It also includes practical guides and snippets for performance optimization, such as memoization, lazy loading, and state c
This library provides a collection of strongly typed hooks designed to manage asynchronous tasks, component state, and DOM interactions within user interfaces. It serves as a utility toolkit for tracking data changes, caching asynchronous results, and synchronizing references across both server and browser rendering environments. The project distinguishes itself by offering specialized mechanisms for regulating high-frequency user inputs through debouncing and throttling techniques. It simplifies complex browser interactions, such as keyboard shortcuts, clipboard access, and viewport visibili
usehooks-ts is a comprehensive collection of reusable TypeScript-based hooks designed for managing state, DOM events, and browser API interactions within React applications. It provides a typed library of functions to handle common frontend patterns and side effects. The project distinguishes itself by offering specialized hooks for browser integration, including tools for interacting with the system clipboard, managing local and session storage persistence, and loading external scripts. It also includes utilities for responsive UI development, such as tracking media queries, window dimension
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
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 project is a comprehensive library of reusable React hooks designed to simplify browser API integration, state management, and component lifecycle tracking. It provides a declarative interface for managing complex browser interactions, allowing developers to encapsulate imperative logic into modular, composable functions that integrate directly with the component lifecycle. The library distinguishes itself by offering specialized utilities for asynchronous data orchestration, including built-in caching, retry logic, and loading state management. It also features advanced performance opti