stapp-persist is a module capable of persisting and rehydrating an application's state. stapp-persist is as compatible with redux-persist library as possible. You can use storages, transformers, and reconcilers compatible with redux-persist.


npm install stapp-persist stapp rxjs
# OR using stapp-cli-tools
stapp install stapp-persist

Peer dependencies

  • stapp: >= 2.6
  • rxjs: >= 6


type persist = (config: {
  key: string
  storage: AsyncStorage
  whiteList?: string[]
  blackList?: string[]
  transforms?: Transform[]
  throttle?: number
  stateReconciler?: (<S>(restoredState: S, originalState: S) => S) | false
  serialize?: boolean
  timeout?: number
}) => Module<{ clearStorage: () => void }, {}>

type AsyncStorage = {
  getItem(key: string): Promise<any>
  removeItem(key: string): Promise<any>
  setItem(key: string, value: string): Promise<any>

type Transform = {
  in: (subState: any, key?: string, state?: any) => any,
  out: (subState: any, key?: string, state?: any) => any,
  config?: PersistConfig,


Primary case: use sessionStorage or localStorage to store and rehydrate an application's state.

import { createApp } from 'stapp'
import { persist, toAsync } from 'stapp-persist'

const app = createApp({
  name: 'My App',
  modules: [
      key: 'My App',
      storage: toAsync(sessionStorage)

// later, if saving storage

whiteList and blackList

whiteList and blackList will filter state by keys. Note, that whiteList has higher priority than blackList: if both are provided, only whiteList will be used.


Throttles state changes before saving them to the storage.


If set to false, will not serialize and deserialize values.


Ignores value, returned from storage.getItem() if the execution time exceeds timeout value.


As stated, stapp-persist API is made as compatible with redux-persist as possible. See redux-perist docs for more information on transformers, storages, and state reconcilers.

results matching ""

    No results matching ""