Skip to main content

Changelog

Current versions

iOS 1.10.8 · Android 1.10.8 · React Native 1.10.8 · Flutter 1.10.8 · Web 1.10.8

v1.10.8 — July 2026

Specific reason codes on rejected verifications (no more "UNKNOWN")

A rejected verification now surfaces a stable, specific reason code — one of DOCUMENT_UNREADABLE, FACE_MISMATCH, NAME_MISMATCH, EYEWEAR, LIVENESS_FAILED, DOCUMENT_QUALITY, DOCUMENT_EXPIRED, SCORE_LOW, DATA_INCONSISTENT, or a generic REJECTED — instead of a generic UNKNOWN. On iOS this is delivered through a new KoraError.rejected(code:reason:), and the React Native error mapping was extended to recognize these codes so a reject surfaces the real reason there too. Android, Web, and Flutter already delivered the reason via the completed verification's decisionReason. All five SDKs are now published at a single unified version, 1.10.8.

v1.10.7 — July 2026

Production base URL + configurable endpoint

The production API base URL is now https://idv.korastratum.com/api/v1/idv (the previously-documented host rejected raw API keys with 401). The base URL is also overridable per integration via Configuration.baseURL, so a custom or on-prem deployment can point the SDK at its own endpoint.

v1.10.5 — July 2026 (React Native + Flutter)

Android custom theming for React Native & Flutter

The bundled native Android library in the @koraidv/react-native package and the koraidv_flutter plugin was refreshed so your brand theme (primaryColor) applies across the whole verification flow on Android — matching iOS behavior. Hex color parsing was also broadened to accept 3-, 6-, and 8-digit values. The native iOS and Android SDKs remain at 1.10.4 (no change required); only the RN and Flutter packages were republished.

v1.10.4 — July 2026

Theme-injectable brand color

primaryColor now drives the progress indicators, primary buttons, brand accents, and the liveness ring across the entire flow; semantic pass/fail colors intentionally stay green/red. The Android result UI was brought to parity with iOS (themed liveness ring and guidance, red rejected messaging, selfie tile shown green at ≥60).

v1.10.0–1.10.3 — June–July 2026

Eyewear enforcement (eyes must be visible)

Selfies wearing sunglasses — including tinted and mirrored lenses — are now rejected so the eyes are visible for face matching and liveness. A durable server-side classifier backs the decision (on-device checks are advisory and never hard-block capture), and an eyewear requirement was added to the consent screen. iOS passport capture now preserves the full data-page height so the MRZ is always retained.

  • 1.10.1 hardened the gate to fail closed when a frame can't be analyzed.
  • 1.10.2 closed low-light edge cases.
  • 1.10.3 moved the gate server-side for durability.

v1.9.3–1.9.7 — June 2026

Capture reliability overhaul (iOS & Android)

  • iOS liveness and document capture now clip the camera into the on-screen guide (parity with Android); new segmentation-based document dewarping markedly improves driver's-license back (PDF417) capture; single-fire capture removes the re-fire loop; front captures are sharper via a focus-locked shutter.
  • Driver's-license back capture (PDF417 barcode) and full-resolution document capture.
  • Per-tenant liveness configuration — challenge types and the required challenge count are configurable (e.g. smile-only) and honored across all platforms.
  • Result-screen color/tile parity across platforms; added manual_review and failed result states.

v1.6.0–1.9.2 — May–June 2026

Iterative capture, liveness, and document-handling refinements between the v1.5.0 unification and the v1.9.3 capture overhaul. For detailed per-version notes in this range, contact your account manager.

v1.5.0 — May 2026

Cross-platform release line

All five SDKs (iOS, Android, Flutter, React Native, Web) are now unified at v1.5.0. Previously the platforms had drifted (iOS at 1.4.2, Android at 1.3.0, Flutter/RN/Web at 1.4.1) — there was no actual feature drift, just inconsistent version labels. From v1.5.0 onward all five platforms ship together.

npm publishing

@koraidv/core, @koraidv/react, and @koraidv/react-native are now published to the public npm registry under the @koraidv scope. Previous versions were github-installed only. Migrate your install:

# Before
npm i github:badedokun/koraidv-react-native#v1.4.1

# Now
npm i @koraidv/react-native

