# Overview

The `react-native-ts-identity-orchestration` is a React Native module for Orchestration. It allows your mobile application to communicate with Mosaic, run journeys, and submit client input. It wraps the native iOS and Android Orchestration SDKs and exposes them through a unified React Native module.

## Capabilities

- Start and manage journeys from the client side
- Handle journey steps and submit client responses
- Maintain state between server responses and client input
- Support for mobile approve flows
- Callback-based response handling for journey steps


## Requirements

- React Native 0.60+
- iOS 13.0+
- Android 5+ (API level 21+)


## Installation

Install the React Native module:

npm
```shell
npm install react-native-ts-identity-orchestration
```

yarn
```shell
yarn add react-native-ts-identity-orchestration
```

For iOS, install native dependencies:

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

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

```groovy
repositories {
    google()
    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>
```

Initialize the SDK from the React Native layer:

```javascript
import RNTSIdentityOrchestration from 'react-native-ts-identity-orchestration';

if (Platform.OS === 'ios') {
  RNTSIdentityOrchestration.initializeSDK();
}
```

Android
Update `strings.xml` with your credentials:

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

Initialize the SDK in your `MainApplication.kt`:

```kotlin
import com.AzurIon.TsIdentityOrchestration.TsIdentityOrchestrationModule

class MainApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        TsIdentityOrchestrationModule.initializeAndroidSDK(this)
    }
}
```

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/` |
| Australia | `https://api.au.transmitsecurity.io/` |
| Sandbox | `https://api.sbx.transmitsecurity.io/` |
| Custom domain | `https://<your-domain>.com/` (see [Custom domains](/guides/deployment/custom_domains)) |


## Next steps

- [React Native quickstart](/guides/orchestration/getting-started/quick_start_react_native)
- [React Native SDK guide](/guides/orchestration/sdk/react_native_guide)