Generate barcodes natively in React Native with the ZXing library underhood!
When I was working on generating QR codes in one of the apps for a client, I realized that JS-based libraries like BWIP JS are not very performant in React Native apps, where performance is especially important for keeping users happy.
I decided to experiment a little and learn about Expo Native Modules, Swift, and Kotlin. This led to the creation of zebra-striped - a performant, native-based library for generating various types of barcodes for React Native.
Feedback is highly appreciated!
1D Codes | 2D Codes |
---|---|
Code 128 | QR |
Code 39 | PDF417 |
Code 93 | Aztec |
Codabar | Data Matrix |
EAN-13 | |
EAN-8 | |
ITF | |
UPC-E | |
UPC-A |
Here's a basic usage of ZebraCode component:
<ZebraCode
value={"I'm very striped!"}
format="qr"
size={{ width: 300, height: 300 }}
/>
Want a custom colors? 🎨 I've got you covered:
<ZebraCode
value={"I'm very striped!"}
format="qr"
size={{ width: 300, height: 300 }}
onColor="#141414"
offColor="#ffffff"
/>
(Colors are accepted only in HEX)
Or maybe you just want to have a data returned in Base64 format? Here's how you can do it:
const base64Image = getBase64Code("I'm base64'ed!", "qr", {
width: 300,
height: 300,
});
const base64Image = getBase64Code("I'm custom-colored!", "qr", {
width: 300,
height: 300
}, "#141414", #ffffff);
npm install zebra-striped
After installation you'll need to rebuild your dev client. Zebra 🦓 will not work in Expo Go!
For plain React Native project you must install and configure expo
package, follow the "Install Expo modules in an existing React Native project" article.
Make sure to run pod install
in ios
folder.
Contributions are very welcome, I'm open for any suggestions!