@connected-home/redux-persist-fs-storage

Redux-Persist storage engine for React Native file system

Usage no npm install needed!

<script type="module">
  import connectedHomeReduxPersistFsStorage from 'https://cdn.skypack.dev/@connected-home/redux-persist-fs-storage';
</script>

README

Redux Persist FS Storage

Redux Persist storage engine for React Native file system

Inspired by redux-persist-filesystem-storage, this module works as adapter between react-native-fs and redux-persist.

Install

yarn add react-native-fs redux-persist-fs-storage

This will install react-native-fs as dependency. So make sure to link it natively:

react-native link react-native-fs

See react-native-fs's documentation for details.

Usage

Both Redux Persist v4 and v5 are supported.

Redux Persist v5:

import { persistStore, persistReducer } from 'redux-persist';
import FSStorage from 'redux-persist-fs-storage';

const persistConfig = {
  key: 'root',
  keyPrefix: '', // the redux-persist default is `persist:` which doesn't work with some file systems
  storage: FSStorage(),
};

const persistedReducer = persistReducer(persistConfig, reducer);

const store = createStore(persistedReducer);
const persistor = persistStore(store);

Redux Persist v4:

import { persistStore } from 'redux-persist';
import FSStorage from 'redux-persist-fs-storage';

const persistor = persistStore(store, { storage: FSStorage() });

The default storage location is a folder called reduxPersist in the document directory for your app on the device. You can specify folder for persistor:

import { persistStore } from 'redux-persist';
import FSStorage, { CacheDir } from 'redux-persist-fs-storage';

const cachePersistor = persistStore(store, {
  storage: FSStorage(CacheDir, 'myApp'),
});

This will create myApp folder in cache storage for iOS and Android devices. You may create multiple persistors on different directories.