Skip to main content

Changelog

Current versions

iOS 1.10.15 · Android 1.10.15 · React Native 1.10.15 · Flutter 1.10.15 · Web 1.10.15

v1.10.14–1.10.15 — August 2026​

  • v1.10.15 — iOS host-app copy override. Rebrand any SDK text (e.g. the "Verify your identity" consent screen) by adding a KoraIDVOverrides.strings file to your own app — no fork required. Android already supports this via string-resource overrides; see the iOS and Android SDK guides.
  • v1.10.14 — configurable networkTimeoutSeconds per-request timeout, with an environment-aware default (60s on sandbox, 30s on production) so cold starts on cost-optimised backends don't trip the SDK's request timeout.

v1.10.9–1.10.13 — August 2026​

All five SDKs are published at a unified 1.10.13. Highlights since 1.10.8:

  • v1.10.10 — fixed an Android hang on "Preparing verification…" when a verification is retried or resumed (the flow now advances to the consent screen as expected). If you are on 1.10.7–1.10.9, upgrade to resolve this.
  • v1.10.12 — added a 3-2-1 countdown before selfie capture so users are ready when the shutter fires.
  • v1.10.13 — the liveness screen now holds briefly (~2.5s) after the challenge completes before "Verifying your identity", for smoother pacing (iOS + Android).
  • Plus reason-code and version-constant fixes across the range.

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