This page covers everything you need to install and initialize the Incode React Native SDK in your app: choosing the right SDK variant, environment requirements, platform-specific setup for iOS and Android, and Expo configuration.
Once installation is complete, initialize the SDK (see Getting Started), then see SDK Modes to choose how the SDK operates, and Common Implementation Patterns to choose how to drive the onboarding flow.
Variant Explanation
The SDK is published as @incode-sdks/react-native-incode-sdk. Pick the version suffix that matches your feature set.
| Variant | Example dependency | Use when you need |
|---|---|---|
| Standard | "[VERSION]" |
Base onboarding modules. |
| Streaming | "[VERSION]-vc" |
Camera frame streaming for ID/Selfie capture. |
| Face Login | "[VERSION]-l" |
startFaceLogin() and locally stored identity flows. |
| NFC | "[VERSION]-nfc" |
NFCScan and NFC-based face match flows. |
Environment Setup
Requirements
- React Native app with Android and/or iOS targets.
- Xcode 15.0.1+.
- Swift 5.5+.
- CocoaPods 1.11+.
- iOS 13+.
- Android
minSdkVersion23+; use 24+ when using the video-streaming dependency. - Android
compileSdkVersion35+.
Installation
Install the standard package:
npm i @incode-sdks/react-native-incode-sdk
Or pin the dependency in package.json:
{
"dependencies": {
"@incode-sdks/react-native-incode-sdk": "[VERSION]"
}
}
Use a variant suffix when needed:
{
"dependencies": {
"@incode-sdks/react-native-incode-sdk": "[VERSION]-vc"
}
}
Additional Setup Instructions
Additional setup for iOS
Set the deployment target to iOS 13 or higher:
-platform :ios, '10.0'
+platform :ios, '13.0'
Add the CocoaPods sources at the top of your Podfile:
source 'https://cdn.cocoapods.org/'
source 'git@github.com:Incode-Technologies-Example-Repos/IncdDistributionPodspecs.git'
For React Native 0.69 and newer, autolinking is enough. For older React Native versions, add the package path manually:
pod 'react-native-incode-sdk', :path => '../node_modules/@incode-sdks/react-native-incode-sdk/'
Add an empty Swift file to the native project in Xcode. When prompted, create the bridging header.
Before running pod install, configure SSH or HTTPS GitHub authentication. The Incode podspec source is hosted on GitHub and requires authenticated access.
Run CocoaPods:
cd ios
pod install
cd ..
Add these Info.plist usage descriptions:
NSCameraUsageDescription. The SDK uses the camera in order to verify the identity of the customer, for example in ID scan and Selfie scan.NSLocationWhenInUseUsageDescription. The SDK uses the current user location for the Geolocation step.NSMicrophoneUsageDescription. The SDK uses the microphone during video conference and video selfie flows.
Add the required linker flags in the app target's Build Settings > Other Linker Flags:
$(inherited) -all_load -ObjC -l "stdc++" -l "iconv"
Additional setup for Android
Set Android SDK versions:
minSdkVersion = 23
compileSdkVersion = 35
Use minSdkVersion = 24 when enabling video streaming.
Enable multidex:
defaultConfig {
+ multiDexEnabled true
}
Add the multidex dependency:
implementation 'com.android.support:multidex:1.0.3'
Make the application extend MultiDexApplication:
import androidx.multidex.MultiDexApplication;
public class MyApplication extends MultiDexApplication implements ReactApplication {
}
Add the Incode Maven repository and credentials to the project build.gradle:
allprojects {
repositories {
maven { url "https://jitpack.io" }
maven {
url = uri("https://maven.pkg.github.com/Incode-Technologies-Example-Repos/android-omni-packages")
credentials {
username = "incode-customers"
password = "GITHUB_TOKEN"
}
}
}
}
Prefer environment or Gradle properties for real credentials. Do not commit tokens.
Troubleshooting tip: If Gradle cannot resolve Incode dependencies, verify credentials and repository access with your Incode representative. See Troubleshooting for more build and setup issues.
Expo SDK Installation
If your app is built with Expo, install the Expo configuration plugin instead of doing the iOS and Android setup steps above.
Install the plugin:
npx expo install @incode-sdks/expo-incode-sdk-configuration
Add it to app.json or app.config.js:
{
"expo": {
"plugins": [
[
"@incode-sdks/expo-incode-sdk-configuration",
{
"cameraUsageDescription": "The SDK uses the camera in order to verify the identity of the customer.",
"locationWhenInUseUsageDescription": "The SDK uses the current user location for Geolocation steps.",
"microphoneUsageDescription": "The SDK uses the microphone for video conference or video selfie.",
"allowBackupOverride": true,
"koinVersion": "3.5.3",
"iosPodspecSource": "ssh",
"addStreaming": false,
"addDynamicLocalization": false,
"addVoiceConsentFaceRecognition": false,
"addNfc": false
}
]
]
}
}
Android builds need GitHub Packages credentials:
export GITHUB_USERNAME="<github-username>"
export GITHUB_TOKEN="<github-token>"
Then prebuild and run:
npx expo prebuild --clean --platform android
npx expo run:android --device
iosPodspecSource can be ssh or https. When using HTTPS, configure GitHub authentication outside the project with GitHub CLI, Git Credential Manager, macOS Keychain, or ~/.netrc.