Com a complexidade crescente das aplicações de página única (SPA) em JavaScript, gerenciar o estado com previsibilidade está se tornando cada vez mais importante. A imutabilidade pode ajudar a garantir que nossas aplicações se comportem de forma consistente, mas infelizmente o JavaScript não oferece estruturas de dados profundamente imutáveis integradas (veja a proposta ES para Records e Tuples). Immer — que significa "sempre" em alemão — é um pequeno pacote que permite trabalhar com o estado imutável de uma forma mais conveniente. É baseado no mecanismo copy-on-write, tem uma API mínima e opera em objects e arrays JavaScript normais. Isso significa que o acesso aos dados é feito normalmente e nenhum grande esforço de refatoração é necessário ao introduzir a imutabilidade em uma base de código existente. Muitos de nossos times agora o usam em suas bases de código JavaScript e o preferem em relação ao Immutable.js, e é por isso que nós estamos o movendo para Experimente.
Com a crescente complexidade de aplicações JavaScript de página única, gerenciar a previsibilidade do estado está se tornando cada vez mais importante. A imutabilidade pode ajudar a assegurar que nossas aplicações se comportem consistentemente, mas infelizmente o JavaScript não suporta nativamente a capacidade de criar objetos imutáveis. Bibliotecas como Immutable.js preenchem essa lacuna, mas introduzem novos problemas com a existência de dois tipos de objetos e arranjos na aplicação, a biblioteca JavaScript nativa e a versão. Immer — “sempre” em alemão — é um pacote pequeno que permite trabalhar com estado imutável de maneira mais conveniente. É baseado no mecanismo cópia-em-gravação, tem uma API mínima e opera em objetos e arranjos normais em JavaScript. Isso significa que o acesso a dados ocorre sem obstáculos e não são necessários grandes esforços de refatoração ao introduzir imutabilidade a um código existente.