awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
immerjs avatar

immerjs/immer

0
View on GitHub↗
28,957 stars·870 forks·JavaScript·MIT·27 viewsimmerjs.github.io/immer↗

Immer

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 modifications.

The project provides utilities for state management benchmarking and CPU profile analysis to identify performance regressions.

Features

  • Immutable State Utilities - Provides utilities for updating deeply nested data structures through an immutable interface using temporary drafts.
  • Structural Sharing - Implements structural sharing to reuse unchanged nodes between state versions, minimizing memory consumption.
  • Finalization-Based State Commitment - Commits changes from a temporary proxy draft to a final immutable state once the mutation function completes.
  • Recursive Proxy Wrapping - Dynamically wraps nested objects in proxies to track modifications deep within a data tree.
  • Proxy-Based Reactivity - Uses JavaScript Proxies to intercept property access and assignments for recording state changes.
  • State Management Libraries - A library designed for managing immutable application state via a draft-based mutation pattern.
  • Mutation Protection - Freezes data structures to detect and prevent accidental modifications to a protected immutable state.
  • JSON Patching - Calculates differences between state versions and outputs them as standard-compliant JSON patches.
  • JSON Patch Generation - Generates standard JSON patches to describe the specific differences between two versions of a data tree.
  • Memory-Efficient Data Processing Utilities - Reduces memory overhead by sharing unchanged references between different versions of a data structure.
  • Mutation Prevention - Freezes data structures to detect and block unintended modifications to a protected state.
  • Object Freezing - Recursively applies Object.freeze to produced states to prevent accidental direct mutations.
  • Immutable State Patterns - Ensures strict immutability and prevents accidental mutations by freezing the application state.
  • State Management - Utility for working with immutable state via mutation.
  • Functional Programming - Functional state management with immutability.
  • State Management - Listed in the “State Management” section of the Awesome React awesome list.

Star history

Star history chart for immerjs/immerStar history chart for immerjs/immer

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does immerjs/immer do?

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.

What are the main features of immerjs/immer?

The main features of immerjs/immer are: Immutable State Utilities, Structural Sharing, Finalization-Based State Commitment, Recursive Proxy Wrapping, Proxy-Based Reactivity, State Management Libraries, Mutation Protection, JSON Patching.

What are some open-source alternatives to immerjs/immer?

Open-source alternatives to immerjs/immer include: mweststrate/immer — Immer is an immutable state management library for JavaScript that enables the creation of new versions of state… pmndrs/zustand — Zustand is a state management library that provides a centralized store for managing shared application data. It… immutable-js/immutable-js — Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a… pmndrs/valtio — Valtio is a proxy-based state management library and reactive state engine that provides a mutable state store. It… effector/effector — Effector is a reactive state management library designed for building complex, event-driven applications. It functions… mobxjs/mobx — MobX is a reactive state management library and fine-grained reactivity engine. It provides an observable data store…

Open-source alternatives to Immer

Similar open-source projects, ranked by how many features they share with Immer.
  • mweststrate/immermweststrate avatar

    mweststrate/immer

    28,957View on GitHub↗

    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

    JavaScript
    View on GitHub↗28,957
  • pmndrs/zustandpmndrs avatar

    pmndrs/zustand

    58,371View on GitHub↗

    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

    TypeScripthacktoberfesthooksreact
    View on GitHub↗58,371
  • immutable-js/immutable-jsimmutable-js avatar

    immutable-js/immutable-js

    33,060View on GitHub↗

    Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a collection of immutable objects and arrays that prevent direct mutation to ensure predictable state management in JavaScript applications. The library utilizes structural sharing to efficiently create new versions of data without full copying and implements lazy sequence processing to chain data transformations that execute only when values are requested. It also supports batch mutation processing, allowing multiple changes to be applied to a temporary mutable copy before returning

    TypeScript
    View on GitHub↗33,060
  • pmndrs/valtiopmndrs avatar

    pmndrs/valtio

    10,196View on GitHub↗

    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

    TypeScriptmutableproxyreact
    View on GitHub↗10,196
  • See all 30 alternatives to Immer→