Recommended Approach: For the best user experience, use our native SDKs instead of WebView integration. Native SDKs handle all the complexity of camera permissions, NFC reading, and liveness detection out of the box.
SDK Availability
Alternative: If a native SDK isn’t available for your platform yet, you can use WebView Integration as a fallback.
How a verification session flows
Every native SDK consumes the same Didit verification session. The flow is:- Your backend calls
POST /v3/session/withworkflow_idplus any optional context (vendor_data,contact_details,expected_details,metadata,callback). - Didit returns a
session_id, a short-livedsession_token, and a hostedurl. - Your mobile app receives the
session_tokenfrom your backend and passes it to the SDK (startVerification(token: …)). - The native SDK opens the verification UI, the user completes the steps, and the SDK returns a result with the session’s terminal
status(Approved,Declined,In Review, etc.). - Your backend receives the full decision via a webhook (
webhook_type: "status.updated") and persists it.
The SDK result tells you the workflow outcome (status). The complete decision — document fields, face match scores, AML hits, NFC data, warnings — is delivered to your server via webhook and can also be fetched from the Retrieve Session Decision endpoint. Never trust the client-side result alone for authorisation decisions.
iOS SDK
When to use: native Swift / SwiftUI / UIKit apps targeting iOS 13+. A lightweight, server-driven iOS SDK for identity verification with minimal configuration required.GitHub Repository
View source code and examples on GitHub
- SwiftUI and UIKit support
- NFC passport/ID reading (iOS 15+; the no-NFC
CoreandAutoDetectionvariants strip NFC and OpenSSL, and deploy to iOS 13+) - 53 languages supported
- Customizable UI theming
- Session token or workflow ID integration
Android SDK
When to use: native Kotlin / Jetpack Compose / Java apps targeting Android 6.0 (API 23) or higher. A lightweight, server-driven Android SDK for identity verification with minimal configuration required.GitHub Repository
View source code and examples on GitHub
- Kotlin and Jetpack Compose support
- NFC passport/ID reading (opt-in
me.didit:didit-sdk-coreartifact strips NFC dependencies) - ML-based document and face auto-detection on API 24+ (graceful manual-capture fallback on API 23)
- 53 languages supported
- Customizable UI theming
- Session token or workflow ID integration
React Native SDK
When to use: cross-platform React Native or Expo apps that need a single TypeScript API across iOS and Android (RN 0.76+, New Architecture). A cross-platform React Native SDK that wraps the native iOS and Android SDKs with a unified TypeScript API.GitHub Repository
View source code and examples on GitHub
- Single TypeScript API for both iOS and Android
- Expo support with zero-config config plugin (development build required — no Expo Go)
- React Native CLI support
- NFC passport/ID reading (toggle off with
DIDIT_SDK_IOS_NFC_ENABLED=false/diditSdkAndroidNfcEnabled=false) - 53 languages supported (inherited from native SDKs)
- Session token or workflow ID integration
Flutter SDK
When to use: cross-platform Flutter apps that need a single Dart API across iOS and Android (Flutter 3.3+, Dart 3.11+). A cross-platform Flutter SDK that wraps the native iOS and Android SDKs with a unified Dart API.pub.dev Package
View package on pub.dev
- Single Dart API for both iOS and Android
- Platform channel integration with native SDKs
- NFC passport/ID reading (toggle off with
DIDIT_SDK_IOS_NFC_ENABLED=false/diditSdkAndroidNfcEnabled=false) - 53 languages supported (inherited from native SDKs)
- Session token or workflow ID integration
Web SDK (JavaScript)
When to use: browser-based apps and web frameworks (React, Vue, Angular, Next.js, Nuxt, Svelte, vanilla JS). The Web SDK opens the hosted verification flow in a modal or inline iframe — for mobile apps, prefer the native SDKs above. A JavaScript SDK for web applications with React, Vue, Angular, Next.js, Nuxt, Svelte, and vanilla JS support.NPM Package
View package on npm
- Programmatic session management and event callbacks
- React, Vue, Angular, Next.js, Nuxt, Svelte, and vanilla JS support
- Full TypeScript support
- Modal & inline (embedded) modes
- State management for custom UI