Con la creciente complejidad de las aplicaciones de página única (single-page applications, SPAs) con JavaScript, manejar la previsibilidad del estado es cada vez más importante. La inmutabilidad puede ayudar a garantizar que nuestras aplicaciones se comporten de forma consistente, pero por desgracia, JavaScript no ofrece soporte integrado para estructuras de datos profundamente inmutables (véase la propuesta de registros y tuplas para ECMAScript). Immer (“siempre” en Alemán) es un pequeño paquete que nos permite trabajar con estado inmutable de forma más conveniente. Está basado en el mecanismo de copia en escritura (copy-on-write), tiene una API mínima y opera sobre objetos y arreglos normales de JavaScript. Esto significa que el acceso a los datos es transparente y no se requiere de grandes esfuerzos de refactorización para introducir inmutabilidad en una base de código existente. Muchos de nuestros equipos ya lo utilizan en sus bases de código JavaScript y les gusta más que Immutable.js, razón por la cual lo promovemos al anillo Probar.
With the increasing complexity of single-page JavaScript applications, managing state predictably is becoming more and more important. Immutability can help to ensure our applications behave consistently, but unfortunately JavaScript doesn't natively support the ability to create immutable objects. Libraries such as Immutable.js filled that gap but introduced new problems because now two kinds of objects and arrays existed in the application, the library's version and the native JavaScript ones. Immer — German for always — is a tiny package that lets you work with immutable state in a more convenient way. It's based on the copy-on-write mechanism, has a minimal API and operates on normal JavaScript objects and arrays. This means that data access is seamless and no large refactoring efforts are needed when introducing immutability to an existing codebase.