React Native Bluetooth

React Native BLE libraries, compared

Three libraries bring Bluetooth Low Energy to React Native. SimpleBLE adds the peripheral role, shares one library with your Node.js and desktop tools, and comes with support from the team that builds it.

Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Comparison

How the React Native BLE libraries compare

Roles, reach beyond the phone, and licensing decide which library fits a commercial React Native app. This is where each one stands.

How the React Native BLE libraries compare
SimpleBLEsimplernbleiOS, AndroidYesNode.js, Python, C++, Rust, and moreSource-available (BUSL 1.1); one commercial license per company
react-native-ble-plxreact-native-ble-plxiOS, AndroidNoReact Native onlyOpen source
react-native-ble-managerreact-native-ble-manageriOS, AndroidNoReact Native onlyApache 2.0
The options

The React Native BLE libraries, one by one

SimpleBLE

SimpleBLE is a Bluetooth Low Energy library for Windows, macOS, Linux, iOS, and Android. Its React Native package, SimpleRnBLE, scans and connects as a central and hosts GATT services as a peripheral, with promises, events, and TypeScript types. It runs on the New Architecture and in Expo development builds, and Bluetooth calls never block the JavaScript thread. The same library runs in Node.js and Electron, so your app, desktop tools, and test scripts share one Bluetooth foundation.

react-native-ble-plx

react-native-ble-plx, maintained by dotintent, is a central-role library for iOS and Android with an Expo config plugin. Its README lists peripheral support, bonding, and beacons among the features it does not cover. Characteristic values are Base64 strings, which SimpleBLE replaces with Uint8Arrays.

react-native-ble-manager

react-native-ble-manager, from innoveit, is a central-role library for iOS and Android. To advertise or host GATT services from the phone, SimpleBLE covers the peripheral role with the same API it uses as a central.

Get started

Scan, connect, and host in a few lines

SimpleRnBLE works with promises and events. Install simplernble and react-native-nitro-modules, and this is the code for each step.

import { Adapter } from 'simplernble';

const [adapter] = await Adapter.getAdapters();

adapter.on('scanFound', peripheral => {
  console.log(peripheral.identifier(), peripheral.address());
});
await adapter.scanFor(5000);
Why SimpleBLE

What SimpleBLE gives your React Native app

Roles

Central and peripheral

Scan and connect, or advertise and serve GATT. One API on iOS and Android.

Responsive

A UI that never stalls

Every Bluetooth call is async. Scans and reads never block the JavaScript thread.

Expo

Ready for Expo

Runs in Expo development builds, with prebuild or EAS Build.

Types

Typed end to end

Typed calls, events, and errors. Plain Uint8Arrays, no Base64.

Languages

One library, every tool

Your app, Node.js services, and Python test scripts share the same Bluetooth library.

Support

A direct line to the engineers

Commercial customers work directly with the team that builds SimpleBLE.

Try SimpleBLE in your React Native app

Evaluation needs no license. For commercial use, one agreement covers your whole company, with no per-seat, per-device, or royalty fees.

Frequently
asked questions

SimpleBLE. SimpleRnBLE hosts GATT services and advertises on iOS and Android. react-native-ble-plx and react-native-ble-manager work in the central role.

Yes, in development builds. SimpleRnBLE contains native code, so it runs in builds created with npx expo prebuild or EAS Build rather than in Expo Go.

Yes. SimpleRnBLE is a Nitro module for the New Architecture, with calls that go straight from JavaScript to SimpleBLE.

Install simplernble and react-native-nitro-modules, then move scanning, connections, and GATT calls one flow at a time. Both libraries are promise-based. SimpleBLE takes full 128-bit UUID strings and reads and writes Uint8Arrays, so there is no Base64 to encode or decode.

Yes. SimpleBLE runs in Node.js and Electron on Windows, macOS, and Linux, and in C++, Python, C#, Rust, and other languages, so test scripts and internal tools share one Bluetooth library with your app.

SimpleBLE is source-available under the Business Source License 1.1 and free for non-commercial use. Evaluation needs no license. Commercial use needs a license, and one agreement covers your whole company, with no per-seat, per-device, or royalty fees.