react-native-bignumber v0.2.3
๐ข react-native-bignumber
The fastest Big Number library for React Native.
- ๐๏ธ Up to 300x faster than all other solutions
- โก๏ธ Lightning fast implementation with pure C++ and JSI
- ๐งช Well tested in JS and C++ (OpenSSL)
- ๐ฐ Made for crypto apps and Wallets
- ๐ค Up to 5x smaller in JS-bundle size
- ๐ข Store numbers as big as your Phone's RAM can store
- ๐ Easy drop-in replacement for BN.js
Installation
yarn add react-native-bignumber
cd ios && pod install
expo install react-native-bignumber
expo prebuild
Usage
..as a normal library
The exposed BN
class is used to create new BigNumber instances from strings (binary, hex, decimal), ArrayBuffers, Buffers, numbers, or other BigNumber instances.
import { BN } from 'react-native-bignumber'
const a = new BN(3274556)
const b = new BN(9856712)
const c = a.mul(b) // 32.276.355.419.872
Refer to BN.js' documentation for a full API reference and usage guide.
For example, this is how you calculate large Fibonacci numbers:
function fibonacci(n: number): BN {
let prev = new BN(0)
let prevPrev = new BN(1)
let number = new BN(1)
for (let i = 1; i < n; i++) {
prevPrev = prev
prev = number
number = prevPrev.add(prev)
}
return number
}
const f = fibonacci(50) // 12.586.269.025
..as a drop-in replacement
Since popular libraries like ethers.js or elliptic use BN.js under the hood, react-native-bignumber exposes exactly the same API as BN.js so it can be used as a drop-in replacement and promises much greater speed at common crypto operations.
In your babel.config.js
, add a module resolver to replace bn.js
with react-native-bignumber
:
+const path = require('path');
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
+ [
+ 'module-resolver',
+ {
+ alias: {
+ 'bn.js': 'react-native-bignumber',
+ },
+ },
+ ],
...
],
};
Now, all imports for bn.js
will be resolved as react-native-bignumber
instead.
In the Exodus app, this single line change reduced app launch time by 4 seconds! ๐
Community Discord
Join the Margelo Community Discord to chat about react-native-bignumber or other Margelo libraries.
Sponsors
This library is supported by Exodus. Send, receive, and exchange Bitcoin and 160+ cryptocurrencies with ease on the world's leading Desktop, Mobile and Hardware crypto wallets: exodus.com
Adopting at scale
react-native-bignumber was built at Margelo, an elite app development agency. For enterprise support or other business inquiries, contact us at hello@margelo.io!