> ## Documentation Index
> Fetch the complete documentation index at: https://bkey.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Add bmoni_embedded_sdk to your React Native project.

## Add the dependency

```bash theme={null}
npm install @bkey-inc/bmoni_embedded_sdk
```

```bash theme={null}
yarn add @bkey-inc/bmoni_embedded_sdk
```

Then install the iOS pods:

```bash theme={null}
cd ios && pod install
```

No manual linking is required — autolinking picks the library up on both platforms, and `pod install` downloads the pinned `BMONISigner.xcframework`. Android needs one repository declaration, described below.

***

## Requirements

|                         | Minimum                           |
| ----------------------- | --------------------------------- |
| React Native            | `0.76` (New Architecture enabled) |
| Android `minSdkVersion` | `24`                              |
| iOS deployment target   | `15.1`                            |

***

## Android setup

The native module uses Android Keystore internally. No `AndroidManifest.xml` entries are required beyond the `minSdkVersion` constraint.

```groovy android/app/build.gradle theme={null}
android {
    defaultConfig {
        minSdkVersion 24
    }
}
```

### Declare Bkey's Maven repository

The native `BMONISigner` AAR is published to Bkey's own Maven repository. Add it to your **root** `android/build.gradle`:

```groovy android/build.gradle theme={null}
allprojects {
    repositories {
        maven {
            url "https://bkey-inc.github.io/package-distribution/maven"
            content { includeGroup "me.bkey.ip" }
        }
    }
}
```

<Warning>
  This step is required, and the library cannot do it for you. A repository declared inside a library module only applies to that module's own dependency resolution, while `me.bkey.ip:bmonisigner` is resolved transitively on your **app's** runtime classpath. Without the declaration, the build fails with:

  ```
  Could not find me.bkey.ip:bmonisigner:1.0.0.
  Required by: project ':app' > project :bmoni_embedded_sdk
  ```
</Warning>

### Build for arm64-v8a

The BMONISigner AAR ships an `arm64-v8a` slice only. Restrict the ABIs you build:

```properties android/gradle.properties theme={null}
reactNativeArchitectures=arm64-v8a
```

<Warning>
  Building for `x86_64` or `armeabi-v7a` succeeds but fails at **runtime** with an `UnsatisfiedLinkError` when the native library loads. Use an arm64 device or an arm64 emulator (the default on Apple Silicon).
</Warning>

***

## iOS setup

The native module uses the Secure Enclave and the Keychain. No entitlements or `Info.plist` keys are required.

Ensure the deployment target in `ios/Podfile` is at least `15.1`:

```ruby ios/Podfile theme={null}
platform :ios, '15.1'
```

`pod install` downloads `BMONISigner.xcframework` the first time it runs, so the machine needs network access for that step.

***

## Initialise

Call `BmoniEmbeddedSdk.initialize` once as your app starts — typically at module scope in `index.js` or at the top of your root component's module. The call is idempotent; calling it again replaces the active configuration.

```ts index.js theme={null}
import { AppRegistry } from 'react-native';
import { BmoniEmbeddedSdk } from '@bkey-inc/bmoni_embedded_sdk';
import App from './src/App';

BmoniEmbeddedSdk.initialize({ pinLength: 6, requirePin: true });

AppRegistry.registerComponent('MyApp', () => App);
```

You're ready. See [configuration](/sdk-react-native/configuration) for all available options, or jump straight to [wallet provisioning](/sdk-react-native/wallet-provisioning).
