Changelog
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_reviewandfailedresult 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.