May 10, 2026

Mutable drama, immutable feelings

Immer: Immutability the easy way (2018)

This new coding shortcut had people asking: genius fix or fake magic

TLDR: Immer launched as a way to make app data updates much easier without breaking the original data. But the community split fast: supporters saw a cleanup miracle, while critics mocked it as fake magic that only pretends to solve the problem.

A 2018 post by Michel Weststrate introduced Immer, a tool meant to make a very annoying coding chore feel almost effortless. The promise was simple: instead of carefully rebuilding your app’s data every time something changes, you write updates in a way that looks normal and easy, and Immer handles the safe copy behind the scenes. For developers building apps, especially with Redux, that was pitched as a huge relief from mountains of repetitive busywork.

But the comments? Instant side-eye. The loudest reaction wasn’t “wow, amazing,” but more like: do we even need this whole immutability obsession at all? One commenter, jFriedensreich, basically kicked off the drama by saying they’d never found a good application for these kinds of libraries, arguing that they seem to recreate normal editable objects with “virtual proxy objects” and then call that immutable. Translation for non-coders: critics felt this was less a clean solution and more a clever costume change.

That tension is the real soap opera here. Fans see Immer as a lifesaver that strips away boring code and makes state updates readable again. Skeptics see a philosophical mess: if it behaves like regular editing, is it really “immutable,” or just pretending? The humor writes itself — coders being told they can mutate data by not really mutating it is exactly the kind of brain-bending twist that turns a useful tool launch into comment-section popcorn.

Key Points

  • The article presents Immer as a JavaScript tool for simplifying immutable state updates while preserving structural sharing.
  • Immer’s `produce` function takes a current state and a producer function that mutates a proxy-based draft, leaving the original state unchanged.
  • If a producer makes no changes, Immer returns the original state rather than creating a new copy.
  • The article’s todo example shows that modified branches become new objects while unchanged parts are structurally shared.
  • A Redux reducer example is used to show how Immer can reduce boilerplate involved in manually copying and merging immutable state.

Hottest takes

"Never found a good application for any of these immutable js data libraries" — jFriedensreich
"the libraries basically recreate mutable data structures with virtual proxy objects" — jFriedensreich
"at that point what does immutable even mean?" — jFriedensreich
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.