- 🫳 Drop-in replacement for
crypto.getRandomValues - ⚡ Uses JSI for faster operations between Native and JS
- 🔒 Native C++ secure randomization using libsodium
npm install @korekoi/react-native-get-random-values
This library needs these dependencies to be installed in your project before you can use it:
npm install react-native-nitro-modules
import "@korekoi/react-native-get-random-values" const array = new Uint8Array(32); global.crypto.getRandomValues(array);
See the example app
The most downloaded and probably the only available library to polyfill this method (until now) has been LinusU/react-native-get-random-values, but our solution has a couple improvements:
- JSI, Native and JavaScript communicate through a memory reference and not by serializing data in Base64 back-and-forth, which results in faster operations
- Randomization is made using libsodium for both iOS and Android
- instead of Java SecureRandom for Android and Objective-C SecRandomCopyBytes or Swift SecRandomCopyBytes for iOS
Percentage represents how much faster JSI is compared to B64
| iOS | iOS Simulator | Android |
|---|---|---|
| iPhone 13 Benchmark | Simulator Benchmark | Feel free to open an issue |
| iPhone 13 on iOS 17 | iPhone 16 Pro Simulator, iOS 18, running on an MacBook Air M1 2020 16GB ram | |
| 10k loops at 65535 bytes with Base 64 crashed the app |