Package Exports
- react-native-mmkv
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 (react-native-mmkv) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
MMKV
MMKV is an efficient, small mobile key-value storage framework developed by WeChat.
See Tencent/MMKV for more information
react-native-mmkv is a library that allows you to use MMKV inside your React Native applications.
Features
- Get and set strings, booleans and numbers
- Fully synchronous calls, no async/await, no Promises, no Bridge.
- High performance because everything is written in C++ (even the JS functions have C++ bodies!)
- ~30x faster than AsyncStorage
- Uses JSI instead of the "old" Bridge
Fun fact: since all the JS functions have C++ implementations, you can also directly call them in reanimated worklets
Benchmark

AsyncStorage vs MMKV: Reading a value from Storage 1000 times.
Measured in milliseconds on an iPhone 8, lower is better.
Installation
npm install react-native-mmkv
cd ios && pod install
Usage
Set
import { MMKV } from 'react-native-mmkv';
MMKV.set('Marc', 'user.name')
MMKV.set(20, 'user.age')
MMKV.set(true, 'is-mmkv-fast-asf')
Get
import { MMKV } from 'react-native-mmkv';
const username = MMKV.getString('user.name') // 'Marc'
const age = MMKV.getNumber('user.age') // 20
const isMmkvFastAsf = MMKV.getBoolean('is-mmkv-fast-asf') // true
Delete
import { MMKV } from 'react-native-mmkv';
MMKV.delete('user.name')
Get all keys
import { MMKV } from 'react-native-mmkv';
const keys = MMKV.getAllKeys() // ['user.name', 'user.age', 'is-mmkv-fast-asf']
Objects
import { MMKV } from 'react-native-mmkv';
const user = {
username: 'Marc',
age: 20
}
MMKV.set(JSON.stringify(user), 'user')
const jsonUser = MMKV.getString('user') // { 'username': 'Marc', 'age': 20 }
const userObject = JSON.parse(jsonUser)
redux-persist
If you want to use MMKV with redux-persist, create the following storage
object:
import { MMKV } from "react-native-mmkv";
import { Storage } from "redux-persist";
type StorageType = typeof MMKV & {
/**
* Redux Persist plugin for react-native-mmkv
*/
redux: Storage;
};
// Unfortunately redux-persist expects Promises, so we have to wrap our sync calls with Promise resolvers/rejecters
const storage: StorageType = {
redux: {
setItem: (key: string, value: string): Promise<boolean> => {
MMKV.set(value, key);
return Promise.resolve(true);
},
getItem: (key: string): Promise<string> =>
Promise.resolve(MMKV.getString(key)),
removeItem: (key: string): Promise<void> => {
MMKV.delete(key);
return Promise.resolve();
},
},
...MMKV,
};
export default storage;
Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
License
MIT