• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

immerjs / immer
45%

Build:
DEFAULT BRANCH: main
Repo Added 01 Sep 2025 06:05PM UTC
Token o5SrkQ153uaqedJUWvOh2840lo1qcDN1U regen
Build 95 Last
Files 26
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: main
CHANGE BRANCH
x
Reset
Sync Branches
  • main
  • bump-node
  • dependabot/npm_and_yarn/cipher-base-1.0.6
  • dependabot/npm_and_yarn/elliptic-6.6.1
  • dependabot/npm_and_yarn/pbkdf2-3.1.3
  • dependabot/npm_and_yarn/sha.js-2.4.12
  • dependabot/npm_and_yarn/vite-5.4.21
  • dependabot/npm_and_yarn/website/babel/helpers-7.28.4
  • dependabot/npm_and_yarn/website/babel/runtime-7.28.4
  • dependabot/npm_and_yarn/website/babel/runtime-corejs3-7.28.4
  • dependabot/npm_and_yarn/website/brace-expansion-1.1.12
  • dependabot/npm_and_yarn/website/http-proxy-middleware-2.0.9
  • dependabot/npm_and_yarn/website/micromatch-4.0.8
  • dependabot/npm_and_yarn/website/prismjs-1.30.0
  • dependabot/npm_and_yarn/website/serialize-javascript-6.0.2
  • feature/add-perf-benchmark-harness
  • feature/array-method-overrides
  • feature/finalization-callbacks
  • feature/more-array-tests
  • feature/more-benchmarks-2
  • feature/more-benchmarks-3
  • feature/more-perf-benchmarks
  • feature/optimize-immer-perf
  • feature/shallow-copy-perf

23 Nov 2025 10:00AM UTC coverage: 44.999% (+2.6%) from 42.388%
19609458487

push

github

web-flow
perf: Rewrite finalization system to use a callback approach instead of tree traversal (#1183)

BREAKING CHANGE: enable loose iteration by default

* Simplify some iteration checks
* Allow passing type to get/set utils to skip archetype lookup
* Convert assigned_ to Map
* Enable loose iteration
* Replace recursive tree finalization with targeted callbacks

Ported Mutative's "finalization callback" approach as a more targeted and performant implementation for finalization compared to the existing recursive tree traversal approach:

- Added cleanup callbacks for each draft that's created
- Added callbacks to handle root drafts, assigned values, and recursing
  inside of plain values
- Updated state creation to return [draft, state] to avoid a lookup
- Rewrote patch generation system to work with callbacks instead of
  during tree traversal

* Update self-reference test with new behavior
* Apply code review suggestions
* Byte-shave scopes and patch plugin usage
* Inline finalizeAssigned
* Move fixPotentialSetContents to plugin
* Byte-shave typeof utils
* Byte-shave Object references
* Byte-shave field names and arrow functions

606 of 636 branches covered (95.28%)

Branch coverage included in aggregate %.

434 of 448 new or added lines in 10 files covered. (96.88%)

2 existing lines in 1 file now uncovered.

1468 of 3973 relevant lines covered (36.95%)

1416.04 hits per line

Relevant lines Covered
Build:
Build:
3973 RELEVANT LINES 1468 COVERED LINES
1416.04 HITS PER LINE
Source Files on main
  • Tree
  • List 26
  • Changed 11
  • Source Changed 0
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
19609458487 main perf: Rewrite finalization system to use a callback approach instead of tree traversal (#1183) BREAKING CHANGE: enable loose iteration by default * Simplify some iteration checks * Allow passing type to get/set utils to skip archetype lookup * C... push 23 Nov 2025 10:01AM UTC web-flow github
45.0
18857121209 main Merge pull request #1187 from immerjs/feature/more-benchmarks-3 Add second large object test to check v8 non-fast properties push 27 Oct 2025 10:00PM UTC web-flow github
42.39
18826212482 main Merge pull request #1186 from immerjs/feature/more-benchmarks-2 Add largeObject and mapNested benchmarks push 27 Oct 2025 12:37AM UTC web-flow github
42.42
18802477798 main feat: Optimize Immer performance where possible, introduce `setUseStrictIteration` (#1164) * Use WeakMap caching implementation of isPlainObject * Add some early returns to `finalizeProperty` * Add `strictIteration` option * Add non-strict ite... push 25 Oct 2025 11:31AM UTC web-flow github
43.01
18287118865 main Merge pull request #1182 from immerjs/feature/more-perf-benchmarks Improve perf benchmarking system with more versions, scenarios, and output push 06 Oct 2025 04:08PM UTC web-flow github
41.95
18286060303 main Merge pull request #1181 from immerjs/feature/more-array-tests Add many more tests for array behavior and update scenarios push 06 Oct 2025 03:30PM UTC web-flow github
54.72
17672956739 main chore(deps): bump prismjs from 1.29.0 to 1.30.0 in /website (#1178) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/pri... push 12 Sep 2025 11:20AM UTC web-flow github
54.7
17672949341 main chore(deps): bump serialize-javascript from 6.0.0 to 6.0.2 in /website (#1177) Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 6.0.0 to 6.0.2. - [Release notes](https://github.com/yahoo/serialize-javascript/releas... push 12 Sep 2025 11:20AM UTC web-flow github
54.72
17672921689 main chore(deps): bump @babel/runtime-corejs3 in /website (#1176) Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.20.7 to 7.28.4. - [Release notes](https://github.com/babel/babel/releases)... push 12 Sep 2025 11:19AM UTC web-flow github
54.72
17672916052 main chore(deps): bump elliptic from 6.5.2 to 6.6.1 (#1175) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.6.1. - [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.6.1) --- updated-dependencies: - dependency-nam... push 12 Sep 2025 11:18AM UTC web-flow github
54.72
See All Builds (75)

Badge your Repo: immer

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc