How To Add bitcoinjs-lib To A React Native v0.60+ Project
Add/Link the following dependencies:
yarn add bitcoinjs-lib ecpair @bitcoinerlab/secp256k1 react-native-randombytes buffer readable-stream
yarn add --dev rn-nodeify
cd ios && pod install && cd ..
- Add the following postinstall to your script in package.json:
"postinstall": "rn-nodeify --install buffer,stream,assert,events,crypto,vm,process --hack"
Install any remaining dependencies and run postinstall.
NOTE: (If you receive an error about "shim.js" not existing just run yarn install
again):
-
yarn install
-
Uncomment
require('crypto')
at the bottom of "shim.js". Or addrequire('crypto')
to the bottom of "shim.js" if it doesn't exist. -
And finally,
yarn install && cd ios && pod install && cd ..
one more time.
To test if everything is working as expected place the following in render:
import './shim';
import ECPairFactory from 'ecpair';
import ecc from '@bitcoinerlab/secp256k1';
const bitcoin = require('bitcoinjs-lib');
const ECPair = ECPairFactory(ecc);
const keyPair = ECPair.makeRandom();
const {address} = bitcoin.payments.p2pkh({pubkey: keyPair.publicKey});
console.log(address);
An unedited video walkthrough of this guide can be found here:
- https://youtu.be/pKRM5eAZl8c (outdated)
@sh4dowb I'm currently working on updating this guide. A few years ago a lot of these shimming tools worked fine, but with modern RN and when used with more complex setups, it doesn't work. That and also half of the tools are no longer being maintainer, including
rn-nodeify
,react-native-crypto
,react-native-randombytes
etc.Instead there are much better polyfills available, which are less hacky and more stable.