Installation
Install the SDK and its peer dependencies — peers are not self-enforcing, so install them explicitly alongside the SDK:
npx expo install @rogue/console-sdk react-native-ble-plxExpo apps also need a development build and the SDK’s config plugin — Bluetooth Low Energy does not run in Expo Go. Continue with Expo setup.
npm install @rogue/console-sdk react-native-ble-plxnpx pod-installBare apps declare the Bluetooth permissions by hand. Continue with Bare React Native.
Optional peer: async-storage
Section titled “Optional peer: async-storage”@react-native-async-storage/async-storage is an optional peer. It backs
the @rogue/console-sdk/storage/async-storage adapter, which persists the
saved-device fleet across app launches:
npx expo install @react-native-async-storage/async-storageWithout it the SDK falls back to in-memory storage — everything works, but saved devices are forgotten when the app restarts, and the SDK logs a one-time warning in development builds so the fallback is never silent.
Support matrix
Section titled “Support matrix”| Requirement | Version |
|---|---|
| React Native | 0.79+ (New Architecture) |
| React | ≥ 19.1 |
| react-native-ble-plx | ≥ 3.5 |
| Node | ≥ 20.19 |
| Expo | tested on the two most recent Expo SDKs |
ESM only
Section titled “ESM only”@rogue/console-sdk ships as ESM with a curated exports map — there is no
CommonJS build. Metro and modern bundlers handle this out of the box.
Jest needs the standard React Native caveat: ESM packages under
node_modules must be allow-listed for transformation via
transformIgnorePatterns:
module.exports = { preset: 'jest-expo', // or 'react-native' transformIgnorePatterns: [ 'node_modules/(?!((jest-)?react-native|@react-native(-community)?|expo(nent)?|@expo(nent)?/.*|@rogue/console-sdk|react-native-ble-plx)/)', ],};No moduleNameMapper BLE remapping is needed in tests — mocking is a
transport swap through @rogue/console-sdk/testing, so react-native-ble-plx
is simply never constructed on test paths.