npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-bulletproof-redux-provider

v1.0.3

Published

A bulletproof Redux provider for secure encryption of your user's data

Downloads

12

Readme

React Native Bulletproof Redux Provider

Encrypted Redux Provider wrapper for React Native based on AsyncStorage, react-native-keychain and react-native-securerandom.

Under the hood, it uses redux-persist and redux-persist-transform-encrypt for persistence and encryption.

Why ?

By default, the local storage mechanism in React Native (AsyncStorage) is unencrypted. So we're adding a wrapper around it to make it more bulletproof.

A random key is generated at runtime using react-native-securerandom on the user's device and permanently stored using the react-native-keychain module. That key is used to encrypt our Redux store, so nobody from outside can read that data.

For a more extensive explanation on how this works, check out the blog post I wrote about this approach.

Installation

$ yarn add react-native-bulletproof-redux-provider
$ yarn add @react-native-async-storage/async-storage react-native-keychain react-native-securerandom

OR

$ npm install react-native-bulletproof-redux-provider
$ npm install @react-native-async-storage/async-storage react-native-keychain react-native-securerandom

$ cd ios && pod install

Usage

import Provider from 'react-native-bulletproof-redux-provider';

Now simply pass in your initialState and rootReducer:

<Provider
  initialState={...}
  rootReducer={...}>
    // your app
</Provider>

After wrapping your app inside of Provider you can use the usual React bindings to access the store from your components.

Props

| Property | Description | Default value | | ------------------------------ | ----------------------------------------------------------------------------------- | ------------------------- | | rootReducer | Redux reducer used in the store configuration | none | | initialState | Initial Redux reducer state | none | | getEncryptionKey (optional) | Custom encryption key method, check types/getEncryptionKeyType for interface | getEncryptionKeyDefault | | configureStore (optional) | Custom configureStore method, check types/configureStore for interface | configureStoreDefault | | encryptionErrorCb (optional) | Gets called when encryption fails, can be used to show an error message to the user | none |

Todos

  • [ ] Unit and component tests
  • [ ] Allow passing in additional middleware array to configureStore function
  • [ ] Allow passing in additional transforms array to createPersistenceConfig function
  • [ ] Allow passing in key to createPersistenceConfig function (defaults to root)
  • [ ] Allow defining encryptionKey (username) to getEncryptionKey function (defaults to ENCRYPTED_REDUX)
  • [x] Optional callback function when encryption error occurs in StoreGate
  • [ ] Make compatible with redux-toolkit

License

MIT