Bug fixes

  • KoraWallet (Web + RN) — fixed a TypeScript duplicate-identifier error that silently broke .d.ts generation in v1.4.x. The wallet now ships full type declarations on npm. Public API is unchanged; only an internal property was renamed.
  • Web DocumentSelectionScreen — removed stale references to DocumentType.US_PASSPORT and UK_PASSPORT enum values that were dropped in v1.2.3 in favour of INTERNATIONAL_PASSPORT.
  • Flutter selective_disclosure.dart (post-release patch, applied in place on v1.5.0)Set.of(...DisclosureClaim.values) used JavaScript spread syntax which is invalid Dart and broke compilation. Fixed in place to Set.of(DisclosureClaim.values). Other SDKs were unaffected. The v1.5.0 git tag on koraidv-flutter was force-updated to point at the patched commit; if your pubspec.lock is pinned to the original SHA, run flutter pub upgrade koraidv_flutter.
  • Android DocumentDewarper (post-release patch, applied in place on v1.5.0)org.opencv.* imports broke consumer R8 release minification because the SDK declares OpenCV as implementation (not api), so consumers' R8 saw unresolved classes and stopped the build. The SDK's bundled consumer-rules.pro now includes -dontwarn org.opencv.**, which is auto-applied to consumer builds — no action required for new integrators. Runtime safety was already correct: OpenCVLoader.initLocal() is wrapped in try/catch and dewarp() returns null when OpenCV isn't on the classpath. The README documents OpenCV as an optional dependency (add implementation("org.opencv:opencv:4.10.0") to enable dewarping; otherwise the SDK falls back to the original capture). The v1.5.0 git tag was force-updated on koraidv-koraidv-android, koraidv-flutter, and koraidv-react-native mirrors. If you're locked to the original tag SHA, re-resolve via JitPack / pub upgrade / npm install to pick up the patch.

v1.4.0–1.4.2 — April 2026

On-device PDF417 barcode decoding

iOS, Android, Flutter, RN, and Web SDKs gained on-device PDF417 barcode reading for US/Canadian driver's licenses. Decode happens locally via ML Kit (Android), Vision (iOS), or ZXing-WASM (Web) — no server round-trip. License scans are now noticeably faster and work offline.

Sandbox URL fix (iOS, Web)

APIEnvironment.sandbox on iOS and Web SDKs was incorrectly returning the production URL — sandbox API keys were getting HTTP 400 responses. Fixed in v1.4.1 (Web/RN/Flutter) and v1.4.2 (iOS, plus a JSON-casing fix that was iOS-only).

v1.3.0 — March 2026

Wallet (W3C Verifiable Credentials)

All SDKs gained a KoraWallet module for storing and presenting credentials with selective disclosure. Use it to issue a verifiable credential after successful verification, then have the user present specific claims (e.g. age over 18) without revealing the full document.

Document type sync

Document type catalogue extended with Canadian PR Card, Canadian National ID Card, and additional EU residence permits.

v1.2.0–1.2.3 — February 2026

Dynamic country/document fetching

SDKs now fetch the supported country and document type list dynamically from the API instead of bundling a static list. New countries and document types added on the backend become available immediately without an SDK upgrade.

Document type expansion

  • 44 uniform document types across all 5 SDKs
  • Driver's licenses for Africa (Nigeria, Ghana, Kenya, South Africa, Liberia, Sierra Leone, Gambia), UK, Canada, India
  • Removed country-specific passport types in favour of a single INTERNATIONAL_PASSPORT (covers all 197 ICAO-compliant countries)

NFC passport reading

iOS and Android SDKs gained ICAO 9303 NFC chip reading for biometric passports. Validates the chip's signed data structures and matches them against the OCR'd MRZ.

Network timeout fix

Default request timeout raised from 30s to 120s — covers slower mobile networks where document upload was timing out before completion.

v1.1.0 — February 2026

Image Persistence & Compliance API

  • Image persistence: Verification images (document front, document back, selfie, liveness frames) are now automatically persisted to Google Cloud Storage for compliance and audit purposes
  • Image retrieval API: New endpoints to list and retrieve verification images with signed URLs
    • GET /verifications/{id}/images — list available images
    • GET /verifications/{id}/images/{imageType} — get a 15-minute signed URL
  • SDK updates: Both iOS (v1.1.0) and Android (v1.1.0) SDKs now report imagePersisted status in verification results
  • Async processing: Image uploads are processed asynchronously — the imagePersisted field on the verification object confirms when persistence is complete

SDK Changes

  • Android SDK v1.1.0: Added imagePersisted field to VerificationResult, automatic image persistence support
  • iOS SDK v1.1.0: Added imagePersisted property to KoraVerificationResult, automatic image persistence support

v1.0.0 — January 2026

Initial Release

  • Document verification: Support for 18+ document types across US, EU, and Africa
    • 5-layer document authenticity (template matching, font consistency, photo integrity, compression analysis, edge consistency)
    • MRZ parsing and validation for ICAO 9303 documents
  • Face matching: FaceNet 512-dimensional embedding comparison with >99% accuracy
  • Liveness detection: Active liveness with 6 challenge types (blink, smile, turn left/right, nod up/down)
  • Anti-spoofing: 5-layer analysis (texture, frequency, challenge, temporal, quality)
  • Compliance screening: CEngine integration for sanctions, PEP, and adverse media screening
  • Scoring engine: Composite scoring with configurable thresholds for auto-approve, manual review, and auto-reject
  • Webhooks: 5 event types (verification.verified, verification.rejected, verification.completed, verification.expired, fraud_alert.created) with HMAC-SHA256 signature verification and exponential backoff retry
  • Fraud detection: Duplicate document, duplicate face, spoof detection, and document tampering alerts
  • Mobile SDKs: iOS (v1.0.0) and Android (v1.0.0) with full verification UI, camera capture, and theme customization
  • Sandbox: Full sandbox environment with test fixtures for deterministic results