# redux-persist-capacitor

> Storage adapter to use Capacitor Storage with redux-persist.

Latest version **1.1.0** (published 2022-09-15) · MIT license · 76 weekly downloads

## Install

```sh
npm install redux-persist-capacitor
pnpm add redux-persist-capacitor
yarn add redux-persist-capacitor
bun add redux-persist-capacitor
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score; declining downloads.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2022-09-15 |
| First published | 2021-01-06 |
| Weekly downloads | 76 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 7.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Ryan Willis |
| Maintainers | ryanwillis |
| Keywords | redux, redux-persist, capacitor, capacitor, storage |

## Links

- npm: https://www.npmjs.com/package/redux-persist-capacitor
- Repository: https://github.com/ryanwillis/redux-persist-capacitor
- Homepage: https://github.com/ryanwillis/redux-persist-capacitor#readme
- Issues: https://github.com/ryanwillis/redux-persist-capacitor/issues
- npm.io page: https://npm.io/package/redux-persist-capacitor

## Dependencies (1)

- [@capacitor/preferences](https://npm.io/package/@capacitor/preferences.md) ^4.0.1

## Alternatives

- [localforage](https://npm.io/package/localforage.md) — 6.2M weekly downloads
- [localforage-observable](https://npm.io/package/localforage-observable.md) — 30.8K weekly downloads
- [@y/y](https://npm.io/package/@y/y.md) — 30.1K weekly downloads
- [@metaobjectsdev/render](https://npm.io/package/@metaobjectsdev/render.md) — 3.5K weekly downloads
- [@ledgerhq/coin-algorand](https://npm.io/package/@ledgerhq/coin-algorand.md) — 1.1K weekly downloads

## Recent versions

- 1.1.0 (latest) — 2022-09-15
- 1.0.4 — 2022-02-20
- 1.0.3 — 2021-07-07
- 1.0.2 — 2021-01-06
- 1.0.1 — 2021-01-06
- 1.0.0 — 2021-01-06

## README

# redux-persist-capacitor
Storage adapter to use [Capacitor Storage](https://capacitorjs.com/docs/apis/storage) with [redux-persist](https://github.com/rt2zz/redux-persist).

## Installation
```bash
npm install --save redux-persist-capacitor
```

## Usage
CapacitorStorage can be used as a drop-in replacement for any redux-persist storage adapter.
```javascript
import { createStore } from 'redux'
import { persistStore, persistReducer } from 'redux-persist'
import autoMergeLevel1 from 'redux-persist/lib/stateReconciler/autoMergeLevel1';
import CapacitorStorage from 'redux-persist-capacitor';

import rootReducer from './reducers'

const persistConfig = {
  key: 'root',
  storage: CapacitorStorage, // default export is already instantiated
  stateReconciler: autoMergeLevel1,
};

const persistedReducer = persistReducer(persistConfig, rootReducer)

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}
```
Here's a recent example using multiple [@reduxjs/toolkit](https://redux-toolkit.js.org/) `slices` and `configureStore`.
```javascript
import { configureStore, createSlice, getDefaultMiddleware } from '@reduxjs/toolkit';
import { persistCombineReducers, persistStore, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER } from 'redux-persist';
import autoMergeLevel1 from 'redux-persist/lib/stateReconciler/autoMergeLevel1';
import CapacitorStorage from 'redux-persist-capacitor';

const persistConfig = {
  key: 'root',
  storage: CapacitorStorage,
  stateReconciler: autoMergeLevel1,
};

const authSlice = createSlice({
  name: 'auth',
  initialState: {user: null},
  reducers: {
    setUser: (state, action) => {
      state.user = action.payload;
    }
  }
});

const appSlice = createSlice({
  name: 'app',
  initialState: {isLoading: false},
  reducers: {
    setIsLoading: (state, action) => {
      state.isLoading = action.payload;
    }
  }
});

const _persistedReducer = persistCombineReducers( persistConfig, {
  auth: authSlice.reducer,
  app: appSlice.reducer
});

export const store = configureStore({
  reducer: _persistedReducer,
  middleware: getDefaultMiddleware({
    serializableCheck: {
      ignoredActions: [
        FLUSH,
        REHYDRATE,
        PAUSE,
        PERSIST,
        PURGE,
        REGISTER
      ],
    },
  }),
});

export const persistor = persistStore(store);
```

---
_Source: https://npm.io/package/redux-persist-capacitor · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
