immerjs/immer
This system is a JavaScript/TypeScript library for managing immutable state through a 'produce' pattern, allowing safe mutation of draft objects. It provides core utilities for deep copying, patch generation, and strict mode configuration, while supporting advanced data structures like Maps and Sets. The codebase is structured with a clear public API, internal modules, and comprehensive type definitions for both TypeScript and Flow. Additionally, it includes performance benchmarking tools to compare its speed against other libraries and a documentation site for user guidance.
58.4
Adequate · 2 August 2026
19k
lines of production code
JavaScript
with TypeScript
2
bus factor · 221 authors in all
3
measurements over time
How it got here
2017–2018 · Build and test infrastructure modernization
The project modernized its build and testing infrastructure by migrating from Jest to Vitest and adopting tsup for bundling. This period also introduced comprehensive performance benchmarks and expanded type-checking tests to ensure code quality and speed.
5 changes
2019–2025 · API restructuring and testing modernization
This period focused on modernizing the project's infrastructure by migrating the test suite to Vitest and refactoring the source code into a clear public and internal API structure. It also introduced new features such as Map/Set support, optimized array methods, and a new current() utility, while significantly improving TypeScript type definitions and documentation.
12 changes
Survey your own repository
immerjs/immer was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point the surveyor at a repository you know and see whether you agree with it.
About this page
- The description of this project is derived from its own commit history, not from its README.
- The score is its highest published measurement, taken on 2 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a3be9df762 — the exact code this score is about.
- Scored under rubric rubric-2026.08.18. Score the same commit under that rubric and you get the same number.