@piotr-cz/redux-persist-idb-storage
v1.1.3
Published
Redux Persist adapter for IndexedDB storage
Downloads
6,093
Maintainers
Readme
Redux Persist adapter for IndexedDB storage
Storage adapter to use IndexedDB via idb v3 with redux-persist ripped from idb v3 docs > Examples section
Installation
Using npm:
npm install --save @piotr-cz/redux-persist-idb-storage
or Yarn:
yarn add @piotr-cz/redux-persist-idb-storage
Requirements
- Promise support/ polyfill
Setup
Import the storage and include it in persistConfig
when creating Redux store:
// configureStore.js
// Using CommonJS modules
import createIdbStorage from '@piotr-cz/redux-persist-idb-storage'
// Or using ES6 modules
import createIdbStorage from '@piotr-cz/redux-persist-idb-storage/src'
const persistConfig = {
key: 'root',
storage: createIdbStorage({name: 'myApp', storeName: 'keyval'}),
serialize: false, // Data serialization is not required and disabling it allows you to inspect storage value in DevTools
}
// ...
Server-Side Rendering
When using Server-Side Rendering (SSR), indexedDB won't be available in the environment.
In this case you may use feature detection with a fallback to use default redux-persist storage (which resolves to noop functions):
// configureStore.js
// Redux Persist storage
import defaultStorage from 'redux-persist/lib/storage'
// IndexedDB storage
import createIdbStorage from '@piotr-cz/redux-persist-idb-storage/src'
const persistConfig = {
key: 'root',
storage: globalThis.indexedDB ? createIdbStorage({name: 'myApp', storeName: 'keyval'}) : defaultStorage,
serialize: false,
}
Options
See idb API
name
(optional): IndexedDB Database name. Defaults to'keyval-store'
.storeName
(optional): IndexedDB Store name. Defaults to'keyval'
.version
(optional): Schema version. Defaults to1
.upgradeCallback
(optional): Defaults toupgradeDb => upgradeDb.createObjectStore(options.storeName)
.