JSPM

@piotr-cz/redux-persist-idb-storage

1.1.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3597
  • Score
    100M100P100Q157635F
  • License MIT

Redux Persist adapter for IndexedDB storage

Package Exports

  • @piotr-cz/redux-persist-idb-storage
  • @piotr-cz/redux-persist-idb-storage/dist/redux-persist-idb-storage.es.js
  • @piotr-cz/redux-persist-idb-storage/dist/redux-persist-idb-storage.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@piotr-cz/redux-persist-idb-storage) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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

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 to 1.
  • upgradeCallback (optional): Defaults to upgradeDb => upgradeDb.createObjectStore(options.storeName).

Notes

  • idb dependency is locked to version ^3.0.0 as 4+ uses proxies which are not supported in older browsers
  • credits go to idb authors