Skip to main content
Integrate Didit verification natively into your mobile applications with our official SDKs. Native SDKs provide a seamless user experience, better performance, and full access to device capabilities compared to WebView-based integrations.

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:
  1. Your backend calls POST /v3/session/ with workflow_id plus any optional context (vendor_data, contact_details, expected_details, metadata, callback).
  2. Didit returns a session_id, a short-lived session_token, and a hosted url.
  3. Your mobile app receives the session_token from your backend and passes it to the SDK (startVerification(token: …)).
  4. 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.).
  5. 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.
All native SDKs also support a UniLink mode (workflow ID only, no backend required). Use UniLink for quick prototypes and the session-token method for production.

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
Key Features:
  • SwiftUI and UIKit support
  • NFC passport/ID reading (iOS 15+; the no-NFC Core and AutoDetection variants strip NFC and OpenSSL, and deploy to iOS 13+)
  • 53 languages supported
  • Customizable UI theming
  • Session token or workflow ID integration
Quick Start:
Full iOS SDK Documentation

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
Key Features:
  • Kotlin and Jetpack Compose support
  • NFC passport/ID reading (opt-in me.didit:didit-sdk-core artifact 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
Quick Start:
Full Android SDK Documentation

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
Key Features:
  • 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
Quick Start:
Full React Native SDK Documentation

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
Key Features:
  • 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
Quick Start:
Full Flutter SDK Documentation

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
Key Features:
  • 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
Quick Start:
Full JavaScript SDK Documentation | All Web SDKs

Choosing an integration

Native SDKs are the best fit when you need NFC e-passport reading, the lowest-latency camera capture, and an in-app experience indistinguishable from your other native screens. Use WebView Integration as a fallback when you cannot ship a native SDK update (for example, brownfield apps you cannot rebuild, or platforms without a Didit native SDK).