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

PlatformStatusNFCLanguagesDocumentation
iOS✅ Available50+iOS SDK Guide
Android✅ Available40+Android SDK Guide
React Native✅ Available40+React Native SDK Guide
Flutter✅ Available40+Flutter SDK Guide
Web (JS)✅ AvailableWeb SDK Guide

Alternative: If a native SDK isn’t available for your platform yet, you can use WebView Integration as a fallback.


iOS SDK

Available Now 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
  • 50+ language support
  • Customizable UI theming
  • Session token or workflow ID integration
Quick Start:
import DiditSDK

// Start verification
DiditSdk.shared.startVerification(token: "your-session-token")

// Handle result
.diditVerification { result in
    switch result {
    case .completed(let session):
        print("Status: \(session.status)")
    case .cancelled:
        print("Cancelled")
    case .failed(let error, _):
        print("Error: \(error)")
    }
}
Full iOS SDK Documentation

Android SDK

Available Now 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
  • 40+ language support
  • Customizable UI theming
  • Session token or workflow ID integration
Quick Start:
import me.didit.sdk.DiditSdk
import me.didit.sdk.VerificationResult

// Initialize in Application.onCreate()
DiditSdk.initialize(this)

// Start verification
DiditSdk.startVerification(token = "your-session-token") { result ->
    when (result) {
        is VerificationResult.Completed -> Log.d("Didit", "Status: ${result.session.status}")
        is VerificationResult.Cancelled -> Log.d("Didit", "Cancelled")
        is VerificationResult.Failed -> Log.e("Didit", "Error: ${result.error.message}")
    }
}
Full Android SDK Documentation

React Native SDK

Available Now 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 plugin
  • React Native CLI support
  • NFC passport/ID reading
  • 40+ language support
  • Session token or workflow ID integration
Quick Start:
import { startVerification, VerificationStatus } from '@didit-protocol/sdk-react-native';

const result = await startVerification('your-session-token');

switch (result.type) {
  case 'completed':
    console.log('Status:', result.session.status);
    break;
  case 'cancelled':
    console.log('Cancelled');
    break;
  case 'failed':
    console.log('Error:', result.error.message);
    break;
}
Full React Native SDK Documentation

Flutter SDK

Available Now 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
  • 40+ language support
  • Session token or workflow ID integration
Quick Start:
import 'package:didit_sdk/sdk_flutter.dart';

final result = await DiditSdk.startVerification('your-session-token');

switch (result) {
  case VerificationCompleted(:final session):
    print('Status: ${session.status}');
  case VerificationCancelled():
    print('Cancelled');
  case VerificationFailed(:final error):
    print('Error: ${error.message}');
}
Full Flutter SDK Documentation

Web SDK (JavaScript)

Available Now 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:
import { DiditSdk } from '@didit-protocol/sdk-web';

DiditSdk.shared.onComplete = (result) => {
  switch (result.type) {
    case 'completed':
      console.log('Status:', result.session?.status);
      break;
    case 'cancelled':
      console.log('Cancelled');
      break;
    case 'failed':
      console.error('Error:', result.error?.message);
      break;
  }
};

DiditSdk.shared.startVerification({
  url: 'https://verify.didit.me/session/session-token'
});
Full JavaScript SDK Documentation | All Web SDKs

SDK Comparison

FeatureNative SDKsWebView
User Experience⭐ ExcellentGood
Performance⭐ ExcellentGood
NFC Chip Reading✅ Full support❌ Not available
Camera Quality✅ Optimized⚠️ Browser-dependent
Offline Capability✅ Partial❌ Not available
Biometric Integration✅ Native❌ Not available
White-Label Theming✅ Console-driven✅ Console-driven
Setup ComplexityLowLow
Backend RequiredOptionalOptional
Platform SupportiOS, AndroidAll (RN, Flutter, etc.)