Skip to content
randomBytes for react-native
Branch: master
Clone or download
Latest commit 23ed4ca Jan 22, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
RNRandomBytes.xcodeproj Support TVOS target Apr 26, 2018
android Update build.gradle (#33) Jan 22, 2019
.gitignore chore: update .gitignore Sep 16, 2018
LICENSE Initial commit Nov 19, 2015 docs: outline two usage scenarios Apr 19, 2018
RNRandomBytes.h React native 0.56+ support (iOS) (#28) Jul 30, 2018
RNRandomBytes.m React native 0.56+ support (iOS) (#28) Jul 30, 2018
package.json 3.5.2 Jan 22, 2019
settings.gradle add android versoin Jan 13, 2016



import { randomBytes } from 'react-native-randombytes'

// synchronous API
// uses SJCL
const rand = randomBytes(4)

// asynchronous API
// uses iOS-side SecRandomCopyBytes
randomBytes(4, (err, bytes) => {
  // bytes is a Buffer object


  1. Follow the steps in the next section

  2. You have two options depending on your needs:

    1. if you're trying to get Node.js or browser crypto modules working in React Native, follow the installation workflow in react-native-crypto.
    2. if you only need asynchronous random bytes generation, and don't care about getting back Buffer objects, you can do the following:
    import { NativeModules } from 'react-native'
    const { RNRandomBytes } = NativeModules
    RNRandomBytes.randomBytes(32, (err, bytes) => {
      // bytes is a base64string

Automatic - Android / iOS (recommended)

react-native link


If Automatic installation failed you, dry your tears and read on.


  • Drag RNRandomBytes.xcodeproj from node_modules/react-native-randombytes into your XCode project.

  • Click on the project in XCode, go to Build Phases, then Link Binary With Libraries and add libRNRandomBytes.a

Confused? See an example with screenshots here


  • Update Gradle Settings
// file: android/settings.gradle

include ':randombytes', ':app'
project(':randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android')
  • Update Gradle Build
// file: android/app/build.gradle

dependencies {
    compile project(':randombytes')
  • Register React Package
import com.bitgo.randombytes.RandomBytesPackage // import

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {

    private ReactInstanceManager mReactInstanceManager;
    private ReactRootView mReactRootView;

    protected void onCreate(Bundle savedInstanceState) {
        mReactRootView = new ReactRootView(this);
        mReactInstanceManager = ReactInstanceManager.builder()
                .addPackage(new MainReactPackage())
                .addPackage(new RandomBytesPackage()) // register package here
        mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null);
You can’t perform that action at this time.