Back to Explore

immerjs/immer

GitHub
10 updates · last 90 days1 watchersOpen source

Last release:

Immer helps you create the next immutable state tree by mutating the current one, making it useful for state management patterns like Redux-style reducer logic. It provides documentation at https://immerjs.github.io/immer/ and release notes on its GitHub release page.

Project status

  • Actively maintained: Immer has recent GitHub activity (last upstream push 2026-08-19) and multiple tagged updates in 2026, including v11.1.18 on 2026-08-19.
  • Cadence: Updates appear frequently, roughly every 1 to 3 weeks in recent months (v11.1.18 on Aug 19, v11.1.17 on Aug 16, v11.1.16 on Aug 5, v11.1.15 on Jul 16, v11.1.14 on Jul 16).

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v11.1.18

    v11.1.18 primarily fixes a TypeScript/typing conflict related to declaring a global `Iterator` variable when compiling against newer ESNext lib definitions. The code change avoids global scope augmentation by feature-detecting `Iterator.from` via `globalThis` instead.

  • v11.1.17

    v11.1.17 is described as a bug fix to preserve structural sharing for no-op array-method calls. The code changes confirm significant work around avoiding unnecessary copies for certain array mutations, but they also include an additional, broader fix in value finalization that is not mentioned in the release notes.

  • v11.1.16

    v11.1.16 is a small bug fix release. It adjusts how the array-methods plugin records inserted indices internally, and adds a regression test to ensure patch generation remains correct after pop and subsequent push.

  • v11.1.15

    v11.1.15 is a TypeScript typing fix for Immer's curried produceWithPatches, aiming to ensure the return type infers the correct State type. The release notes mention correcting the curried produceWithPatches return type, and the code diff confirms this by adding new overloads and tests focused on inference behavior.

  • v11.1.14

    v11.1.14 primarily fixes error handling for Immer patches, ensuring applyPatches reports a proper Immer error instead of a native runtime error when a patch path traverses a null intermediate value. The repository also includes CI and documentation updates related to GitHub Pages and contributor-facing workflows.

    Security
  • v11.1.13

    v11.1.13 includes a targeted fix for Immer's array-method behavior when using the array-methods plugin, specifically around draft relocation after reverse/sort. The release notes call out that base references are now drafted correctly to prevent accidental mutations of the original base state.

  • v11.1.12

    Release v11.1.12 reverts a previously added prototype pollution mitigation (referenced as CVE-2026-XXXX) related to constructor.prototype access. The code changes show the removal of multiple reserved-property guards in the core proxy traps and the corresponding tests, effectively changing the security behavior of drafts.

    BreakingSecurity
  • v11.1.11

    v11.1.11 contains a single documented bug fix focused on improving DraftMap compatibility for the .entries() and .values() iterators. The release notes do not describe any other runtime changes.

  • v11.1.10

    v11.1.10 includes a targeted bug fix for Immer proxy behavior when assigning `undefined` to a property that exists only via prototype inheritance. The change adjusts the proxy set-trap logic so the assignment is preserved as an own property and patch generation reflects it correctly.

  • v11.1.9

    v11.1.9 is a security-focused patch release that prevents prototype pollution through reserved property access on Immer drafts. The release notes describe the CVE fix specifically for constructor.prototype access, but the code changes show broader hardening around constructor, __proto__, and prototype interactions.

    Security
  • v11.1.8

    v11.1.8 is a small release focused on TypeScript typings for Immer helpers. The runtime logic appears unchanged, but the TypeScript overloads for current() and original() were tightened to better reflect draft unwrapping.

    Breaking
  • v11.1.7

    v11.1.7 is primarily a type-level fix related to `WritableDraft`. The code changes refine how `WritableDraft` treats arrays versus tuples (including variadic tuples) and adjust internal mapped type inference logic, with additional test coverage.

    Breaking