immerjs/immer

Create the next immutable state by mutating the current one

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 22 minutes ago
Added to GitGenius on September 1st, 2026
Created on December 29th, 2017
Open Issues & Pull Requests: 45 (+0)
GitHub issues: Enabled
Number of forks: 882
Total Stargazers: 28,981 (+0)
Total Subscribers: 152 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 11.2 hours
Mean response time: 105.7 days
90th percentile: 322.8 days
Tracked items: 48

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 6% of issues opened in the past year have been closed. Three people close 89% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 15
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 630 days
Stale 30+ days: 12
Stale 90+ days: 11

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • question (13)
  • released (6)
  • proposal (5)
  • bug (2)
  • cannot reproduce (2)
  • issue-lacks-relevant-information (2)
  • typescript (2)
  • wontfix (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Immer is a state management library that enables writing immutable updates using mutation-style syntax.

The library solves the problem of immutable state management being verbose and error-prone. Developers typically must manually copy nested objects and arrays to ensure immutability, which becomes tedious with complex state trees. Immer inverts this workflow by letting you write code that looks like direct mutation within a draft state, then automatically produces the next immutable state. It uses a proxy-based approach to track changes made to the draft and generate a minimal immutable update, leaving the original state untouched.

Immer suits projects using Redux, MobX, or any state management system where immutability is required. It is particularly valuable when state structures are deeply nested or when reducer logic would otherwise require extensive object spreading. The library works well in React applications and integrates seamlessly with existing immutable patterns without requiring a complete architectural rewrite. Teams accustomed to mutable programming can adopt immutable state management more naturally with Immer's syntax, reducing the cognitive load of maintaining immutability constraints.

The project maintains active engagement with its issue tracker and pull request queue, responding to user questions and bug reports. Development includes regular updates to handle edge cases and improve performance across different JavaScript environments. The maintainers have established clear documentation and examples that help users understand the library's behavior with various data structures. The codebase receives ongoing refinement to ensure compatibility with modern JavaScript features and bundling tools.