1.1.3 • Published 4 years ago
@piotr-cz/redux-persist-idb-storage v1.1.3
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-storageor Yarn:
yarn add @piotr-cz/redux-persist-idb-storageRequirements
- 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).