Hardware integration in React Native · Build
Passport chips and POS terminals in your React Native app
When a chip reader or terminal has no React Native library, we write the native module ourselves. Our React Native app runs on more than 100 POS terminals.
EngagementHourly · remote
Hours9–18 CET · 4 h overlap
StackReact Native · Kotlin · Java
Proof3 case studies
The service in 4 parts
01 · Who it’s for
An app that has to read a chip or work with a terminal or another device for which no ready-made React Native package exists.
02 · What we’ve built
- Reading the NFC chip in German passports and ID cards during remote identity verification for a German financial institution, 2020.Case study 10 →
- POS terminals running Android for cross-border remittances, 2022. The card, printer and other hardware functions reach React Native through a Turbo Module, and a Kotlin launcher locks each device to a single app.Case study 12 →
- A coupon printed on a POS terminal’s thermal printer at a filling station. It cannot be cashed until the system recognizes it.Case study 11 →
03 · How we work
01 · THE PROTOCOLWe write the device protocol in the platform’s own language and expose it once. The JavaScript side knows nothing about the protocol, so you can replace the device without changing the app.
02 · ONE IMPLEMENTATION FOR BOTH PLATFORMSWe write the protocol once and port the same logic to the other platform. Two implementations written separately start treating edge cases differently, and then the same passport passes on one phone and fails on another.
03 · THE BRIDGE TO JAVASCRIPTA Turbo Module exposes the device as ordinary functions, such as readChip(), and the app calls them without knowing which platform it is running on.
04 · WHAT THE DEVICE CAN’T DOWe tell you before we promise anything. A thermal printer takes dots and knows nothing about images, so a logo has to be turned into a bitmap and positioned by hand, in paper units, with no preview. That is real work, and it goes into the estimate.
04 · Stack
React NativeKotlinJavaTurbo ModulesNFCthermal printing
Proof
Where we’ve done this before
Case study 10 · Identity98%Reading the NFC chip in German passports and ID cards during remote identity verification for a German financial institution, 2020.Read the case study →Case study 12 · Identity100+ terminalsPOS terminals running Android for cross-border remittances, 2022. The card, printer and other hardware functions reach React Native through a Turbo Module, and a Kotlin launcher locks each device to a single app.Read the case study →Case study 11 · Identity3 domainsA coupon printed on a POS terminal’s thermal printer at a filling station. It cannot be cashed until the system recognizes it.Read the case study →
FAQ
Questions about this service
Most don’t. In 2020 there was no usable library for reading a passport chip, and the payment terminal in 2022 had none worth using either, so both times we wrote the native module ourselves.
Yes. For the passport reader we implemented the chip protocol in Java for Android and ported the same logic to Swift for iOS, so both apps read the chip the same way.
Yes, most projects start that way. Send us the model and whatever documentation you have, or tell us there is none.
Then working through it is part of the job. The POS terminal in the remittance project, a Chinese device, came with sparse SDK documentation in Spanish, which we translated so that we could work with the device at all.
No. A native module needs a development build, which Expo supports, so you keep the Expo workflow. What you give up is Expo Go for that app.
Next step
Describe the problem and we’ll come back with three options.
The first call takes 30 minutes, and you’re under no obligation.