Immer can be installed as a direct dependency, and will work in any ES5 environment:
yarn add immer
npm install immer
- CDN: Exposed global is
- ⚠️ When using a CDN, it is best to check the url in your browser and see what version it resolves to, so that your users aren't accidentally served a newer version in the future when updates are release. So use an url like: https://firstname.lastname@example.org/dist/immer.umd.production.min.js instead. Substitute
developmentin the URL for a development build.
This section only applies to version 6 and later
To make sure Immer is as small as possible, features that are not required by every project has been made opt-in, and have to be enabled explicitly. This ensures that when bundling your application for production, unused features don't take any space.
The following features can be opt-in to:
|Feature||Description||Method to call|
|ES2015 Map and Set support||To enable Immer to operate on the native |
|JSON Patch support||Immer can keep track of all the changes you make to draft objects. This can be useful for communicating changes using JSON patches|
|All of the above||Unsure what features you need? We recommend to enable all of the features above by default on new projects. Premature optimization of a few KB might not be worth the initial trouble. Also, enabling or disabling features doesn't impact the performance of Immer itself|
For example, if you want to use
produce on a
Map, you need to enable this feature once during the start of your application:
Vanilla Immer kicks in at ~3KB gzipped. Every plugin that is enabled adds < 1 KB to that. The breakdown is as follows:
Proxy is not available. For example, when running Microsoft Internet Explorer or React Native (if < v0.59 or when using the Hermes engine on React Native < 0.64) on Android. In such cases, Immer will fallback to an ES5 compatible implementation which works identically, but is a bit slower.
Since version 6, support for the fallback implementation has to be explicitly enabled by calling