# Overview

The `react-native-ts-idv` is a React Native module for Mosaic Identity Verification. It allows you to integrate document verification and selfie capture into your mobile application. It provides a streamlined verification experience that guides users through the process of capturing identity documents and performing liveness checks, using deep document inspection and biometric matching.

## Capabilities

- Document capture and verification (ID cards, passports, driver's licenses)
- Selfie capture with liveness detection
- Event-based status callbacks for the verification lifecycle
- Configurable log levels for debugging


## Requirements

- iOS 13.0+
- Android 5+ (API level 21+)
- Device camera access


## Installation

npm
```shell
npm install react-native-ts-idv
```

yarn
```shell
yarn add react-native-ts-idv
```

For iOS, install native dependencies:

```shell
cd YOUR_PROJECT_PATH/ios
pod install
```

Set `platform :ios, '13.0'` in your `Podfile`.

For Android, add the Mosaic Maven repository to your `app/build.gradle`:

```groovy
repositories {
    maven {
        url('https://transmit.jfrog.io/artifactory/transmit-security-gradle-release-local/')
    }
}
```

## Initialization

iOS
Create a `TransmitSecurity.plist` file in your Xcode project:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>credentials</key>
    <dict>
        <key>baseUrl</key>
        <string>[BASE_URL]</string>
        <key>clientId</key>
        <string>[CLIENT_ID]</string>
    </dict>
</dict>
</plist>
```

Android
Update `strings.xml` with your credentials:

```xml
<resources>
    <string name="transmit_security_client_id">[CLIENT_ID]</string>
    <string name="transmit_security_base_url">[BASE_URL]</string>
</resources>
```

Initialize the SDK and register for status updates:

```javascript
import IdentityVerification from 'react-native-ts-idv';
import { NativeModules, NativeEventEmitter } from 'react-native';

const { TsIdv } = NativeModules;
const eventEmitter = new NativeEventEmitter(TsIdv);

await IdentityVerification.initializeSDK();

const subscription = eventEmitter.addListener(
    'idv_status_change_event',
    onVerificationStatusChange
);
```

Configure the base server URL based on your region:

| Region | Base URL |
|  --- | --- |
| US | `https://api.transmitsecurity.io/` |
| EU | `https://api.eu.transmitsecurity.io/` |
| Canada | `https://api.ca.transmitsecurity.io/` |
| Sandbox | `https://api.sbx.transmitsecurity.io/` |
| Custom domain | `https://<your-domain>.com/` (see [Custom domains](/guides/deployment/custom_domains)) |