Redux Persist Transform Immutable
Add immutable sub-reducer support to redux-persist.
NOTE this handles immutable state on a per-reducer basis. If your top level state is an immutable map, this module will not work.
v5 changes from
remotedev-serialize. For existing projects that upgrade to v5, all persisted data will be lost upon the initial persist. note It is possible to write an upgrade via a custom transform that supports both formats - if you do write one please PR!
Usage with Redux Persist
const persistConfig =transforms:key: 'root'storageconst reducer =const persistedReducer =const store =
For config, please refer to redux-persist's docs.
Usage with Records
By default, immutable
Records will be persisted and restored as
Maps, because the library has no way of knowing what your
Record constructor looks like. To change this behavior and allow a
Record to be persisted and restored as a
Record instance, you'll need to do two things:
- Add a name attribute to your record (this is the second argument to a
- Pass your
Recordconstructor to the transformer's
withRecords()function to generate a transformer capable of serializing and deserializing the record.
const reducer =const store = reducerconst MyRecord =// <- Be sure to add a name field to your record
Avoiding Unnecessary Serialization
redux-persist-immutable-transform will serialize and deserialize all passed objects using
transit-immutable-js. If you are concerned about performance, you can either whitelist or blacklist reducer that you know are not immutable.
Example state object:
state =username: 'john'imageUri: 'images/profilePic.png'friends: Immutable
Set up the transformer to ignore the string-based reducer keys:
/* OR */