bmoni_embedded_sdk is a React Native library that exposes the BMONISigner native SDKs for Android and iOS. It lets you provision a self-custodied secp256k1 wallet and produce EIP-191 / EIP-712 compatible signatures entirely within the device’s secure hardware boundary.
It is a port of the Flutter plugin of the same name, and keeps the same API surface, PIN policy, and error codes. The npm package and the pub.dev package are both called bmoni_embedded_sdk.
Security first. Private keys are generated on-device, encrypted with a platform-managed wrapping key (Android Keystore on Android, Secure Enclave on iOS), and persisted only as ciphertext. Plaintext keys never leave the secure boundary and are zeroized in RAM after each operation.
What it does
All signatures are returned as
0x-prefixed 130-character hex strings in recoverable r(32) ‖ s(32) ‖ v(1) format with v ∈ {27, 28} and low-s normalisation (EIP-2 compliant), ready to be verified server-side with ecrecover.
Platform support
The library ships a TurboModule, so it requires the New Architecture — the default since React Native 0.76.
Architecture
BmoniEmbeddedSdk is a static facade — you never instantiate it. Every method is static and can be called from anywhere after a single initialize call.
- Address caching — the
initWallet()result is persisted in platform secure storage, so you can read it back after the app restarts without re-provisioning. - PIN gating — when
requirePinistrue, the PIN digest is verified in TypeScript before forwarding to the native module.
react-native.

