3.0.0 (2024-08-27)
react-native-mmkv V3 is now stable!!! 🎉🥳
V3 is a complete rewrite of the react-native-mmkv codebase to make it a pure C++ TurboModule (which has a better startup speed), and now shares a single codebase across iOS and Android for consistency 👏
Important
react-native-mmkv 3.0.0 requires react-native 0.74 or higher!
✨ Features
- Fully rewrite react-native-mmkv to a single pure C++ / CxxTurboModule 🫴 (#656 / 87dedcd / 660cda3)
- Add
trim()
func andsize
property (b2d80fa) - BREAKING: Use
ArrayBuffer
instead ofUint8Array
ingetBuffer
(c03ef4d) - BREAKING: Properly throw errors if
set
orrecrypt
failed (#706) (0fde8a5) - Support AppGroups 🚀 (#705) (5a63632)
- Add Automocking in vitest (#666) (86d5e94)
- Support 16KB page size on newer Android phones 🥳
🐛 Bug Fixes
- Fix encryption not working on keys longer than 10 characters 🔥
- Fix closing destroy (3c2babd / 6eacc14)
- Only generate C++ bindings, skip Java/ObjC (e89a472)
- Use
FORCE_POSIX
to force C++ (8fa5ec7) - Always
trim
, removeWeakRef
(6dfc8e1) - Only log Warnings or Errors in Release (cb5347b)
- Increase heap (ac130f8)
- Throw error if TurboModules are not found (8770d5d)
- Use
isTest
(57a4545) - Eagerly initialize TurboModule because Proxies are slow (#671) (d1f9a1a)
💨 Performance Improvements
- Make react-native-mmkv a CxxTurboModule - faster, and less initialization overhead/complexity!
- Clear memory cache on
trim
and dtor (c01acb5)