Releases: ammarahm-ed/react-native-mmkv-storage
v0.6.3
- Remove fixed cmake version from build.gradle
v0.6.2
v0.6.1
- Trigger
useMMKVStorage
change whenremoveItem
is called - move
getAllMMKVInstanceIDs
andgetCurrentMMKVInstanceIDs
to module level hasKey
functions in indexer are now synchronous- Allow changing when
key
and/orstorage
inuseMMKVStorage
hook at runtime - Add
clearMemoryCache
function - Add
getKey
function to get encryption key of current MMKV instance - Prevent a possible crash when sending incorrect parameters to
create
function. - Do not recompile jsi.cpp from source on Android
- Now you can set a
defaultValue
foruseMMKVStorage
hook. - Fix a
null
exception during migration if value for a key was null - Fix numerous build issues on Android such as #155
- Fix
setValue
not stable inuseMMKVStorage
hook #157 - Fix value type of
useMMKVStorage
hook could not be changed after it was deleted. - Refactor and simplify some parts of the library
- Update MMKV to
1.2.10
What's new
Transactions
Listen to a value's lifecycle and mutate it on the go. Transactions lets you register lifecycle functions with your storage instance such as onwrite
, beforewrite
, onread
, ondelete
. This allows for a better and more managed control over the storage and also let's you build custom indexes with a few lines of code. Refer to #104 issue more detail on this feature.
storage.transactions.register("object","onwrite",(key,value) => {
//do something
})
Remember that these are not events but functions. If you register the same type of function twice, the later will take precedence.
useIndex
A hook that will take an array of keys and returns an array of values for those keys. This is supposed to work in combination with Transactions. When you have build your custom index, you will need an easy and quick way to load values for your index. useIndex hook actively listens to all read/write changes and updates the values accordingly.
const [posts, update,remove] = useIndex(postsIndex,"object",storage);
v0.6.0
v0.5.9
What's new
- The library now exports a simple
create
function which you can use to create auseMMKVStorage
hook. - The
useMMKVStorage
hook now supports setter functions. #98 Thanks to @SaltedBlowfish
What's fixed
- useMMKVStorage return value if it exists on init #105 by @vokhuyetOz
- Minor fixes in the docs.
v0.5.8
v0.5.7
- Fix return type on useMMKVStorage hook to pass ts typecheck script #92 @mateosilguero & @mmapplebeck
- Removed console.log from
useMMKVStorage
hook - Convert
removeItem
&clearStore
methods to sync.
v0.5.6
v0.5.5
Introducing useMMKVStorage
Hook 🎉
Thanks to the power of JSI, we now have our very own useMMKVStorage Hook. Think of it like a persisted state that will always write every change in storage and update your app UI instantly. It doesn't matter if you reload the app or restart it. Here's a small demo:
Import MMKVStorage
and useMMKVStorage
Hook.
import MMKVStorage, { useMMKVStorage } from "react-native-mmkv-storage";
Initialize the MMKVStorage
instance.
const MMKV = new MMKVStorage.Loader().initialize();
Next, in our component we are going to register our hook.
const App = () => {
const [user, setUser] = useMMKVStorage("user", MMKV);
return (
<View>
<Text>{user}</Text>
</View>
);
};
To update value of "user"
in storage and your App
component will automatically rerender.
setUser("andrew");
// or you can do this too anywhere in the app:
MMKV.setString("user", "andrew");
Head over to the docs for complete usage.
What's Fixed:
v0.5.4
This release fixes a lot of issues with JSI and hopefully the library should build normally now in debug and release.
- Rewrite keystore & keychain Logic in JSI to make synchronous initialization possible.
- Fixed need type definitions for callback function params #79 @mateosilguero
- FIxed return types for all functions that write to database. #75
- Fixed Crash in release build due to java.lang.UnsatisfiedLinkError: Bad JNI version returned from JNI_OnLoad #68
- Fixed build failing on android for some build environments #67
- Fix app crashing when using clearStorage #82 @focux
- Update docs to reflect latest changes and installation process
- Fixed release build on ios failed due to lower deployment target.