For AI agents: visit https://developer.incode.com/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI.

> 🚧
>
> Starting November 1, 2025, Google Play will block all app submissions and updates targeting Android 15+ that do not support 16 KB page sizes.
>
> Compliance requires upgrading to Android SDK 5.38.0 or higher (strongly recommended: upgrade to the latest release).

## Version 5.49.0 - 2026-June-16   [Skip link to Version 5.49.0 - 2026-June-16](https://developer.incode.com/docs/changelog\#version-5490---2026-june-16)

> 🚧
>
> Use the BOM to keep SDK module versions aligned when upgrading. If versions are managed manually, refer to the updated dependency versions in the **Module Versions** section below.

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details)   [Skip link to API Changes (refer to ,[object Object], for details)](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details)

- Removed `IncodeWelcome.getReport(interviewId, ReportListener)`, the `ReportListener` interface, and the `ResponseEventReport` class. The backing `/omni/get/report` backend endpoint is no longer supported and reports cannot be generated through the SDK. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Renamed `IncodeColorPalette.neutral` to `neutralLight` and `IncodeColorPalette.black` to `neutralDark`, including the matching JSON keys, to align with iOS so a single theme JSON works across both platforms.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes)

- Updated `core-light` module to v3.0.14: incorporating libRecogKitAndroid.so v3.9.2; fixing a regression (introduced in 5.42.0) that slowed on-device ML model loading and increased SDK initialization time.
- Added missing Javadocs for `SelfieScanResult` fields and `STATUS_*` constants, including `@since` links to the introducing or deprecating SDK versions where available.
- Added consecutive-frame debouncing for blur and glare real-time feedback in the `IdScan` module so a single bad frame no longer flashes the error pill. Aligns Android with iOS and Web.
- Added `Document Capture` V2 module. Available when the V2 feature gate is enabled.
- Added `DocumentScan.Builder.setDocumentSources(...)` to configure which submission methods (`CAMERA`, `FILE_UPLOAD`, `IMAGE_UPLOAD`) appear on the `Document Capture` chooser. Defaults to all three. For document types that don't accept PDFs, `FILE_UPLOAD` is dropped only when another source remains; configuring exactly `FILE_UPLOAD` on such a type is rejected with a configuration error before launch. Honored by both V1 and V2: in V1 the set refines the provider options chooser shown via `setShowDocumentProviderOptions(true)`; with that chooser disabled, V1 remains camera-only.
- Added `Email` V2 module. Available when the V2 feature gate is enabled.
- Refreshed the `CombinedConsent` module UI to align with the latest Incode design and added dark-mode support.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only)

- Added `Custom Watchlist` V2 module. Available when the V2 feature gate is enabled, with dark-mode support.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes)

- Fixed the first streaming recording sometimes missing at onboarding start due to a token timing issue.
- Fixed `Face Login` reopening the camera and capturing a second time after a successful login flow completed.
- Improved video-liveness recording reliability on devices with flaky camera HAL (e.g. some MediaTek-backed Samsung models): when the camera is invalidated mid-recording and CameraX never delivers the `Finalize` event, the SDK now salvages any partial MP4 already written to disk and queues it for upload instead of dropping the recording.
- Security improvements.
- Improved accessibility behavior for phone input field.
- Fixed a crash in the `CombinedConsent` module when system font size is set to maximum.
- Fixed `SelfieScan` auto-capture being slow or failing to fire on Pixel 6 Pro and other high-density-screen devices in portrait, due to an overly tight face position constraint introduced in 5.45.0.
- Fixed the camera preview being visible on the status bar / notification line during `SelfieScan`, `Face Authentication`, and `Face Login` capture.
- The SDK no longer contributes an `io.sentry.proguard-uuid``<meta-data>` entry to the host app's merged manifest.
- Fixed the `IdScan` V2 module to respect the configuration when the `setShowRetakeScreenForManualCapture()` method in the `IdScan.Builder` class is set to `false`.
- Fixed a `Duplicate class` build failure when integrating the `onboard` SDK alongside another library whose obfuscated classes occupy the root JVM package.
- Fixed unexpected focus jumps in `Dynamic Forms` fields.
- Added `@since Deprecated in <version>` tags to previously-undocumented deprecated public APIs across the SDK, so consumers can see at a glance when each API was deprecated.
- Rewrote the deprecation messages on `IncodeWelcome.fetchAllFlows()`, `IncodeWelcome.fetchFlow()`, `IncodeWelcome.downloadLibraries()`, `IncodeWelcome.isLibrariesReady()`, `IncodeWelcome.subscribeForLibrariesReady()`, and the `LibraryDownloadError` enum to name the recommended replacements.
- Fixed the `IdScan` V2 success screen displaying "Continue" instead of "Let's continue" on the label shown after a successful ID capture.
- Fixed back-of-ID streaming video not being recorded when the ID is configured as a separate back-only scan (`ScanStep.BACK`). The back-side recording is now finalized and uploaded like the front side.
- Improved error reporting when the E2EE key-exchange (`getPublicKey`) request fails: the resulting error now includes the HTTP status code and the server's error detail instead of a generic message.
- Fixed a crash in the `Video Selfie` module that occurred when the app was minimized while the recorded video was uploading, which left the session marked as Not Completed.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes)

- Deprecated `IncodeException.DeviceEnvironmentException` and `IncodeException.isDeviceEnvironmentException()`. Both are unreachable at runtime - the SDK process terminates on detection before this exception can be delivered. Remove any catch blocks or calls referencing these; they are dead code. Both will be removed in a future release.
- Deprecated `SelfieScan.FaceAuthMode.SERVER`. This enum case should not be used for new integrations. Use the [FaceAuthentication](https://developer.incode.com/docs/face-authentication-overview) module instead. `SelfieScan.FaceAuthMode.LOCAL` (offline Face Login) is not affected.
- Deprecated `DocumentScan.Builder.setShowTutorials(...)` and `DocumentScan.Builder.setShowDocumentProviderOptions(...)` for V2. Both are ignored by the V2 `Document Capture` module — use `setDocumentSources(...)` to configure the chooser. Still honored in V1.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies)

- `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20` -\> `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.25`
- `org.jetbrains.kotlin:kotlin-reflect:1.9.20` -\> `org.jetbrains.kotlin:kotlin-reflect:1.9.25`
- `org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20` -\> `org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25`
- `org.jetbrains.kotlin:kotlin-serialization:1.9.20` -\> `org.jetbrains.kotlin:kotlin-serialization:1.9.25`
- `com.google.devtools.ksp:1.9.20-1.0.14` -\> `com.google.devtools.ksp:1.9.25-1.0.20`
- kotlinCompilerExtensionVersion `1.5.4` -\> `1.5.15`
- `com.guardsquare:dexguard-gradle-plugin:9.14.2` -\> `com.guardsquare:dexguard-gradle-plugin:9.14.3`

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only)

- Fixed the SDK's built-in Result screen failing to display the user score in non-E2EE flows, due to the deprecated `/omni/get/report` endpoint returning HTTP 500 during an eager pre-fetch on screen entry. The screen now loads results without calling the removed endpoint, and the unused "Reports" button has been removed.
- Fixed loss of the persisted session token after the app process was killed, which caused authenticated requests to fail with HTTP 401 and prevented onboarding from resuming. The token is now retained across process death so flows continue without re-authentication.
- Fixed the ID capture `captureAttemptFinished` event being reported with the wrong name in UXV2 frame-logging flows, so the event now matches the value emitted by all other flows.

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions)

- `core-light` 3.0.14
- `nfc` 1.5.5

## Version 5.48.0 - 2026-May-22   [Skip link to Version 5.48.0 - 2026-May-22](https://developer.incode.com/docs/changelog\#version-5480---2026-may-22)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-1)

- Added Hebrew (`he-IL`) localization for the `onboard` SDK module. Pass `he-IL` to `CommonConfig.Builder.setLocalizationLanguage(...)` to render the SDK UI in Hebrew, and to `SessionConfig.Builder.setLanguage(...)` to enable Hebrew voice-consent transcription. (Both `he-IL` and the legacy Java-style `he_IL` form are accepted by `setLocalizationLanguage`. The Android resource folder uses the legacy ISO 639-1 qualifier `values-iw/` internally — this is a platform requirement and not an integrator-facing identifier.)
- Lottie animations and vector drawables in V2 modules (`IdScan`, `SelfieScan`) now inherit colors from the SDK color scheme, aligned with the [ID capture design guidelines](https://developer.incode.com/docs/id-capture-design) and [face capture design guidelines](https://developer.incode.com/docs/face-capture-design). Customer-overridden animation resources are automatically detected and left unchanged.
- Local Room databases are now encrypted at rest using SQLCipher. Existing unencrypted databases are automatically migrated to encrypted format on first access. See [Licenses](https://developer.incode.com/docs/licenses) for the SQLCipher attribution that must be reproduced if your app ships an open-source licenses screen.
- Added a persistent dim overlay around the silhouette on the `SelfieScan` V2 manual capture screen.
- Added `Phone` V2 module. Available when the V2 feature gate is enabled.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-1)

- Added support for verifying identity using Google Wallet IDs within the `IdScan` module, via the new optional `com.incode.sdk:wallets` dependency. Enable per-module with `IdScan.Builder.setGoogleWalletIdEnabled(true)`, and switch between production and sandbox environments via `IncodeWelcome.Builder.setGoogleWalletEnvironment(...)`. The optional `wallets` module requires `minSdk` 28.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-1)

- Fixed an issue where Kotlin interface callbacks with default implementations in the `onboard` module required empty overrides from Java integrators; they are now emitted as Java `default` methods and are optional overrides for both Kotlin and Java integrators. This includes the per-attempt `SelfieScanListener` and `IdScanListener` callbacks introduced in 5.47.0:

- `SelfieScanListener.onSelfieScanReady`
  - `SelfieScanListener.onSelfieScanAttemptCompleted`
  - `IdScanListener.onIdScanReady`
  - `IdScanListener.onIdFrontAttemptCompleted`
  - `IdScanListener.onIdBackAttemptCompleted`
- `Face Authentication` V2 module: Fixed `SelfieScan.Builder().setCaptureAttempts` not being respected when the captured selfie did not match the identity provided via `CommonConfig.Builder().setFaceAuthenticationHint(...)`; the flow ended after the first attempt instead of allowing the configured number of retries.
- Fixed button label clipping on long or translated strings: `IncodeButton` now auto-sizes its text, shrinking the font before adding ellipsis, and wraps multi-word labels to two lines.
- Security improvements.
- Fixed the verification-complete confirmation message in `ApproveActivity` and the overall score in `ResultsActivity` (the `SHOW_RESULTS` module) not being announced as accessibility headings by TalkBack.
- Accessibility improvements in the `Dynamic Forms` module.
- Fixed `Login` flow rendering the legacy selfie tutorial instead of the V2 tutorial when `showTutorials` was enabled.
- Updated the `Proof of Address` tutorial screen design and improved the layout of the review screen.
- Fixed inconsistent V1/V2 UX rendering across onboarding modules within a single flow. The V2 feature gate is now properly awaited before the first module starts, so `IdScan`, `SelfieScan`, and other modules consistently render the same UX version.
- Corrected typos, grammar, and British-English spellings in customer-facing Javadoc, KDoc, and Markdown documentation.
- Fixed `SelfieScan.Builder.setLogo(...)` not being applied to the toolbar on the V2 selfie capture screen.
- Changed the default values of the `setHeadCoverCheckEnabled()` and `setMaskCheckEnabled()` methods to `true` in the `SelfieScan.Builder`.
- Changed the default values of the `setHeadCoverCheckEnabled()` and `setMaskCheckEnabled()` methods to `true` in the `VideoSelfie.Builder`.
- Fixed a Spanish localization typo on the camera permission screen: `Salir del processo` is now `Salir del proceso`.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-1)

- Fixed a `VideoSelfieActivity` crash when Android recreates the activity while the video selfie upload screen is being restored.
- Fixed a rare crash (`FileNotFoundException` / `UndeliverableException`) during selfie video upload when `SelfieScanVideoRecordVideo.mp4` was missing or unflushed at upload time. Failures now route through the standard retry UI / `SelfieScanListener.onError` path instead of crashing the flow.

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies)

- `androidx.credentials:credentials:1.5.0` (required only when using the new optional `wallets` module)
- `androidx.credentials:credentials-play-services-auth:1.5.0` (required only when using the new optional `wallets` module)
- `net.zetetic:sqlcipher-android:4.6.1`

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions-1)

- `core-light` 3.0.13
- `nfc` 1.5.4
- `wallets` 1.0.0 (new optional module)

## Version 5.47.0 - 2026-May-07   [Skip link to Version 5.47.0 - 2026-May-07](https://developer.incode.com/docs/changelog\#version-5470---2026-may-07)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-2)

- Updated `core-light` module to v3.0.12: incorporating libRecogKitAndroid.so v3.9.1; updating the on-device liveness model used by `SelfieScan` and `FaceAuthentication` (`model-liveness-detection` 3.2.2)
- Added `allAttemptsExhausted` flag to `IdScanResult` and `SelfieScanResult` indicating when capture or upload retries are no longer available.
- Added per-attempt `IdScan` callbacks `onIdFrontAttemptCompleted` / `onIdBackAttemptCompleted` to `IdScanListener` (and `IncodeWelcome.OnboardingListener`). They fire after every individual capture attempt, including intermediate failures. The terminal attempt is signaled when `IdScanResult.allAttemptsExhausted` is `true` or when the attempt succeeds.
- Added per-attempt `SelfieScan` callback `onSelfieScanAttemptCompleted` to `SelfieScanListener` (and `IncodeWelcome.OnboardingListener`). It fires after every individual selfie capture attempt, including intermediate failures. The terminal attempt is signaled when `SelfieScanResult.allAttemptsExhausted` is `true` or when the attempt succeeds.
- Added missing Javadocs for `IncodeWelcome` entry-point APIs.

- `startOnboarding(...)`
  - `startOnboardingSection(...)` (all overloads)
  - `startWorkflow(...)`
  - `startFaceLogin(...)` (all overloads)
  - `startFlow(...)` (all overloads)
  - `startFlowFromDeeplink(...)` (all overloads)
  - `finishOnboarding(...)`
- Added `Geolocation.setSkippable(boolean)` to control what happens when the user denies the location permission and taps `Skip this step` in the V2 flow. When skippable, the flow continues; otherwise it ends with `OnboardingListener.onError` (and `OnboardingListener.onGeolocationUnavailable`). The flag is also wired up to the dashboard's `Allow user to skip geolocation` toggle for both `Flows` and `Workflows` configurations.
- Updated the V2 Geolocation skip button label to read `Skip this step` when `Geolocation.setSkippable(true)` and `Quit process` when `Geolocation.setSkippable(false)`, on both the permission-denied and location-unavailable screens.
- Added `LocationPermissionDeniedException`, raised by the V2 `Geolocation` flow when the user exits from the permission-denied screen. `GeolocationUnavailableException` is now reserved for the location-unavailable and max-retries exit paths.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-2)

- Added an on-device face occlusion check available in `SelfieScan` (V1 and V2) and `FaceAuthentication`. Configure it locally via `setFaceOcclusionEnabled(...)` and `setFaceOcclusionSeverity(...)` on the respective `Builder` classes, or from the dashboard's `isOcclusionEnabled` / `occlusionSeverity` settings for the respective modules. The feature requires the new optional `com.incode.sdk:model-face-occlusion` dependency.
- Added the `setOnDeviceFaceResultsSubmissionEnabled()` API to the `SelfieScan` V2 module to support on-device face processing. When enabled, liveness detection and age estimation run entirely on the user's device. No biometric images leave the SDK.

- `setOnDeviceFaceResultsSubmissionEnabled()` requires E2EE, supports auto-capture only, and has other configuration constraints. See the [Javadoc](https://incode-technologies-example-repos.github.io/Incode-Welcome-Android-example/javadoc/com/incode/welcome_sdk/modules/SelfieScan.Builder.html) for more details.
- Implemented on-device age estimation in the `SelfieScan` V2 module behind `setOnDeviceFaceResultsSubmissionEnabled()`, available via the new optional `com.incode.sdk:model-age-estimation` dependency.
- Added Digital ID validation for selected PDF files to reject uploads larger than 5 MB with an appropriate error state.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-2)

- Updated the SDK's internal encrypted storage to a more reliable, future-proof implementation. Existing data is migrated transparently on first launch after upgrade.
- Improved reliability of internal encrypted storage on low-end devices that previously experienced intermittent encryption failures.
- Fixed an issue where `Behavioral Trust` results were reported as unknown.
- Removed internal SDK implementation details from the [Javadoc](https://incode-technologies-example-repos.github.io/Incode-Welcome-Android-example/javadoc/index.html) that were not relevant to integration.
- Fixed missing back-side tutorial in the `IdScan` V2 flow when `IdScan.ScanStep.BACK` is used with ID tutorials enabled.
- Fixed `IdScan` V2 reporting `IdScanResult.scanStatus = RESULT_ERROR_UNKNOWN` for wrong-document-side captures; now correctly reports `RESULT_ERROR_WRONG_ID_SIDE`.
- Fixed an issue where `IncodeWelcome.startWorkflow()` only logged a `ModuleConfigurationException` at startup and did not invoke `OnboardingListener.onError()`.
- Fixed the image quality severity configured on the Dashboard being ignored by the `SelfieScan` module; the configured severity is now honored.
- Fixed a rare camera stack issue where `IdScan` or `SelfieScan` could fail during capture on certain devices.

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions-2)

- `core-light` 3.0.12
- `model-liveness-detection` 3.2.2
- `model-face-occlusion` 0.2.0 (new optional module)
- `model-age-estimation` 2.2.2 (new optional module)

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-1)

- `androidx.datastore:datastore:1.1.7`
- `com.google.crypto.tink:tink-android:1.21.0`

## Version 5.46.0 - 2026-Apr-27   [Skip link to Version 5.46.0 - 2026-Apr-27](https://developer.incode.com/docs/changelog\#version-5460---2026-apr-27)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-3)

- Added accessibility (TalkBack) support for all Dynamic Forms input fields. Screen readers now announce field labels, required state, current values or hints, and validation errors.
- `Face Authentication`: Enriched unknown error reporting with original exception details and cause chain for better diagnostics on the Dashboard.
- Added the possibility to enable UXV2 modules directly from the Dashboard configuration.
- Enabled high resolution ID and Face capture via `clientExperimentId`. Pass `high_res_capture` (optionally combined with other experiments using `|`, e.g. `experimentV2|high_res_capture`) to opt in.
- Migrated the `CURP` module to the V2 design system (Compose), including a "Non-Binary/Other" gender option.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-3)

- Migrated Dynamic Forms text, date, select, and yes/no fields from legacy theme to V2 design system (`IncodeTheme`), applying consistent styling to match the previously updated phone and country selector inputs.
- Improved TalkBack accessibility in the `IdScan` V2 module: better semantic grouping, button roles, content descriptions, live region announcements, and focus management.
- Improved button accessibility in V2 Compose screens.
- The `SelfieScan` module outline ring now inherits its coloring from the color scheme, aligned with the [face capture design guidelines](https://developer.incode.com/docs/face-capture-design).
- Improved accessibility behavior for Compose-based SDK modal components by adding stronger dialog semantics and deterministic initial focus handling for permission and picker dialogs.
- Fixed the overlay transition around the silhouette for `SelfieScan` V2 module.
- Fixed incorrect initial TalkBack focus in `IdScan` V2 by hiding interactive elements during pre-initialization and controlling traversal order for buttons and the module header.
- The SDK now throws an `ExternalTokenRequiredException` when a `/0` URL is configured and no external token is provided — either the base URL, or the E2EE URL while E2EE is enabled. Previously, the E2EE variant caused a crash with `lateinit property has not been initialized` in the E2EE interceptor.
- Fixed an issue where video recording could fail if the recording directory did not exist before starting recording.
- Improved ID capture sharpness on the CameraX (V2) camera stack: enabled best-candidate selection during the capture countdown, and prevented automatic macro camera switching on multi-camera devices (API Level 28+).
- Restored missing camera-opened analytics events on the V2 capture path.
- Fixed a DexGuard class-inlining issue where optional dependency references (Huawei, Sardine) could be merged into SDK classes, causing runtime crashes when those dependencies are not present.
- Fixed dynamic localization not being applied in UXV2 modules due to the localized `Context` not being propagated. The issue was introduced in `5.45.1`.
- Fixed an issue where `Behavioral Trust` results were reported as unknown.
- Fixed an issue where `Behavioral Trust` results were incorrectly reported as a failure on certain devices.
- Improved Lottie animation playback smoothness on the ID capture tutorial screen.
- Improved camera compatibility, reducing false unsupported-device errors.
- Fixed an issue where the `QES` and `AES` module activities did not close after publishing results.
- Introduced unified searchable and plain dropdown components — used by Dynamic Forms (country selector, select inputs) and the `CURP` V2 module — with improved TalkBack announcements, focus handling, and validation feedback. The country selector now supports searching (type to filter).

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-2)

- Fixed `IncodeWelcome.SSLConfig` not being accessible as a public API and custom SSL configuration not being applied correctly.

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions-3)

- `core-light` 3.0.11

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-1)

- `com.squareup.okhttp3:logging-interceptor:4.9.3` -\> `com.squareup.okhttp3:logging-interceptor:4.12.0`
- `org.json:json:20180813` -\> `org.json:json:20251224`

## Version 5.45.1 - 2026-Apr-06   [Skip link to Version 5.45.1 - 2026-Apr-06](https://developer.incode.com/docs/changelog\#version-5451---2026-apr-06)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-4)

- Added dark mode support for drawables in V2 modules. Custom drawables can now provide a `drawable-night` variant that is automatically resolved based on the active display mode.
- Added `MODULE_VERSION` info for `SelfieScan`, `FaceAuthentication` and `FaceMatch` modules to the module-opened analytics event.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-4)

- `IdScan` and `SelfieScan` V2 modules now survive configuration changes (e.g., theme change).
- Fixed close header button visibility issue on the manual photo review screen in `IdScan` V2 flow.
- Fixed an issue where the manual capture button in the `SelfieScan` V2 module was not properly announced by TalkBack because it did not have a `contentDescription`.
- Fixed `setShowFooter(false)` not being applied in the `Geolocation` V2 module - the footer was always visible regardless of the `IncodeUXConfig` setting.
- Fixed missing "Get Ready" circle spinner on selfie capture when face re-enters constraints after being lost or after capture timeout.
- Improved selfie ML model loading performance: models now load lazily on a background thread and in parallel, reducing main thread blocking during SDK initialization and selfie screen startup.

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions-4)

- `core-light` 3.0.10

## Version 5.45.0 - 2026-Mar-23   [Skip link to Version 5.45.0 - 2026-Mar-23](https://developer.incode.com/docs/changelog\#version-5450---2026-mar-23)

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details)   [Skip link to API Changes (refer to ,[object Object], for details)](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-1)

- Removed the transition/loading screen that was shown between modules. Any customizations related to this screen (e.g., overriding `onboard_sdk_activity_transition.xml`, `IncodeTransitionScreenState`) can be safely removed.
- `IdScan` module: document chooser visibility is now controlled only by Flows and `setShowIdTypeChooser(...)`. Setting `idType` no longer hides the chooser. Please see [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Security improvements.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-5)

- Added German localization.
- Extended the module customization functionality to align with the [recent design guidelines](https://developer.incode.com/docs/id-capture-design). Updated the `IdScan` V2 module to use the new customization system.
- Added `Geolocation` Module V2. Like other V2 modules (`IdScan`, `SelfieScan`, `ProcessId`, `FaceMatch`), it is available when the feature gate is enabled.
- Implemented new camera loading indicator in `IdScan` V2 module.
- `IdScanResult.idImageBase64` is now populated in all modes in `IdScan` V2. Previously, it was only available in Capture-Only mode.
- Updated the document chooser screen in V2 `IdScan` module to always use a more compact design and to show documents dynamically based on the module configuration.
- Strengthen device environment checks.
- `SelfieScan` V2: tablets are now landscape-locked with an optimized layout. Phone devices remain portrait-locked.
- Updated UI for the [Permission screens](https://developer.incode.com/docs/face-capture-screens-states#permission-screens) in the `IdScan` and `SelfieScan` V2 modules.
- Improved feedback during ID capture in the `IdScan` V2 module, with different labels shown in Standard and Capture-Only mode.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-3)

- Ported these additions from `5.40.2`:

- Added ability to pass `SessionConfig` to `IncodeWelcome.startFaceLogin()` API. This allows enabling of end-to-end encryption (E2EE) in Face Login mode.
  - Face Login: Security improvements
- Added support for ASYNC modules in Workflows. Currently applies to the `VideoSelfie` module, where the `/omni/finish-status` endpoint is handled on the backend.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-5)

- Bumped DexGuard plugin to 9.13.3 to fix an OOM error caused by bloated consumer ProGuard rules shipped with the AAR.
- Updated the position of the capture frame on the screen according to the [capture screen specification](https://developer.incode.com/docs/id-capture-specs-guidelines) for the `IdScan` V2 module.
- Updated the camera feed positioning in the `SelfieScan` module.
- Adjusted the `SelfieScan` module UI to align with the [UXv2 styling](https://developer.incode.com/docs/face-capture-design), including new success/error screens, animations, and transitions.
- Fixed potential crashes when backgrounding an app with a Camera-based module (`IdScan`, `SelfieScan`, etc) on screen and returning to the app
- Fixed a rare crash during ID capture upload caused by out-of-bounds bitmap coordinates.
- Fixed an issue with location fetching in the `Geolocation` module; Unavailable location is now handled by falling back to requesting location updates.
- Aligned error screens for the `IdScan` V2 module with [recent design guidelines](https://developer.incode.com/docs/id-capture-design).
- Updated capture instructions on success screen in the `IdScan` V2 module.
- Fixed an intermittent error in frame analyzers caused by a race condition in concurrent frame processing.
- Fixed the app getting stuck during `IdScan` when the user declines the screen recording permission with `configureScreenRecording(true, false)` config.
- Fixed image quality checks severity in the `SelfieScan` and `FaceAuthentication` module so that configured thresholds are consistently honored across SDK-based and Dashboard-based configurations.
- Update Close icon on all screens with close button configured, and Help icon on ID Capture V2 screen
- Fixed a `NullPointerException` that could occur when calling `IncodeWelcome.deleteUserLocalData()` if a temporary images directory failed to create.
- Fixed potential `NullPointerExceptions` and `ConcurrentModificationExceptions` that could occur in the `SelfieScan` module when determining the horizontal view angle of the camera.
- Fix content centering problems for the `Face Match` V2 module
- Fixed an issue where the Device Trust check in Deepsight could be marked as "unknown".
- `Face Authentication`: The progress text now shows "Uploading" instead of "Verifying".

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode)

- Improved functionality of the feature flag mechanism when using `setClientExperimentId`, particularly in Capture-Only and Delayed modes.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-3)

- Updated the HTTP method for `/omni/finish-status` from `GET` to `POST`

### Module Versions   [Skip link to Module Versions](https://developer.incode.com/docs/changelog\#module-versions-5)

- `core-light` 3.0.9
- `nfc` 1.5.3

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-2)

- `com.guardsquare:dexguard-gradle-plugin:9.13.1` -\> `com.guardsquare:dexguard-gradle-plugin:9.13.3`

### Removed dependencies   [Skip link to Removed dependencies](https://developer.incode.com/docs/changelog\#removed-dependencies)

- `com.guardsquare:dexguard-runtime`

## Version 5.44.0; `core-light` 3.0.8 - 2026-Feb-25   [Skip link to Version 5.44.0; ,[object Object], 3.0.8 - 2026-Feb-25](https://developer.incode.com/docs/changelog\#version-5440-core-light-308---2026-feb-25)

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details)   [Skip link to API Changes (refer to ,[object Object], for details)](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-2)

- `DocumentType` has been moved

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-6)

- Added support for a bill of materials (BOM) that can be used when integrating libraries from the Incode Omni SDK. Please refer to the [Incode Bill of Materials (BOM) section of the Setup Guide](https://developer.incode.com/docs/setup-android#incode-bill-of-materials-bom) and [Migration Guide](https://developer.incode.com/docs/migration-guide) for further details.
- Added a lot of missing Javadocs in the following packages/classes/methods of `com.incode.welcome_sdk.`:

- `CommonConfig.Builder.setShowCloseButton()`
  - `commons.exceptions.*`
  - `commons.exceptions.IncodeException.CaptureRetryAttemptsExceeded`
  - `commons.exceptions.IncodeException.DeviceEnvironmentException.*`
  - `commons.exceptions.video_selfie.*`
  - `data.*`
  - `data.Event.*`
  - `IncodeWelcome.Builder.setTestModeEnabled()`
  - `listeners.*`
  - `modules.*`
- Added a new encryption layer to data the SDK stores in `SharedPreferences`.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-4)

- Updated the `FaceMatch` module to [UxV2](https://developer.incode.com/docs/face-match-design). This update also introduces a new SDK API: `FaceMatch.Builder.setShowLivenessResult()`.

### Added (Capture-Only mode)   [Skip link to Added (Capture-Only mode)](https://developer.incode.com/docs/changelog\#added-capture-only-mode)

- Added the `presignedVideoFilePath` parameter to the `SelfieScanResult` model when `SelfieScan.Builder.()setVideoLivenessRecordingEnabled()` is enabled

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-6)

- Fixed recording being cut off at the beginning and occasional video missing in `SelfieScan` and `IdScan`.
- Fixed an issue where the "No internet" bottom bar UI would overlap with the bottom navigation buttons when `targetSdk` is 35+
- Updated manual capture text in the `SelfieScan` module. Updated the manual capture button icon and the layout alignment.
- Added the missing default outer gray circle camera border in the `SelfieScan` module.
- Fixed an issue where the `onSSLPinningFailed()` callback was not called when using `startOnboardingSection()`
- Fixed letter spacing in the `MINIMAL` variant of realtime feedback messages in the `IdScan` module.
- Updated text on the Tutorial and Capture screens in the `IdScan` V2 module to reflect `US Smart Capture`.
- Fixed an issue where the close button could not be shown in the `SelfieScan` module.
- Added missing exclamation mark to the "Success" state message in `SelfieScan`.
- Fixed an issue where `IncodeWelcome.deleteUserLocalData()` was not deleting video liveness and screen recordings from the `IdScan` and `SelfieScan` modules.
- Fix session breaking issues in the `IdScan` V2 flow when the user scans the front side of the document with a covered face.
- Updated the V2 flow maximum header logo height.
- Prevent `ConcurrentModificationException` in `IdScan` and `SelfieScan` V2 that could occur randomly when capturing the photos.

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-2)

- `androidx.security:security-crypto-ktx:1.1.0`

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-3)

- `com.guardsquare:dexguard-gradle-plugin:9.12.6` -\> `com.guardsquare:dexguard-gradle-plugin:9.13.1`
- `com.guardsquare:dexguard-runtime:9.12.6` -\> `com.guardsquare:dexguard-runtime:9.13.1`

## Version 5.43.0; `core-light` 3.0.7; `nfc` 1.5.2 - 2025-Dec-30   [Skip link to Version 5.43.0; ,[object Object], 3.0.7; ,[object Object], 1.5.2 - 2025-Dec-30](https://developer.incode.com/docs/changelog\#version-5430-core-light-307-nfc-152---2025-dec-30)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-7)

- Added support for `allowSkipDocumentCapture` configuration for the `DocumentScan` module, allowing users to skip document capture when enabled. Added `isDocumentValidationSkipped` field to `DocumentValidationResult` to indicate when document validation was skipped.
- Updated wording in the `SelfieScan` V2 module to improve clarity and user guidance during the selfie capture process.
- Added `getDocumentImage()` method to the `DocumentValidationResult` class, which returns the document image as a `Bitmap`.
- Added "minimal" option for the real time feedback shown in the `IdScan` V2 module. This can be configured via `IncodeUXConfig.Builder().setRealtimeFeedbackMessageUIFlavor()`. Available options are `RealtimeFeedbackMessageUIFlavor.STANDARD` and `RealtimeFeedbackMessageUIFlavor.MINIMAL`.
- Updated [Javadoc](https://incode-technologies-example-repos.github.io/Incode-Welcome-Android-example/javadoc/com/incode/welcome_sdk/IncodeWelcome.Builder.html#setClientExperimentId(java.lang.String)) for `IncodeWelcome.Builder().setClientExperimentId()` to better reflect proper usage.
- Updated UI in the `FaceMatch` module for compact UI mode. This feature can be enabled via `FaceMatch.Builder().setFaceMatchAnimationEnabled(false)`.
- Performance improvements.
- Added missing Javadocs for the following SDK APIs:
  - Introduced with [Dynamic Localization](https://developer.incode.com/docs/user-guide-customization#32-dynamic-localization) in `5.3.0`:

- `IncodeWelcome.setStrings()`
    - `IncodeWelcome.setStringArray()`
    - `IncodeWelcome.setQuantityStrings()`
  - Introduced with the `FaceAuthentication` module in `5.40.0`:

- `FaceAuthenticationListener`
    - `FaceAuthenticationResult`
    - `IncodeWelcome.setFaceAuthenticationHint()`
- Security improvements.
- New Transition screen layout. This screen is now customizable using the new V2 theming system. Check the [Migration Guide](https://developer.incode.com/docs/migration-guide) for more details.
- Updated UI for Need Help screen in the `IdScan` V2 module.
- Added `setHeaderAlignment()` method to `IncodeUXConfig.Builder` to configure alignment of the Header on the applicable screens. Available options are `HeaderAlignment.START`, `HeaderAlignment.CENTER` (default), and `HeaderAlignment.END`.
- Added PDF417 barcode support to the `IdScan` V2 module, enabled per-flow through the dashboard via the US Smart Capture setting.
- Added support for customizing button styles through `IncodeComponents`. Buttons used in V2 modules can now be configured with custom colors for different states (default, hover, pressed, disabled), borders width, color and radius. See [SDK Customization Guide](https://developer.incode.com/docs/user-guide-customization#2-theme-configuration) for details on component configuration.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-5)

- The `error` field in `IdScanResult` is now populated when retry attempts are exhausted. The `resultCode` is set to `SUCCESS` because the flow continues. This change applies only to `IdScan` V2, as adding it to V1 would be a breaking change.
- Added a specific error message for cases where face occlusion is detected in the `SelfieScan` and `FaceAuthentication` modules.
- Refactored `SelfieScan` and `Face authentication` V2 modules to use `Compose` UI. These modules are now customizable using the V2 theming system. Check the [Migration Guide](https://developer.incode.com/docs/migration-guide) for more details.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-7)

- Fixed an issue where the Behavioral Trust check in Deepsight could get an unknown result on lower-end devices
- Fixed an issue where the Behavioral Trust check in Deepsight would always get an unknown result if `SelfieScan` v2 was used in the session
- Fixed a potential `OutOfMemoryError` with long, repeated use of the `NfcScan` module.
- Fixed an issue where some legacy model files could be retained on the device following an update of the Android SDK.
- Fixed a compatibility issue that caused crashes on Android 14 and earlier due to conflicts between Kotlin extension methods and Java methods introduced in Android 15. This ensures compatibility across all Android versions.
- Fixed an issue where video upload failed in Face Login mode when using video streaming.
- Fixed an issue in the `SelfieScan` module where tutorials were incorrectly skipped in Face Login mode when `SelfieScan` V2 was enabled.
- Improved error handling in video streaming initialization by checking for required dependency first, before checking for available RAM.
- Fixed an `IllegalStateException` that could occur in the `IdScan` v2, `SelfieScan` v1, and `SelfieScan` v2 modules when the camera was determining what features it supports
- Fixed a `CalledFromWrongThreadException` crash in the `SelfieScan` module that could occur randomly.
- Fixed a `NullPointerException` crash caused by the app failing to access the external files directory. This issue was mostly affecting Pixel devices on Android 15/16 (and possibly others)
- Fixed an issue that caused the SDK to stop producing logs in certain cases.
- Fixed an issue where phantom analytics events were being logged in the `IdScan` V2 module when the Passport is selected.
- Fixed an error that would occur when reading a certain type of NFC chip in the `NfcScan` module.
- Fixed an issue where the `NfcScan` module did not respect the `nfcMaxRetries` setting when an NFC read failed due to (possibly) incorrect OCR data.
- Fixed an issue where the camera hardware cannot be found when the host application is built with ProGuard or R8 enabled.
- Fixed an issue where the flow got stuck on the Transition screen when the camera permission was denied in the `FaceAuthentication` module.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-4)

- Fixed a potential `OutOfMemoryError` with long, repeated use of workflows.
- Fixed an issue in `SelfieScan` module where the UI would get stuck when manual review is triggered after capture attempts are exhausted. The flow now finishes immediately with an error instead of showing broken UI.
- Fixed an issue in the `IdScan` module where Back ID scan would start unexpectedly for one-sided documents after pausing and resuming the app.

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode-1)

- Fixed an issue where the Behavioral Trust check in Deepsight would always display an unknown result if `SelfieScan` v1 was used in the session due to relevant data missing when invoking `SelfieScanResult.metadata`.
- Fixed an issue where the Device Trust check in Deepsight would always display a potentially false "PASSED" result if `SelfieScan` v1 was used in the session due to relevant data missing when invoking `SelfieScanResult.metadata`.

### Fixed (Submit-Only mode)   [Skip link to Fixed (Submit-Only mode)](https://developer.incode.com/docs/changelog\#fixed-submit-only-mode)

- Fixed a `NullPointerException` that happens when publishing the result in the `Selfie` module.

## Version 5.42.0; `core-light` 3.0.6; `nfc` 1.5.1 - 2025-Nov-28   [Skip link to Version 5.42.0; ,[object Object], 3.0.6; ,[object Object], 1.5.1 - 2025-Nov-28](https://developer.incode.com/docs/changelog\#version-5420-core-light-306-nfc-151---2025-nov-28)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-8)

- Upgrading `compileSdk` to level 35 is required. Please see [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Added Age Assurance UX to the `IdScan` V2.
- Added `croppedDocumentPath` field to `IdScanResult` (applicable only to `IdScan` v2 module), containing the file path to the cropped document image.
- Added a Review Photo screen in the `IdScan` v2 module, shown after the user captures an ID. This feature can be enabled using the `setShowRetakeScreenForAutoCapture()` and `setShowRetakeScreenForManualCapture()` methods in `IdScan.Builder`.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-6)

- Added info describing which API and configurations were used for starting the SDK to the "Sdk Info" event.
- Added a specific error message for cases where face image quality is too low in the `SelfieScan` module.
- Workflows: added the option to prefill the phone number in the `Phone` module based on the user's previously stored identity.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-7)

- Added support for `CustomModule` in Workflows, allowing integrators to pause a flow, execute custom logic, and resume at the module's next node. The configured `callbackName` is provided as a string for custom handling.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-8)

- Fixed an issue on Android 14+ devices where the `SelfieScan` module could crash after screen recording permission is granted if an active camera preview is showing. The issue was introduced in 5.36.0.
- Fixed a potential `IllegalStateException` that could occur in the following modules after the app was in the background and came back.

- `Conference`
  - `CurpValidation`
  - `IdScan` V2
  - `VideoSelfie`
- Fixed UI issues for targetSdk 35
- Refactored exception handling with dedicated hierarchies: `IncodeException.PermissionNotGranted` (camera, microphone, location, NFC) and `IncodeException.DeviceEnvironmentException` (emulator, hooking, virtual environment, root detection). See the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Fixed an issue where liveness was incorrectly shown as "failed" in the `FaceMatch` module if it came after the `FaceAuthentication` module.
- Fixed crashes on Android 6 that could happen on various screens. The error message was "Error inflating class ImageView".

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-5)

- Fixed an issue where the settings for `Closed Eyes` and `Head Cover` checks were not respected in the `SelfieScan` and `Face Authentication` modules when using Workflows.
- Fixed an issue in the `SelfieScan` module where streaming did not record subsequent face capture attempts after the first failed attempt.
- Fixed a crash in the `FaceAuthentication` module when receiving unknown error codes (e.g., `SELFIE_FACE_OCCLUDED`) from the server. Unknown error codes will be mapped to `UNKNOWN` instead of throwing an exception.
- Fixed an issue in the `SelfieScan` module where use of both Deepsight Video Liveness and video streaming via `setStreamFramesEnabled(true)` would log a "Video Streaming Session Failed Due To An Error" event with a `SessionNullOrInvalidParameter` error code. If both of these features are enabled, video streaming will be ignored.
- Fixed an issue where a log message could appear about the device not having enough RAM to support video streaming when the 'video-streaming' dependency wasn't included.
- Updated log messages related to missing optional dependencies to provide clearer debugging information.
- Removed borders around the images in `FaceMatch` module.

### Removals/Deprecations   [Skip link to Removals/Deprecations](https://developer.incode.com/docs/changelog\#removalsdeprecations)

- Removed the "Referred to executive" screen from the `IdScan` v2 module, and deprecated the `ProcessId.Builder.setEnableIdSummaryScreen()` method.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-4)

- `androidx.activity:activity-compose:1.8.2` -\> `androidx.activity:activity-compose:1.10.1`
- `androidx.camera:camera-camera2:1.4.2` -\> `androidx.camera:camera-camera2:1.5.1`
- `androidx.camera:camera-extensions:1.4.2` -\> `androidx.camera:camera-extensions:1.5.1`
- `androidx.camera:camera-lifecycle:1.4.2` -\> `androidx.camera:camera-lifecycle:1.5.1`
- `androidx.camera:camera-video:1.4.2` -\> `androidx.camera:camera-video:1.5.1`
- `androidx.camera:camera-view:1.4.2` -\> `androidx.camera:camera-view:1.5.1`
- `androidx.fragment:fragment:1.6.2` -\> `androidx.fragment:fragment:1.8.9`
- `com.android.tools.build:8.1.4` -\> `com.android.tools.build:8.6.0`
- `com.google.dagger:dagger:2.48.1` -\> `com.google.dagger:dagger:2.57.2`
- `com.google.dagger:dagger-compiler:2.48.1` -\> `com.google.dagger:dagger-compiler:2.57.2`
- `gradle-8.0-bin.zip` -\> `gradle-8.7-bin.zip`
- `io.insert-koin:koin-android:3.5.3` -\> `io.insert-koin:koin-android:4.0.4`
- `io.insert-koin:koin-androidx-compose:3.5.3` -\> `io.insert-koin:koin-androidx-compose:4.0.4`

## Version 5.41.1 - 2025-Nov-12   [Skip link to Version 5.41.1 - 2025-Nov-12](https://developer.incode.com/docs/changelog\#version-5411---2025-nov-12)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-9)

- Fixed an issue where capturing an image in the `IdScan` and `DocumentScan` v1 modules, as well as the `SelfieScan` v1 and v2 modules, could be slow. For `IdScan` and `DocumentScan`, this could render the "Help" button unresponsive. For the `SelfieScan` module, this could cause the post-capture phase to take longer. This issue was introduced in `5.41.0`

## Version 5.41.0; `core-light` 3.0.5; `nfc` 1.5.0 - 2025-Oct-17   [Skip link to Version 5.41.0; ,[object Object], 3.0.5; ,[object Object], 1.5.0 - 2025-Oct-17](https://developer.incode.com/docs/changelog\#version-5410-core-light-305-nfc-150---2025-oct-17)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-9)

- Updated `core-light` module to v3.0.5: incorporating face attributes model v1.3. New model offers improved detection of hats, masks, eyeglasses, and closed eye detection. Also, multiple face attributes can now be detected at the same time.
- Added Age Assurance UX to the `Selfie` V2.
- Added support for optional fields in `DynamicForms` module.
- Added `ProcessId` V2 module with support for design tokens.
- Added number of remaining ID capture attempts to `IdScan` v2 error screen.
- Added realtime feedback when head coverings (such as hats) are detected. This feature can be enabled using the `setHeadCoverCheckEnabled()` method in `SelfieScan.Builder` and `VideoSelfie.Builder`, or in the corresponding module configs on the Dashboard.
- Added support for 16KB page size devices to the `nfc` module. More info [here](https://developer.android.com/guide/practices/page-sizes).
- Added Digital ID PDF upload flow to the `IdScan` module.

- Introduced a new `IdType` called `DIGITAL_ID`.
  - Added a new API method, `setDigitalIdEnabled()` in `IdScan` for enabling the digital ID option on the Document chooser screen.
- Updated the documentation for following `IncodeWelcome.Builder` APIs to better indicate what happens when disabled.

- `disableEmulatorDetection()`
  - `disableHookCheck()`
  - `disableRootDetection()`
  - `disableVirtualEnvironmentDetection()`

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-8)

- Added support for the `US Smart Capture` option of the `IdScan` v2 module. This is the optimized capture flow for US IDs which captures the back of the ID to extract data from the barcode. Exclusively available with DMV Face Match.
- Improved StatSig configuration to enable feature gate segmentation per-flow.
- Security improvements.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-10)

- UI Improvements in `IdScan` v2.
- Fixed an issue where liveness was incorrectly shown as fail in the `FaceMatch` when the `Video Selfie` module was used as the Selfie.
- Fixed swapped ES/PT translations for the "Quit process" button on the V2 Permission Request screen.
- Fixed a crash in the `Selfie` module due to `CalledFromWrongThreadException`.
- Code security improvements.
- Fixed DexGuard configuration to preserve Kotlin metadata, allowing Named Arguments to be used in `IncodeWelcome.Builder`.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-6)

- Fixed an issue where end-to-end encryption (E2EE) was not applied when using external token, causing requests to be sent unencrypted.
- Added storing of the `customerUUID` in the `SelfieScan` module when using Face Login (1:N) mode with `SelfieScan.storeAuthenticationEnabled(true)`. The value appears in the `Incode Dashboard > Authentication` tab after authentication sync completes.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-5)

- `com.github.Tgo1014:JP2ForAndroid:1.0.4` -\> `dev.keiji.jp2:jp2-android:1.0.5`
- `com.guardsquare:dexguard-gradle-plugin:9.12.2` -\> `com.guardsquare:dexguard-gradle-plugin:9.12.6`
- `com.guardsquare:dexguard-runtime:9.12.2` -\> `com.guardsquare:dexguard-runtime:9.12.6`

## Version 5.40.3 - 2026-Jan-30   [Skip link to Version 5.40.3 - 2026-Jan-30](https://developer.incode.com/docs/changelog\#version-5403---2026-jan-30)

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-7)

- Fixed an issue where end-to-end encryption (E2EE) was not applied when using external token, causing requests to be sent unencrypted.

## Version 5.40.2 - 2026-Jan-08   [Skip link to Version 5.40.2 - 2026-Jan-08](https://developer.incode.com/docs/changelog\#version-5402---2026-jan-08)

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-9)

- Added ability to pass `SessionConfig` to `IncodeWelcome.startFaceLogin()` API. This allows enabling of end-to-end encryption (E2EE) in Face Login mode.
- Face Login: Virtual environment checks are now always performed, even when disabled in configuration. The login flow aborts if any check fails.
- Face Login: Security improvements

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-11)

- Fixed an issue that caused the SDK to stop producing logs in certain cases.

## Version 5.40.1 - 2025-Sep-22   [Skip link to Version 5.40.1 - 2025-Sep-22](https://developer.incode.com/docs/changelog\#version-5401---2025-sep-22)

### Fixed (Standard mode only)   [Skip link to Fixed (Standard mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-8)

- Fixed an issue where end-to-end encryption (E2EE) was not applied, causing requests to be sent unencrypted. This issue was introduced in `5.40.0`.

## Version 5.40.0; `core-light` 3.0.4; `nfc` 1.4.4; `video-streaming` 1.6.0; `extensions` 1.2.1; `model-face-recognition` 3.5.1; `model-id-face-detection` 3.5.1; `model-liveness-detection` 3.2.1 - 2025-Sep-05   [Skip link to Version 5.40.0; ,[object Object], 3.0.4; ,[object Object], 1.4.4; ,[object Object], 1.6.0; ,[object Object], 1.2.1; ,[object Object], 3.5.1; ,[object Object], 3.5.1; ,[object Object], 3.2.1 - 2025-Sep-05](https://developer.incode.com/docs/changelog\#version-5400-core-light-304-nfc-144-video-streaming-160-extensions-121-model-face-recognition-351-model-id-face-detection-351-model-liveness-detection-321---2025-sep-05)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-10)

- Introduced `CommonConfig#setUXConfig()` method for UX customizations in V2 `IdScan` and `SelfieScan` modules.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-10)

- Added support for the `onlyFront` and `onlyBack` flags from the dashboard configuration for the `IdScan` module.
- Added customization guide for the Manual Shutter Button in the `Selfie` V2 module. Please refer to the [SDK Customization How-To Guide](https://developer.incode.com/docs/user-guide-customization) for details.
- Added "All photos are encrypted" notice to `IdScan` v2.
- Added support for 16KB page size devices to the `video-streaming` module. More info [here](https://developer.android.com/guide/practices/page-sizes). This update to `video-streaming` module requires `minSdk` 24 or higher. Please see [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Added logging for video streaming events. This will help to identify sessions where the video streaming failed to start or an error occurred during the streaming process.
- Added support for the `Face Authentication` module that performs a selfie scan to authenticate the user.
- Added detailed info about SDK versions to the `Sdk Info` event on the Dashboard.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-12)

- UI Improvements in `Selfie` v2.
- UI Improvements in `IdScan` v2.
- Fixed an issue where the Light and Dark themes were not correctly applied to permission screens in the `IdScan` V2 module.
- Added new primitive color to improve theme customization. It applies to `IdScan` v2 buttons and icons.
- Fixed a compile-time issue when using Dynamic Feature Modules with `minSdk` set to 23 or lower. Reported exception message was: `Default interface methods are only supported starting with Android N (--min-api 24): Lx/CameraInfo;getLensFacing()I`.
- Improved StatSig configuration to ensure reliable feature gate splitting.
- Fixed an issue where the `onError()` callback in the `DocumentScan` module was not triggered when the user denied camera permission.
- Improved camera error handling, ensuring that `onError()` is called when the camera fails to start, instead of the app crashing.
- Added integrity checks for ML models based on checksums. This will prevent the app from crashing if the model files are corrupted or missing.
- Improved error handling when ML models cannot be loaded by making the error messages more specific.
- If the Face Detector and Face Quality models cannot be loaded for any reason, `Selfie` module will immediately fall back to Manual Capture mode.
- Fixed an issue where the `QuantityKeyword` class required by `IncodeWelcome.setQuantityStrings()` API was not exposed.
- Fixed a crash in the `IdScan` v2 module that could occur when tapping the Help button, if the host app was using a newer version of Jetpack Compose.
- Fixed a crash in the `NFC Scan` module that could occur on some devices.
- Fixed an issue in the `IdScan` module where the exit confirmation dialog did not appear when the user pressed the close button.
- Fixed an issue in the `SelfieScan` module where the back button did not finish the flow after exit confirmation.
- Fixed the module execution order in `startFlow()` API. It now follows the order specified by the backend.
- Added a prefix to default font resources' names to avoid conflicts with other 3rd party dependencies that contain the same fonts.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-9)

- Fixed a race condition that could cause video streaming in `Selfie` module to fail. The fix ensures that the `Selfie` module begins processing only after video streaming session is fully created.
- Fixed an issue where the selfie photo would be uploaded to subsequent sessions when using Deepsight together with Session Recording.
- Fixed an issue in the `SelfieScan` module where the Deepsight Video Liveness configuration was not respected when using the sections API with the no-API-key approach.

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-3)

- `com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0`

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-6)

- kotlinCompilerExtensionVersion `1.4.4` -\> `1.5.4`
- `com.opentok.android:opentok-android-sdk:2.25.1` -\> `com.opentok.android:opentok-android-sdk:2.30.1`
- `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10` -\> `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20`
- `org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10` -\> `org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20`
- `org.jetbrains.kotlin:kotlin-serialization:1.8.10` -\> `org.jetbrains.kotlin:kotlin-serialization:1.9.20`
- `androidx.compose.material3:material3:1.1.2` -\> `androidx.compose.material3:material3:1.3.2`
- `androidx.compose.ui:ui:1.4.4` -\> `androidx.compose.ui:ui:1.7.8`
- `androidx.compose.ui:ui-graphics:1.4.4` -\> `androidx.compose.ui:ui-graphics:1.7.8`
- `androidx.compose.ui:ui-test-manifest:1.4.4` -\> `androidx.compose.ui:ui-test-manifest:1.7.8`
- `androidx.compose.ui:ui-test-junit4:1.4.4` -\> `androidx.compose.ui:ui-test-junit4:1.7.8`
- `androidx.compose.ui:ui-tooling:1.6.5` -\> `androidx.compose.ui:ui-tooling:1.7.8`
- `androidx.room:room-runtime:2.5.1` -\> `androidx.room:room-runtime:2.6.1`
- `androidx.room:room-rxjava2:2.5.1` -\> `androidx.room:room-rxjava2:2.6.1`
- `androidx.room:room-compiler:2.5.1` -\> `androidx.room:room-compiler:2.6.1`
- `com.guardsquare:dexguard-gradle-plugin:9.8.15` -\> `com.guardsquare:dexguard-gradle-plugin:9.12.2`
- `com.guardsquare:dexguard-runtime:9.8.15` -\> `com.guardsquare:dexguard-runtime:9.12.2`
- `com.statsig:android-sdk:4.39.2` -\> `com.statsig:android-sdk:4.42.2`

### Removed dependencies   [Skip link to Removed dependencies](https://developer.incode.com/docs/changelog\#removed-dependencies-1)

- `androidx.compose.ui:ui-tooling-preview`

## Version 5.39.0; `core-light` 3.0.3; `extensions` 1.2.0; `nfc` 1.4.3 - 2025-July-30   [Skip link to Version 5.39.0; ,[object Object], 3.0.3; ,[object Object], 1.2.0; ,[object Object], 1.4.3 - 2025-July-30](https://developer.incode.com/docs/changelog\#version-5390-core-light-303-extensions-120-nfc-143---2025-july-30)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-11)

- Security improvements.
- UI Improvements in `IdScan` v2.
- UI Improvements in `Selfie` v2.
- Improved error description for analytics events logged in case of HTTP exceptions.
- Added `IncodeWelcome.removeAllFaces()` API method for removing all `FaceInfo` entries from the local storage.
- Added new `FaceInfo` APIs with support for asynchronous callbacks via the optional `FaceEventListener` parameter:

- `IncodeWelcome.setFaces(List<FaceInfo>, FaceEventListener)`
  - `IncodeWelcome.addFace(FaceInfo, FaceEventListener)`
  - `IncodeWelcome.removeFace(String, FaceEventListener)`

### Added (Capture-Only mode)   [Skip link to Added (Capture-Only mode)](https://developer.incode.com/docs/changelog\#added-capture-only-mode-1)

- Added `metadata` field in `IdScanResult` and `SelfieScanResult` classes. See the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details on how this field affects Incode API calls later on.

### Removals   [Skip link to Removals](https://developer.incode.com/docs/changelog\#removals)

- Removed storage of a `customerUUID` from the SDK. This value should be managed by the client application if needed. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for further details.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-13)

- Fixed an issue where the face capture circle briefly appeared before the ID Scan step in the `VideoSelfie` module.
- Fixed incorrect Portuguese translation on the Review Photo screen in the `IdScan` module.
- Worked around an issue where the SDK would fail to initialize in projects that include Sentry 8 or higher as a dependency. See the [Sentry Compatibility Issues section](https://developer.incode.com/docs/setup-android#sentry-compatibility-issues) of the Setup Guide for more info.
- Fixed an issue in the trimming logic for longer Deepsight Video Liveness videos where the resulting video would be significantly shorter than 10 seconds.
- Fixed an issue in the `NfcScan` module where the PACE protocol authentication could fail due to provider misconfiguration.
- Fixed an issue in the `NfcScan` module where after a successful scan, the user was unexpectedly sent back to the beginning of the NFC scan flow.
- Fixed an issue in `SelfieScan` module where the UI would get stuck when attempting to upload a selfie without an internet connection.
- Fixed an issue when using [End-To-End-Encryption](https://developer.incode.com/docs/user-guide-e2ee) where requests would only be encrypted if the host portion of the `WELCOME_API_URL` provided to `IncodeWelcome.Builder()` contained the text, "api", in it
- Fixed an issue where `IncodeWelcome.Builder().setCrashReportingEnabled(true)` would only be respected if the integrating app happened to invoke `SentryAndroid.init()` in its own implementation or one of its other dependencies. See the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details on how this can affect existing Sentry integrations
- Fixed "Method removeObserver must be called on the main thread" crash.
- Fixed an issue in the `IdScan` V2 module where the Incode badge was incorrectly displayed after closing the Help screen.
- Fixed an issue in the `IdScan` V2 module where the camera preview would not be displayed due to the camera permission not being handled correctly.
- Fixed an issue in the `IdScan` V2 module where `IdScan.Builder.setShowTutorials(false)` was not respected, causing the tutorial to be shown regardless of the setting.
- Fixed an issue that may occur when calling `IncodeWelcome.Builder().build()` after system restarts the app. Reported exception message starts with: lateinit property has not been initialized.

### Fixed (STANDARD and DELAYED modes only)   [Skip link to Fixed (STANDARD and DELAYED modes only)](https://developer.incode.com/docs/changelog\#fixed-standard-and-delayed-modes-only)

- Fixed an issue where uploading faces captured in the `SelfieScan` module would include an empty `recordingId` parameter in the API call if Deepsight Video Liveness was not used.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-1)

- Deprecated `FaceInfo` API methods, please migrate to the new APIs with callback support. See the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.

- `IncodeWelcome.setFaces(List<FaceInfo>)`
  - `IncodeWelcome.addFace(FaceInfo)`
  - `IncodeWelcome.removeFace(String)`

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-4)

- `io.sentry:sentry-android:7.22.6`

### Removed dependencies   [Skip link to Removed dependencies](https://developer.incode.com/docs/changelog\#removed-dependencies-2)

- `io.sentry:sentry:7.19.0`

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-7)

- `com.airbnb.android:paris:2.0.0` -\> `com.airbnb.android:paris:2.0.2`
- `dev.b3nedikt.restring:restring:5.2.1` -\> `dev.b3nedikt.restring:restring:5.2.2`
- `dev.b3nedikt.reword:reword:4.0.2` -\> `dev.b3nedikt.reword:reword:4.0.4`
- `dev.b3nedikt.viewpump:viewpump:4.0.10` -\> `dev.b3nedikt.viewpump:viewpump:4.0.14`

## Version 5.38.0; `core-light` 3.0.2; `nfc` 1.4.2 - 2025-June-24   [Skip link to Version 5.38.0; ,[object Object], 3.0.2; ,[object Object], 1.4.2 - 2025-June-24](https://developer.incode.com/docs/changelog\#version-5380-core-light-302-nfc-142---2025-june-24)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-12)

- Added support for 16KB page size devices. More info [here](https://developer.android.com/guide/practices/page-sizes).
- Improved camera preview quality for the `IdScan` V2 and `SelfieScan` modules.
- Improved quality of "Video Liveness" videos captured in the `SelfieScan` module.
- Added UI changes in the `QES` module:

- Simplified the Confirm Your Signature screen to use two checkboxes instead of three.
  - Added a Download Document section to the post-signing screen.
- Enabled the `SelfieScan` module to appear over the lock screen, supporting use cases like unlocking the device via [Face Login](https://developer.incode.com/docs/user-guide-face-login).
- Added `setShowSelfieStepFirst()` method to `VideoSelfie.Builder`. This method allows the integrator to show the Selfie step before the ID step in the `VideoSelfie` module. Default value is `false`, which means that the ID step is shown first.
- The NFC scanning bottom sheet is now displayed on a transparent activity, allowing the integrator's screen to remain visible in the background during the scan. See the [Integration Example](https://developer.incode.com/docs/user-guide-nfc-scan#displaying-the-nfc-bottom-sheet-on-a-transparent-background) for usage. .
- Added `onApproveCompleted` callback invocation when Workflow is complete, if the `Automatically create an identity on successful workflow execution` option is enabled on the Workflow.
- Added support for light and dark themes in the `IdScan` V2 module.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-11)

- Added support for the "Single frame" and "Video Liveness" "Deepsight Liveness" Face Capture configuration options on the Incode Dashboard to the `startOnboarding()` and `startOnboardingSection()` APIs. To use these options, create a Flow on the Incode Dashboard with the desired Face Capture configuration and provide the ID of this flow when creating the `SessionConfig` via `SessionConfig.Builder().setConfigurationId("[FLOW_ID_FROM_INCODE_DASHBOARD]")`. Similarly, providing an `externalToken` from a session configured to use the aforementioned Face Capture configuration will be honored.
- Added the `setReturnResultImmediately()` API to the `NfcScan` module to return the result immediately after the NFC scan is completed, skipping the result UI screen. When using this API, it is the integrator's responsibility to handle the result and any necessary retries of the NFC scan.
- Added an option to prefill the phone number in the `Phone` module based on the user's previously stored identity.
- Added `setLanguage()` method to the `SessionConfig.Builder`, enabling configuration of the `VoiceConsent` language in the `VideoSelfie` module.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-14)

- Fixed a potential issue where on-device cameras may incorrectly report their capabilities.
- Fixed a crash when opening the camera. This crash was found on the emulator, but it could potentially affect some real-world devices with specific camera configurations.
- Fixed a crash that could occur when the `SelfieScan` module starts the camera. The NPE was caused by accessing a camera property before it was fully initialized.
- Fixed a crash in the `GlobalWatchlist` module caused by view initialization on a non-UI thread during module start.
- Fixed a crash during SDK initialization caused by usage of an internal method from the `okhttp3.internal` package. This crash could have affected any integrations using OkHttp 4.9.3 or later. The method has been replaced with an equivalent Kotlin-native implementation.
- Fixed a `NullPointerException` that happens when NFC document does not contain a photo.
- Fixed a crash when starting the `DocumentScan` module without the tutorial or document provider options screens if the `DocumentType` to be scanned could not be determined.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-10)

- Fixed an issue where the `Government Validation` module failed to function correctly when end-to-end encryption (E2EE) is enabled.
- Disabled downloading of session report PDFs in the `Result` module when E2EE is enabled, due to lack of server-side support for this feature.

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode-2)

- Fixed an issue that caused a frozen screen on the last step of the `VideoSelfie` module.

### Fixed (DELAYED mode only)   [Skip link to Fixed (DELAYED mode only)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode-only)

- Fixed an issue with `onCombinedConsentCompleted()` callback not triggering from the `CombinedConsents` module in DELAYED mode.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-2)

- Using the `DocumentScan(DocumentType)` constructor to create a `DocumentScan` module is now deprecated. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for further details.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-8)

- `com.airbnb.android:lottie-compose:6.3.0` -\> `com.airbnb.android:lottie-compose:6.6.3`
- `com.airbnb.android:lottie:6.4.0` -\> `com.airbnb.android:lottie:6.6.3`

## Version 5.37.0; `core-light` 3.0.1; `model-face-recognition` 3.5.0; `model-id-face-detection` 3.5.0 - 2025-May-21   [Skip link to Version 5.37.0; ,[object Object], 3.0.1; ,[object Object], 3.5.0; ,[object Object], 3.5.0 - 2025-May-21](https://developer.incode.com/docs/changelog\#version-5370-core-light-301-model-face-recognition-350-model-id-face-detection-350---2025-may-21)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-13)

- Added the `setStoreLocalAuthenticationEnabled()` API to the `SelfieScan` module to enable storing face login attempts in the local database. To sync data from the local database to the server, make sure to call the new `IncodeWelcome.syncFaceLoginAttempts()` API. This configuration applies only in `FaceAuthMode.Local` mode.
- Added ability to render PDF file preview, when the user selects a PDF file in the `DocumentScan` module.
- Added dedicated error screen in `IdScan` V2 for cases when a user scans an unaccepted document.
- Added support for streaming login attempts when using the `startFaceLogin()` API.
- Added documentation for customizing the loading animation shown on the Transition screen between modules.
- Re-enabled Assisted Onboarding functionality for the Face Capture/`SelfieScan` module that was temporarily disabled in [5.36.0](https://developer.incode.com/docs/changelog#/version-5360-core-light-300---2025-apr-11). Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for further details.
- Added `setClientExperimentId()` method to the `IncodeWelcome.Builder` to allow enabling new features when using the no `apiKey` approach or Capture Only mode.
- Added `setE2eEncryptionAlgorithm()` method to the `SessionConfig.Builder`, allowing configuration between `SHA1` (default) and `SHA256` hashing to match environment setup.
- Improved performance in determining the device's `motionStatus` for `IdScan` and `SelfieScan` modules, reducing the number of `UNKNOWN` results. See the [optional permissions section](https://developer.incode.com/docs/setup-android#/optional-permissions) of the Setup Guide for more info.
- Removed the server-side fallback for manual capture in Face Login. Manual capture now rely solely on on-device Face Recognition and Liveness checks.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-12)

- Added a new `Select` input field type to the `DynamicForms` module, allowing users to choose an answer from a dropdown list.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-15)

- Fixed an `IllegalStateException` in the `VideoSelfie` module when a video was uploaded while the app was in the background.
- Fixed `autoCaptureTimeout` setting not being respected in Face Login.
- Fixed a `NullPointerException` while uploading video recordings, reported by a few clients.
- Improved camera permission screens used in the `IdScan` V2 module to resolve confusion around how many times the permission needs to be granted.
- Resolved an issue where users were incorrectly prompted to "Move Away" or "Move Closer" despite being properly positioned, resulting in more reliable auto capture behavior.
- Skip sending analytics events to the server from the `SelfieScan` module while in Face Login mode. Sending events here was always failing (because they are missing an auth token) and this was causing the server to start throttling the requests, causing downtime for clients.
- Updated screens in the `IDScan` V2 module to consistently use the light theme for improved visual alignment.
- Fixed an edge-case crash that could occur when switching SDK modes before Statsig was fully initialized.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-3)

- The `qr-face-login` library has been removed. The corresponding enum value `SelfieScan.Mode.QR_FACE_LOGIN` has also been removed.

## Version 5.36.0; `core-light` 3.0.0 - 2025-Apr-11   [Skip link to Version 5.36.0; ,[object Object], 3.0.0 - 2025-Apr-11](https://developer.incode.com/docs/changelog\#version-5360-core-light-300---2025-apr-11)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-14)

- Security improvements.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-13)

- Added support for the "Single frame" and "Video Liveness" "Deepsight Liveness" Face Capture configuration options on the Incode Dashboard. "Single frame" is the normal operating mode used in the `SelfieScan` module. The "Video Liveness" option enables a video recording to be taken of the camera feed from the `SelfieScan` session, which is used for Deepsight. "Video Liveness" is available only with the `startFlow()` or `startWorkflow()`APIs. "Video Liveness" takes priority over `SelfieScan.streamFramesEnabled` and `FlowConfig.isRecordSession`, ignoring those settings if enabled.
- Added metadata about videos being uploaded for applicable features in `IdScan`, `SelfieScan`, and `VideoSelfie` to debug logs.

### Added (Capture-Only mode only)   [Skip link to Added (Capture-Only mode only)](https://developer.incode.com/docs/changelog\#added-capture-only-mode-only)

- Added `setVideoLivenessRecordingEnabled()` method to `SelfieScan.Builder`. This method is equivalent to the "Video Liveness" "Deepsight Liveness" Face Capture configuration option on the Incode Dashboard, but provides a path to the video file generated. The path to this video file is returned in `SelfieScanResult.videoFilePath`. See the [JavaDoc](https://developer.incode.com/docs/javadoc) for more details. Default value is `false`.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-4)

- The `camera` library has been removed and its functionality is now a part of the `core-light` library. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Assisted Onboarding functionality for the Face Capture/`SelfieScan` module has been disabled. This feature will be re-enabled in a future release. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for further details.

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-5)

- `androidx.camera:camera-video:1.4.2`

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-9)

- `androidx.camera:camera-camera2:1.4.1` -\> `androidx.camera:camera-camera2:1.4.2`
- `androidx.camera:camera-extensions:1.4.1` -\> `androidx.camera:camera-extensions:1.4.2`
- `androidx.camera:camera-lifecycle:1.4.1` -\> `androidx.camera:camera-lifecycle:1.4.2`
- `androidx.camera:camera-view:1.4.1` -\> `androidx.camera:camera-view:1.4.2`

## Version 5.35.0; `core-light` 2.7.0; `camera` 1.1.1; `nfc` 1.4.1; `qr-face-login` 1.2.6 - 2025-Apr-04   [Skip link to Version 5.35.0; ,[object Object], 2.7.0; ,[object Object], 1.1.1; ,[object Object], 1.4.1; ,[object Object], 1.2.6 - 2025-Apr-04](https://developer.incode.com/docs/changelog\#version-5350-core-light-270-camera-111-nfc-141-qr-face-login-126---2025-apr-04)

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-5)

- Android 5 support has been removed since Google declared end of support for this version. Incode SDK's `minSdk` API level has been updated to `23`.
- `SelfieScanResult.isFaceMatched` has been deprecated as it is not used anymore. Please use `FaceLoginResult.success` field instead.

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details):   [Skip link to API Changes (refer to ,[object Object], for details):](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-3)

- `ScreenRecordModule` has been renamed to `RecordModule`.
- `DeviceFingerprintKt` has been removed and its functionality moved into `DeviceFingerprint`.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-15)

- Added new Selfie Image Quality Check model. New model offers improved image quality checks for the `SelfieScan` module.
- Added UI improvements to the `SelfieScan` module. Currently available in opt-in mode, controlled via a feature flag which also controls the previously introduced new `IdScan` experience. To opt in, please contact the Customer Support team:

- Added new tutorial screen for the `SelfieScan` module.
  - Added the `Verified by Incode` logo at the bottom of the screen.
- Improved error handling for lower-end devices that cannot use all the features of the `camera` module in parallel.
- Added Javadoc description for all properties of `BaseResult`.
- Security improvements.
- Added `setShowTutorials()` API to the `NfcScan` module to enable ID/Passport scanning tutorials. Enabled by default.
- Added `setNfcMaxRetries()` API to the `NfcScan` module to set the maximum number of NFC scan attempts for reading a passport or ID. Default is 5 retries.
- When Age Assurance is enabled and to protect your privacy, when scanning the back side of ID, we blur the image. Note: Supported only on devices running Android 12 (API 31) or higher.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-16)

- Fixed an issue where printing the result of `SelfieScanResult.toString()` could cause future logcat logs to be dropped.
- Fixed a `NullPointerException` that could occasionally occur in the `VideoSelfie` module on lower-end devices due to image processing starting before the UI is fully initialized.
- Updated UI on the `Edit OCR Data` screen in the `NfcScan` module.
- Fixed `JsonDecodingException` that can occur in the theme JSON parser when an unknown key is encountered. Unknown keys will be ignored.
- When a spoof attempt is detected in the `SelfieScan` module, the value of `SelfieScanResult.status` will now be `STATUS_SPOOF_DETECTED` instead of `STATUS_OK`.
- Fixed an issue with Back navigation when the integrator app has `android:enableOnBackInvokedCallback="true"` in its Manifest file.
- Updated the Statsig dependency group ID and made Statsig initialization defensive to prevent runtime errors when the dependency is excluded from the Incode SDK in the host app.
- Letters in "Document Number" input are now converted to uppercase for consistency. This applies to `IdInfo` and `NfcScan` modules.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-14)

- Added `matchType` parameter to the non-UI `IncodeWelcome.faceMatch()` API.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-11)

- Fixed an issue where users could get stuck between modules if they switched away from the app during the `Selfie` upload.
- Updated the feedback text in the `SelfieScan` module when a selfie fails to upload.
- Fixed an issue in the `IdScan` module where the `idDetectionTimeout` configured on the Dashboard was not being honored when using `startWorkflow()` and `startOnboarding()` APIs.
- Fixed an issue where the `IdScan` module starts in manual capture mode for some clients with specific backend configurations.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-10)

- `androidx.camera:camera-camera2:1.3.3` -\> `androidx.camera:camera-camera2:1.4.1`
- `androidx.camera:camera-extensions:1.3.3` -\> `androidx.camera:camera-extensions:1.4.1`
- `androidx.camera:camera-lifecycle:1.3.3` -\> `androidx.camera:camera-lifecycle:1.4.1`
- `androidx.camera:camera-view:1.3.3` -\> `androidx.camera:camera-view:1.4.1`
- `com.github.statsig-io:android-sdk:4.30.0` -\> `com.statsig:android-sdk:4.39.2`

## Version 5.34.1 - 2025-Mar-20   [Skip link to Version 5.34.1 - 2025-Mar-20](https://developer.incode.com/docs/changelog\#version-5341---2025-mar-20)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-17)

- Fixed an issue in the `IdScan` V2 module where the user could not exit the flow when the system camera permission was denied or when the "Quit process" button was pressed.

## Version 5.34.0; `core-light` 2.6.7; `nfc` 1.4.0; `qr-face-login` 1.2.5 - 2025-Mar-03   [Skip link to Version 5.34.0; ,[object Object], 2.6.7; ,[object Object], 1.4.0; ,[object Object], 1.2.5 - 2025-Mar-03](https://developer.incode.com/docs/changelog\#version-5340-core-light-267-nfc-140-qr-face-login-125---2025-mar-03)

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details):   [Skip link to API Changes (refer to ,[object Object], for details):](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-4)

- Converted `IncodeWelcome.deleteUserLocalData()` from an instance method to a static method.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-16)

- Updated `core-light` module to v2.6.7: incorporating libRecogKitAndroid.so v3.3.0 and ID capture model v3.3.0. New model offers improved ID detection based on text readability.
- The `userCancelled` analytics event now includes the module name, making it clearer at which point in the flow the user exited.
- Updated the analytics payload to include a separate field for the first “good” frame. This refactoring is internal and does not affect client integrations.
- Improved capture experience in the `SelfieScan` module:

- The size of the selfie camera circle now dynamically adjusts based on the available screen space.
  - Added a dark overlay around the silhouette to help users position their face correctly after repeated positioning issues during scanning.
- Added `CameraPermissionDeniedException` for permission denied events in the `IdScan` V2 module, including exits via back or "Quit process" buttons on the permission screen.
- Added `deviceStats` field to the `IdScanResult` and `SelfieScanResult` objects to provide additional security based on the `motionStatus` of the device.
- Implemented PACE protocol in the `NfcScan` module to ensure compatibility with newer biometric documents. Previously, only the BAC protocol was supported. Since 2018, BAC has not been mandatory, so many new documents now use PACE exclusively.
- Added support for Age Assurance UX in `IdScan` and `SelfieScan` modules with privacy-focused tutorials and upload screens. Disabled by default. Use `FlowConfig.Builder().setAgeAssuranceUXEnabled(true)` to enable.

- The Face Match animation is replaced with a loading spinner when the Age Assurance UX is enabled.
- `IdScan V2` Customization JSON updated, please visit [documentation](https://developer.incode.com/docs/customization-2) for more info.
- Added `QES` (Qualified Electronic Signature) module that enables users to sign legal documents.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-6)

- Deprecated `IDScan` flags that are no longer supported in the new UI.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-18)

- Fixed an issue where an occasional `ConcurrentModificationException` would occur in `IdScan` and `SelfieScan` modules.
- Fixed a crash in the `DocumentScan` module caused by the absence of a compatible app for selecting documents or images.
- Fixed an issue in the `IdScan` module where the capture attempts counter would reset when the user toggled between light and dark mode in the device settings.
- Fixed an issue in the `IdScan` module during manual capture mode where multiple taps on Capture button could cause unexpected behavior.
- Fixed the ES and PT translations of the `IdScan` v2 capture instructions.
- Fixed issues with camera hanging in the `IdScan` module when the tutorials are disabled.
- Fixed an issue where failed Face Login attempts did not include a `transactionId`.
- Fixed `NullPointerException` in the `VideoSelfie` module due to `getBinding()` returning null. The cause of this issue is still unknown.
- Fixed an issue where using the `SelfieScan` module outside of `ENROLL` mode would try to continue running even the Camera could not be accessed. Now the module will fire an `onError()` call as is the case with `ENROLL` mode.
- Fixed an issue in the `IdScan` and `SelfieScan` modules where `autoCaptureTimeout` and `captureAttempts` were not being honored. These parameters are now correctly applied whether set via the `setAutoCaptureTimeout()` and `setCaptureAttempts()` methods, or configured in the Dashboard and used when resuming sessions with an `externalToken`. The locally set parameters always take priority over the Dashboard settings.
- Fixed an issue in the `DocumentScan` module where a generic document would always be shown instead of the concrete one selected (medical, payment proof, etc).

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-12)

- Fixed an issue where the `Snackbar` retry button did not restart the upload process after an internet reconnection.
- Made analytics events more uniform across different platforms.
- Fixed an "HTTP 400" error that would occur when `externalToken` was used in combination with `SessionConfig#setDownloadImagesEnabled(false)`.

## Version 5.33.2 - 2025-Feb-18   [Skip link to Version 5.33.2 - 2025-Feb-18](https://developer.incode.com/docs/changelog\#version-5332---2025-feb-18)

### Fixed (DELAYED mode only)   [Skip link to Fixed (DELAYED mode only)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode-only-1)

- Fixed an issue with the `IncodeWelcome.syncDelayedOnboardings()` API where rapid consecutive calls created multiple workers, causing a `ParallelAccessForbiddenException` on the server side; now only one execution per sync is allowed.

## Version 5.33.0; `core-light` 2.6.6; `camera` 1.1.0; `qr-face-login` 1.2.4 - 2025-Jan-14   [Skip link to Version 5.33.0; ,[object Object], 2.6.6; ,[object Object], 1.1.0; ,[object Object], 1.2.4 - 2025-Jan-14](https://developer.incode.com/docs/changelog\#version-5330-core-light-266-camera-110-qr-face-login-124---2025-jan-14)

### Removals   [Skip link to Removals](https://developer.incode.com/docs/changelog\#removals-1)

- Removed `SelfieScan.FaceAuthMode.HYBRID` and `SelfieScan.FaceAuthMode.FR_ONLY`. These modes previously used the on-device "shallow" model to generate face templates for Face Recognition, with server-side comparison. The server no longer supports the "shallow" model, so these modes have been removed.
- Removed the `com.incode.sdk:kiosk-login` library. This library used face login in `SelfieScan.FaceAuthMode.FR_ONLY` mode, which is no longer supported.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-17)

- Added `setHeadCoverCheckEnabled()` method to `SelfieScan.Builder` and `VideoSelfie.Builder`. This method enables serverside detection of head coverings, such as hats. An error is shown in case a head covering is detected. Default value is off.
- Added `IncodeWelcome.getDeviceFingerprint()` method for use in Capture Only mode. This method returns device information, such as model, operating system version, and available memory.
- Made the Document Chooser screen optional with `IdScan.Builder.setShowIdTypeChooser()`
- Added real-time document type recognition in the `IdScan` module. This recognition dynamically updates the document template UI within the ID scanning screen.
- Internal crash reporting improvements.
- Added real-time feedback message to the `IdScan` v2 module to notify the user when the wrong side of the ID is shown.
- Added `IdScan.Builder.setAutoCaptureNoIdTimeout()` for the `IdScan` v2 experience. This sets the fallback timeout for auto-capture when no ID is detected during the scan session, after which the manual capture button appears. The default value is 60s.
- Added new permission - `android.permission.FOREGROUND_SERVICE_MICROPHONE` \- that is required for the `VideoSelfie` module to work correctly on Android 14+ for apps with `targetSdk` 34.
- Security improvements in `IdScan` v2.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-19)

- Fixed an issue in `SelfieScanResult` where the encrypted fields `selfieEncryptedBase64` and `fullFrameSelfieEncryptedBase64` were not being populated with the correct values.
- Corrected the apostrophe character in certain strings to improve accessibility and ensure accurate pronunciation by TalkBack.
- Fixed an issue on the `VideoSelfie` module's intro screen where the wrong letter was highlighted in the Portuguese (PT) translation.
- Fixed an issue in the `VideoSelfie` module where the resulting file could contain only audio and no video. This issue occurred when the Video Selfie flow failed, such as during voice consent rejection.
- Fixed a UI glitch in the `IdScan` module where ID and Passport overlays were not displaying correctly in horizontal orientation.
- Fixed an issue with the visibility and positioning of the custom text view in the `VideoSelfie` module.
- Fixed a missing `screen name` property in the analytics event for the DynamicForms module.
- Fixed a crash triggered by pressing the `Back` button on the introductory permissions screen in the `VideoSelfie` module.
- Fixed a manifest issue that caused a crash when the SDK switched between screens in apps without an explicitly set theme in the application tag.
- Fixed a compatibility issue with apps implementing Sentry version 7.16.0 or higher getting a `NoSuchMethodError` from the Incode SDK upon initialization. See [Sentry's Changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#breaking-changes) for more details.
- Fixed a crash in `VideoSelfie` module when `setDisableAudio(true)` option is used on Android 14.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-15)

- Introduced a feedback screen for the `SelfieScan` module to provide clear instructions for users experiencing difficulties during the selfie scanning process, such as failing the liveness check.
- Added an instructional animation to the `SelfieScan` feedback screen to guide users when failures are caused by incorrect face positioning.
- Added test mode support for non-UI `IncodeWelcome#processId()` API. In test mode, this API returns an `IdProcessResult` containing dummy OCR data.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-13)

- Fixed an issue in the `IdScan` v2 experience where the number of retries did not match the value set on the Dashboard, being off by one.
- Fixed an issue in the `IdScan` and `DocumentScan` modules where infinite retries were allowed under low light conditions.
- Fixed an issue in the `DocumentScan` module that caused an unnecessary document upload API call after all retry attempts were exhausted.
- Fixed an issue in the `IdScan` module that could cause the application to become unresponsive on the "Processing" screen when scanning passports.
- Fixed a `NullPointerException` in the `DocumentScan` module that occurred when selecting a photo from the gallery. Users can now successfully pick photos for `Proof of Address` and other supported documents.

### Fixed (DELAYED mode only)   [Skip link to Fixed (DELAYED mode only)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode-only-2)

- Fixed an issue that occurred occasionally on specific devices, causing captured images to be missing from the `IdScan` module.

### Added dependencies   [Skip link to Added dependencies](https://developer.incode.com/docs/changelog\#added-dependencies-6)

- `org.jetbrains.kotlin:kotlin-serialization:1.5.0`
- `org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0`

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-11)

- `com.guardsquare:dexguard-gradle-plugin:9.5.2` -\> `com.guardsquare:dexguard-gradle-plugin:9.8.15`
- `com.guardsquare:dexguard-runtime:9.5.2` -\> `com.guardsquare:dexguard-runtime:9.8.15`
- `io.sentry.jvm.gradle:4.6.0` -\> `io.sentry.jvm.gradle:4.14.1`
- `io.sentry:sentry:7.9.0` -\> `io.sentry:sentry:7.19.0`
- `com.github.HBiSoft:HBRecorder:3.0.6` -\> `com.github.HBiSoft:HBRecorder:3.0.8`

## Version 5.32.2 - 2025-Mar-24   [Skip link to Version 5.32.2 - 2025-Mar-24](https://developer.incode.com/docs/changelog\#version-5322---2025-mar-24)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-20)

- Fixed an issue in the `IdScan` and `SelfieScan` modules where `autoCaptureTimeout` and `captureAttempts` were not being honored. These parameters are now correctly applied whether set via the `setAutoCaptureTimeout()` and `setCaptureAttempts()` methods, or configured in the Dashboard and used when resuming sessions with an `externalToken`. The locally set parameters always take priority over the Dashboard settings.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-14)

- Fixed an issue in the `IdScan` module where the `idDetectionTimeout` configured on the Dashboard was not being honored when using `startWorkflow()` and `startOnboarding()` APIs.
- Fixed an issue where the `IdScan` module starts in manual capture mode for some clients with specific backend configurations.

## Version 5.32.1 - 2024-Dec-20   [Skip link to Version 5.32.1 - 2024-Dec-20](https://developer.incode.com/docs/changelog\#version-5321---2024-dec-20)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-21)

- Fixed a manifest issue that caused a crash when the SDK switched between screens in apps without an explicitly set theme in the application tag.

## Version 5.32.0 - 2024-Oct-30   [Skip link to Version 5.32.0 - 2024-Oct-30](https://developer.incode.com/docs/changelog\#version-5320---2024-oct-30)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-18)

- Added new module, `DynamicForms`, for presenting various input forms to users.
- Updated privacy policy links for the `UserConsent` module.
- Added previously missing configuration fields for the `VideoSelfie` module, allowing for seamless integration with the Dashboard to enable or disable ID checks.
- Introduced `MissingModelFaceRecognitionDependencyException` to enhance error handling for the `VideoSelfie` module. This exception is thrown if "Voice Consent Face Recognition" is enabled but the required dependency `com.incode.sdk:model-face-recognition` is missing.
- Improved result of the `startFaceLogin` API. The `SelfieScanResult` object returned by the `startFaceLogin` API now includes an improvement where the `customerUUID` field within the `FaceLoginResult` object is populated with a value even during 1:N local face recognition.
- Added the ability to dismiss the Permission intro screen in the `VideoSelfie` module by tapping anywhere.
- Removed redundant "Cancel" button from the `UserConsent` module's UI.
- Fixed a crash in the new `ID Scan` when an optional `video-streaming` dependency is missing.
- Added support for downloading our SDK via GitHub Packages. Please contact Customer Success to get access to this feature.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-22)

- Fixed OutOfMemoryError in `VideoSelfie` module by replacing `mp4parser` library with our own implementation.
- Improved end-to-end encryption (E2EE).
- Fixed an issue where the `setShowCloseButton()` method was ignored in the new `ID Scan` module, causing the close button to always be shown.
- Fixed translations that were incorrectly mixed between Spanish and Portuguese in the new `ID Scan` document selection screen.
- Updated strings in `USER_GUIDE_CUSTOMIZATION.md` and `USER_GUIDE_CAPTURE_SDK.md` docs.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-15)

- Fixed `startFlow()` API to no longer require `configurationId` when `externalToken` is provided.

### Removed dependencies   [Skip link to Removed dependencies](https://developer.incode.com/docs/changelog\#removed-dependencies-3)

- `org.mp4parser:isoparser:1.9.41`
- `org.mp4parser:muxer:1.9.41`
- `com.github.takahirom:PreLollipopTransition:1.3.3`
- `com.makeramen:roundedimageview:2.3.0`

## Version 5.31.1 - 2024-Oct-14   [Skip link to Version 5.31.1 - 2024-Oct-14](https://developer.incode.com/docs/changelog\#version-5311---2024-oct-14)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-23)

- Fixed an issue where leaving the app immediately after an ID or Selfie image is captured could cause the `IdScan` or `SelfieScan` module to freeze or crash upon returning to the app. Error message: `RuntimeException: Camera is being used after Camera.release() was called`.
- Fixed a potential `NullPointerException` that could occur when initializing the camera for any camera-dependent module. Error message: `NullPointerException: Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference`.

## Version 5.31.0; `core-light` 2.6.5; `camera` 1.0.1; `model-face-recognition` 3.2.0; `model-liveness-detection` 3.2.0 - 2024-Sep-30   [Skip link to Version 5.31.0; ,[object Object], 2.6.5; ,[object Object], 1.0.1; ,[object Object], 3.2.0; ,[object Object], 3.2.0 - 2024-Sep-30](https://developer.incode.com/docs/changelog\#version-5310-core-light-265-camera-101-model-face-recognition-320-model-liveness-detection-320---2024-sep-30)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-19)

- Added new `CombinedConsents` module, allowing users to review and accept consents preconfigured on the Dashboard.
- Added specific error handling in the `IdScan` module for cases when the user captures the wrong side of the ID instead of the previous generic error message.
- Added more analytics data to the existing analytics event in the `IdScan` module, which provides statistics about each captured frame.
- Introduced `InsufficientDiskSpaceException`, which is returned through the `onError` callback if there's insufficient disk space to perform a critical function. This error can occur after calling one of the following APIs: `startOnboarding`, `startOnboardingSection`, `startFlow`, or `startWorkflow`, if the flow contains the `IdScan` and/or `SelfieScan` module. Adequate disk space is required to perform local processing.
- Removed the `IncodeWelcomeInitProvider` to allow for lazy initialization of Incode’s SDK.
- Updated `core-light` module to v2.6.5: incorporating libRecogKitAndroid.so v3.2.0 and ID capture model v3.2.0.
- Updated `model-face-recognition` to v3.2.0: minor refactoring.
- Updated `model-liveness-detection` to v3.2.0: minor refactoring.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-24)

- Updated the feedback text in the `SelfieScan` module to clarify the instructions when the face is not aligned with the UI face frame. Affected label name is, `onboard_sdk_feedback_align_face`.
- Fixed an issue that prevented the 'Move Away' feedback message from displaying in `SelfieScan` module.
- Fixed an issue in `UserConsent` module when parsing markdown links with identical display text which caused the links to not be formatted correctly.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-16)

- Added exception stack trace to the `Error` event, that is visible on the Dashboard.
- Fixed Workflows not working correctly for the new `ID Scan`.
- Added screen transition progress indicator that will be visible when there is a long-running operation while switching between the modules.

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode-3)

- Fixed `AbstractMethodError` when the `startOnboardingSection` API is used.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-7)

- The SDK will stop supporting Android API levels 21 and 22 in one of the upcoming releases due to Google's end of support for Android 5.x. Please ensure your applications target a minimum of API level 23 or higher to continue receiving updates and support.
- Starting with version 5.32.0, we will switch to GitHub Packages for publishing. Please update your configurations to use GitHub Packages to continue receiving updates and support. Migration documentation will be provided in the next version, but the change will be almost seamless for the integrators.

## Version 5.30.0; `camera` 1.0.0 - 2024-Aug-27   [Skip link to Version 5.30.0; ,[object Object], 1.0.0 - 2024-Aug-27](https://developer.incode.com/docs/changelog\#version-5300-camera-100---2024-aug-27)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-20)

- Released new incode `camera` library which is a mandatory dependency for using the new ID capture experience: `com.incode.sdk:camera:1.0.0`
- Added a new API to the `VideoSelfie` module, `setVoiceConsentFaceRecognitionEnabled()`, to enable face recognition during the `VoiceConsent` step. Disabled by default. Requires `model-face-recognition` dependency.
- Updated 3rd party library used for the screen recording in the `VideoSelfie` module.
- Optimized resolution in the `Questions` and `Done` steps of the `VideoSelfie` module to enhance overall user experience.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-25)

- Fixed a minor issue with `Exit` dialog appearing when app goes to background in `Video Selfie` module, before the Video Recording permission is granted.
- Fixed an issue where the date picker in the "Edit OCR" screen of the `IdScan` module shows the wrong date when the date is changed and the date picker is reopened.
- Implemented a change for Android 14+ that forces users to select "Entire Screen" for screen recording to prevent issues with black screen recordings.
- Ask for screen recording permission only the first time and reuse the permission for next recording in the same session.
- Added missing documentation for the `FlowConfig.Builder().setFlowTag()` API.
- Fixed an issue in the `VideoSelfie` module where text on the `VoiceConsent` and `Questions` buttons didn't fit properly in Spanish (ES) and Portuguese (PT).
- Downgraded `RetrySnackbar` View to non-compose version to be able to support clients who are unable to upgrade to Kotlin versions above 1.7.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-17)

- Added new ID capture experience designed to reduce drop-offs, increase completion rates, and enhance the quality of captured photos. This feature is currently available in opt-in mode, controlled via a feature flag. To opt in, please contact the Customer Support team.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-16)

- Fixed error handling in native library initialization. This should provide more clarity in crash reports.
- Replaced the liveness-stat expired token with a new one.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-12)

- `com.github.HBiSoft:HBRecorder:3.0.3` -\> `com.github.HBiSoft:HBRecorder:3.0.6`

## Version 5.29.0; `kiosk-login` 1.3.5; `nfc` 1.3.5; `qr-face-login` 1.2.3; `core-light` 2.6.4 - 2024-July-19   [Skip link to Version 5.29.0; ,[object Object], 1.3.5; ,[object Object], 1.3.5; ,[object Object], 1.2.3; ,[object Object], 2.6.4 - 2024-July-19](https://developer.incode.com/docs/changelog\#version-5290-kiosk-login-135-nfc-135-qr-face-login-123-core-light-264---2024-july-19)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-21)

- Security improvements.
- Replaced the old Video Selfie UI with the new UI experience. If you had previously customized the Video Selfie and Video Selfie Tutorial screens, please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details on how this change affects previous customizations.
- Added a new API method, `IdInfo.Builder.setIdCategory()`, allowing SDK integrators to choose between using info from the first or second ID.
- Added SDK `Builder` APIs for showing retake screen in the `IdScan` module for auto and manual capture separately:

KotlinJava

```kotlin
setShowRetakeScreenForAutoCapture(showRetakeScreenForAutoCapture: Boolean)
setShowRetakeScreenForManualCapture(showRetakeScreenForManualCapture: Boolean)
```

```java
setShowRetakeScreenForAutoCapture(boolean showRetakeScreenForAutoCapture);
setShowRetakeScreenForManualCapture(boolean showRetakeScreenForManualCapture);
```

- Improved instructions on the Review Photo screen in the `IdScan` module.
- Updated design of the Help screen in the `IdScan` module.
- Removed vertical style of the Help screen in the `IdScan` module.
- Added new individual styles for the scan feedback text on the Selfie and ID scan screens. Please refer to the [SDK Customization How-To Guide](https://developer.incode.com/docs/user-guide-customization) for details.
- Upgraded the "Common Issues" screen in the `IdScan` module to show specific details and instructions for the following issues:

- Glare detected
  - ID too blurry
  - Info not readable
  - ID type not accepted
- Updated the `USER_GUIDE_CUSTOMIZATION.md` with instructions for customizing the Checkboxes.
- Glare values can now be sent to the server during ID capture to improve ID analysis. This feature is configurable through a feature toggle that can be remotely enabled upon client request.
- Removed Firebase dependency from the project.
- Added `IdScan` module version to `moduleOpened` analytics event.
- Upgraded following Compose internal dependencies. Upgrade `compileSdk` to level 34 is required. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide)
  - `androidx.compose.ui:ui:1.4.3` -\> `androidx.compose.ui:ui:1.4.4`
  - `androidx.compose.ui:ui-tooling-preview:1.3.3` -\> `androidx.compose.ui:ui-tooling-preview:1.6.5`
  - `androidx.compose.ui:ui-tooling:1.3.3` -\> `androidx.compose.ui:ui-tooling:1.6.5`

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-26)

- Fixed a glitch with the permissions request screen in the `VideoSelfie` module when resuming the app from the background.
- Fixed a crash when customizations are applied such that the `roundingRadius` for some UI elements becomes 0.
- Fixed incorrect module reported in analytics events for `ProcessId` and `IdScan` modules.
- Fixed color of the X (close) button in Video Selfie's "Questions" and "Voice Consent" steps.
- Fixed potential build issues when client application is using Dexguard.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-18)

- Added the `setMergeSessionRecordings()` method in `SessionConfig` to enable server-side merging of `IdScan` and `SelfieScan` recordings.
- Add an option to enable/disable audio during frame streaming for `IdScan` and `SelfieScan` modules.
- Added support for the `eKYC` module to pre-fill the input fields based on the Flow configuration on the Dashboard.
- Added Workflows support for the no `apiKey` approach.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-17)

- Fixed an issue in `CurpValidation` module that prevented users from retrying after a failed attempt to generate a CURP.
- Fixed `FaceMatch` module showing wrong images (ID and Selfie) when "Selfie vs. NFC Photo" comparison is selected.
- Fixed an issue in the `EKYC` module where the date of birth field would not show when enabled in a Flow configured on the dashboard.
- Fixed an issue where the server configuration for the `IdScan` and `SelfieScan` modules was not being applied for capture retry attempts and capture timeouts.
- Fixed `OnErrorNotImplementedException` when trying to delete video selfie recordings from the file system after the upload.
- Fixed an issue with `onUserCancelled()` callback not triggering from the `EKYC` module.

### Added (DELAYED mode)   [Skip link to Added (DELAYED mode)](https://developer.incode.com/docs/changelog\#added-delayed-mode)

- Added `CommonConfig.Builder.setShowDelayedOnboardingIntroScreen()` to show or hide the introduction screen when SDK is started in Delayed mode. Enabled by default.

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-8)

- `VideoSelfie.Builder.setAssistedOnboardingEnabled()` has been deprecated as it's not used anymore. Calling this will have no effect, except logging a deprecation warning.

- `FlowConfig.Builder().setRecordSession()` has been deprecated as it's replaced by `FlowConfig.Builder().configureScreenRecording()`.

- `onboard_sdk_ScanFeedbackText` has been deprecated and it's not used anymore. Please refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.

## Version 5.28.0 - 2024-June-17   [Skip link to Version 5.28.0 - 2024-June-17](https://developer.incode.com/docs/changelog\#version-5280---2024-june-17)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-22)

- Security improvements.
- Added Statsig library for A/B Testing and Feature Flagging.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-19)

- Added unique constraint in the offline login database to prevent duplicate `FaceInfo` identities.
- Added `toString()` implementation in `EKYCResult` and `IdInfoResult` classes.
- Fetch OpenTok API keys through backend instead of using hardcoded values.
- Added sending frame stats for `IdScan` and `SelfieScan` modules during autocapture.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-18)

- Fixed screen recording video upload error when using sections API.
- Resolved the issue where the `Conference` module could not establish a connection on the Staging environment. The issue was introduced in 5.27.0.
- Removed the `Session start` Sentry event added in 5.26.0 in favor of an alternate way to track sessions.
- Resolved an issue in the `IdInfo` module's date picker dialogs, ensuring they open to the previously selected date rather than defaulting to the current date.
- Fixed `startFlow()` API not reading `maxVideoLength` dashboard setting for the `VideoSelfie` module.
- Fixed an issue introduced in 5.26.0 with `OnboardingListener` event callbacks not triggering. Affects flows started with `startOnboarding`, `startFlow` and `startFlowFromDeeplink` APIs (NOT with `startOnboardingSection` API).

- `onEvent(Event event, HashMap<String, Object> eventData)`
  - `onEvent(InterviewEventResult eventResult)`
- Removed a redundant loading screen that could appear in the `GovernmentValidation` module.
- Fixed bugs in `eKYB` module:

- Returning empty or partial results in `onEKYBChecksCompleted` callback.
  - "Continue" button would obscure input fields when the keyboard is presented.
- Improved Result screen by displaying the full name from the MRZ field of an ID if applicable.
- Fixed a bug which prevented OCR data being updated in `IdInfo` module when using the no `apiKey` approach.
- Fixed `GlobalWatchlist` module not working when using the no `apiKey` approach.

### Fixed (DELAYED mode)   [Skip link to Fixed (DELAYED mode)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode)

- Fixed an issue where `onUserCancelled()` callback didn't trigger.

## Version 5.27.0; `kiosk-login` 1.3.4 - 2024-May-22   [Skip link to Version 5.27.0; ,[object Object], 1.3.4 - 2024-May-22](https://developer.incode.com/docs/changelog\#version-5270-kiosk-login-134---2024-may-22)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-23)

- Added `NfcScan.Builder.setShowInitialDataConfirmationScreen()` to toggle whether the Document OCR data confirmation screen is shown before the first NFC scan, or only if the first NFC scan fails due to incorrect data. The initial screen is shown by default.
- Introduced new API `IdScan.Builder.setAutoCaptureNoIdTimeout()`, which specifies the timeout to switch to Manual Capture mode if no ID is ever detected.

- The existing `IdScan.Builder.setAutoCaptureTimeout()` API specifies how much time can pass after an ID is detected (but the image quality is not good enough yet for an autocapture) before switching to Manual Capture mode.
- Updated Javadoc for `IdScan.Builder.setAutoCaptureTimeout()` to correctly describe the behavior when set to 0 or negative value.
- Security improvements.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-19)

- Fixed an issue in the `Phone Number` and `Email Input` modules where the submit button overlaps OTP fields on smaller screen devices.
- Fixed an issue on the User consent screen where a single quote character (') breaks the form.
- Fixed an issue that caused autocapture to stop working in the `IdScan` module for Workflows when a Back ID scan attempts to display "Too dark" or "Blurry" feedback.
- Fixed an issue with end-to-end encryption (E2EE).
- Fixed an issue where the SDK threw errors about missing forward slash characters (/) at the end of `baseURL`.
- Fixed an issue with `OnboardingListener` callbacks not triggering from different modules:

- `onEKYCChecksCompleted(EKYCResult ekycResult)` for `EKYC` module.
  - `onEKYBChecksCompleted(EKYBResult ekybResult)` for `EKYB` module.
  - `onIdInfoCompleted(IdInfoResult idInfoResult)` for `IdInfo` module.
  - `onAESCompleted(AESResult aesResult)` for `AES` module.
  - `onTaxIdValidationCompleted(boolean success)` for `TaxIdValidation` module.

## Version 5.26.1 - 2024-Apr-29   [Skip link to Version 5.26.1 - 2024-Apr-29](https://developer.incode.com/docs/changelog\#version-5261---2024-apr-29)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-24)

- Security improvements.

## Version 5.26.0; `nfc` 1.3.4; `qr-face-login` 1.2.2; `kiosk-login` 1.3.3 - 2024-Apr-24   [Skip link to Version 5.26.0; ,[object Object], 1.3.4; ,[object Object], 1.2.2; ,[object Object], 1.3.3 - 2024-Apr-24](https://developer.incode.com/docs/changelog\#version-5260-nfc-134-qr-face-login-122-kiosk-login-133---2024-apr-24)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-25)

- Added `VideoSelfie.Builder.setSelfieScanEnabled()` to enable or disable the Selfie Scan step in the `VideoSelfie` module. Enabled by default.
- Added `documentExpiryDate` field to `IdInfo` module and extended the `IdInfoResult` class accordingly.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-27)

- Resolved an issue where users were unable to return to the "Is the NFC symbol visible on your document?" screen after selecting "YES". Users can now navigate back to this screen to change their selection if needed.
- Fixed a bug in the `nfc` module that could cause the "Is the NFC symbol visible on your document?" screen to be skipped.
- Fixed an issue in the `nfc` module where retrying reading attempts resulted in progressively longer delays.
- Updated `SelfieScan` autocapture timeout functionality: Setting the timeout value to zero or negative now explicitly activates manual capture mode.
- Updated Javadoc for `IdScan.Builder.setAutoCaptureTimeout()` that incorrectly stated that setting 0 or negative value resulted in undefined behavior. This is now aligned with `SelfieScan.Builder.setAutoCaptureTimeout()`.
- Added missing analytics event for switching to manual capture in the `IdScan` module when the `IdScan.Builder.setAutoCaptureTimeout()` value is set to zero or negative.
- Fixed an issue in the `NfcScan` module where edits made to the `documentNumber` and `dateOfBirth` fields in the `IdInfo` module were not being reflected on the NFC OCR screen.
- Fixed an issue in the `IdScan` module when `Test Mode` is enabled (used for testing on emulators) which caused the `USER_CANCELLED` event to trigger, instead of `EMULATOR_DETECTED`.
- Denying Camera or Microphone permissions in the `IdScan` and `SelfieScan` modules now results in an `onError(PermissionDeniedException())` callback rather than an `onUserCancelled()` callback.
- Removed `cleartextTrafficPermitted="true"` from `network-security-config` for improved security.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-20)

- Automatically disable local glare check in the `IdScan` module, if server recognizes a specific type of ID.
- Separated "Street" and "House Number" into distinct fields within the `EKYC` module, to align the UI with `EKYB` module.
- Added `Session start` event to Sentry. The purpose of this event is to keep count of total number of sessions.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-20)

- Fixed an issue where devices that couldn't support `video-streaming` could try and crash. See the [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.
- Switched places of the `Continue` and `Quit` buttons on the dialog that appears when the user denies the Mandatory Biometric Consent. This was done to align positive and negative button placement with other dialogs.
- Fixed a crash in the `CurpValidation` module that occurred when CURP generation failed.
- Fixed `startFlow()` API not reading feature flags from server.
- Fixed an issue with `Local 1:N Login` using a wrong (higher than intended) threshold when matching faces, causing some legitimate login attempts to fail.
- Fixed an issue in `IdInfo` module when editing is enabled, which caused Gender to be shown on the Dashboard in lowercase.
- Updated `fetchAllFlows()` and `fetchFlow()` APIs to handle incompatibility introduced by the recent server release.
- Resolved an issue where streaming and video conferencing features were not functioning properly in the EU SAAS environment. (from hotfix release 5.23.3)
- Fixed a crash in `Video Conference` module when `video-conference` dependency is not present. As expected, the `onError()` callback is now called in this case.

## Version 5.25.0; `core-light` 2.6.3; `nfc` 1.3.3;`qr-face-login` 1.2.1; `kiosk-login` 1.3.2 - 2024-Mar-22   [Skip link to Version 5.25.0; ,[object Object], 2.6.3; ,[object Object], 1.3.3;,[object Object], 1.2.1; ,[object Object], 1.3.2 - 2024-Mar-22](https://developer.incode.com/docs/changelog\#version-5250-core-light-263-nfc-133qr-face-login-121-kiosk-login-132---2024-mar-22)

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details):   [Skip link to API Changes (refer to ,[object Object], for details):](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-5)

- The `region` argument in `onOnboardingSessionCreated(String token, String interviewId, String region)` method is being deprecated. Please refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-26)

- Introduced tutorials for permission dialogs within the `VideoSelfie` module to guide users through the process of granting necessary permissions.
- Updated strings in the Exit Confirmation dialog to clearly communicate that exiting will terminate the process and all progress will be lost.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-28)

- Fixed an issue where the `IdScan` module did not show the Manual Capture button after a defined timeout when scanning `Passport`.
- Fixed a conflict in XML resources which was causing builds to fail with the "Resource compilation failed" error.
- Fixed `VideoSelfie` module crashing on Android 14 when `targetSdk` is 34.
- Fixed issues within the `NFC` module related to scanning functionality:

- Fixed an issue where the application would crash after three unsuccessful NFC scans.
  - If a user cancels the scan during the scanning process, it is correctly counted as a failed scan attempt. This adjustment ensures that users can proceed with the flow after reaching the limit on retry attempts.
- Fixed a crash while inflating `IncodeButton` when the app is recreated by the system.
- Removed `com.github.romandanylyk:PageIndicatorView` dependency.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-21)

- Added analytics event when a session is resumed via FinishGPT deep link.
- Added markdown support to `UserConsent` module.
- Updated error handling for `startFlow()` and `startFlowFromDeepLink()` APIs. `IllegalStateException` was replaced with `onError()` callback.
- Enhanced the security of image encryption used in Face Login. User experience remains unchanged.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-21)

- Fixed an issue where the SDKs Sentry integration could consume uncaught `Exceptions` from other crash reporting tools.
- Fixed an issue where the SDKs Sentry integration could cause undesired behavior with an app that has it's own Sentry integration.
- Fixed an issue where the workflow unexpectedly stops after the `NFC` module.
- Fixed an issue that blocked the `core-light` module from being downloaded at runtime through Google Play Feature Delivery. Issue was introduced in 5.20.0.

### Deprecations (STANDARD mode only)   [Skip link to Deprecations (STANDARD mode only)](https://developer.incode.com/docs/changelog\#deprecations-standard-mode-only)

- `IncodeWelcome.fetchRegions()` has been deprecated as it's not used anymore. Calling this will log a deprecation warning.
- `SessionConfig.setRegionIsoCode()` has been deprecated as it's not used anymore. Calling this will log a deprecation warning.

### Updated dependencies   [Skip link to Updated dependencies](https://developer.incode.com/docs/changelog\#updated-dependencies-13)

- `androidx.appcompat:appcompat:1.4.1` -\> `androidx.appcompat:appcompat:1.6.1`
- `androidx.constraintlayout:constraintlayout:2.1.3` -\> `androidx.constraintlayout:constraintlayout:2.1.4`
- `androidx.lifecycle:lifecycle-process:2.5.1` -\> `androidx.lifecycle:lifecycle-process:2.6.0`
- `androidx.lifecycle:lifecycle-runtime-ktx:2.5.1` -\> `androidx.lifecycle:lifecycle-runtime-ktx:2.6.0`
- `androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1` -\> `androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0`
- `androidx.paging:paging-runtime:3.1.1` -\> `androidx.paging:paging-runtime:3.2.1`
- `androidx.paging:paging-rxjava2:3.1.1` -\> `androidx.paging:paging-rxjava2:3.2.1`
- `androidx.recyclerview:recyclerview:1.2.1` -\> `androidx.recyclerview:recyclerview:1.3.2`
- `com.airbnb.android:lottie:5.2.0` -\> `com.airbnb.android:lottie:6.3.0`
- `com.airbnb.android:paris:2.0.0` -\> `com.airbnb.android:paris:2.0.2`
- `com.github.HBiSoft:HBRecorder:3.0.1` -\> `com.github.HBiSoft:HBRecorder:3.0.3`
- `com.google.android.gms:play-services-base:18.0.1` -\> `com.google.android.gms:play-services-base:18.3.0`
- `com.google.android.gms:play-services-location:21.0.1` -\> `com.google.android.gms:play-services-location:21.1.0`
- `com.google.android.material:material:1.5.0` -\> `com.google.android.material:material:1.8.0`
- `com.guardsquare:dexguard-gradle-plugin:9.4.21` -\> `com.guardsquare:dexguard-gradle-plugin:9.5.2`
- `com.guardsquare:dexguard-runtime:9.4.21` -\> `com.guardsquare:dexguard-runtime:9.5.2`
- `com.jakewharton.timber:timber:4.7.0` -\> `com.jakewharton.timber:timber:5.0.1`
- `io.michaelrocks:libphonenumber-android:8.12.23` -\> `io.michaelrocks:libphonenumber-android:8.12.28`
- `io.sentry.jvm.gradle:4.3.0` -\> `io.sentry.jvm.gradle:4.3.1`
- `io.sentry:sentry:7.3.0` -\> `io.sentry:sentry:7.4.0`

## Version 5.24.0; `nfc` 1.3.2; `qr-face-login` 1.2.0 - 2024-02-23   [Skip link to Version 5.24.0; ,[object Object], 1.3.2; ,[object Object], 1.2.0 - 2024-02-23](https://developer.incode.com/docs/changelog\#version-5240-nfc-132-qr-face-login-120---2024-02-23)

### API Changes (refer to [Migration Guide](https://developer.incode.com/docs/migration-guide) for details):   [Skip link to API Changes (refer to ,[object Object], for details):](https://developer.incode.com/docs/changelog\#api-changes-refer-to-migration-guide-for-details-6)

- Moved ID auto-capture timeout configuration method from `CommonConfig` to `IdScan` module.
- Moved Selfie auto-capture timeout configuration method from `CommonConfig` to `SelfieScan` module.

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-27)

- Added `IdScan.setCaptureAttempts()` to specify the number of capture attempts during the ID Scan.
- Added `SelfieScan.setCaptureAttempts()` to specify the number of capture attempts during the Selfie Scan.
- Added analytics events for "permissions mandatory" dialogs for Camera, Microphone and Geolocation permissions.
- Added specific exceptions for permissions denied events in `VideoSelfie` module: `ScreenRecordingPermissionsDeniedException`, `CameraPermissionsDeniedException` and `MicrophonePermissionsDeniedException`.
- Added `IncodeWelcome.Builder.disableVirtualEnvironmentDetection()` to disable virtual environment detection. For debugging purposes only.
- Added the following information to `videoSelfieVideoInfo` analytics event in `VideoSelfie` module:

- `videoCodec`
  - `audioRequested`
  - `audioRecorded`
- \[BETA\] Added new `startFlow()` APIs which allows you to start or resume an onboarding session with provided session configuration and optionally starting a module.
- \[BETA\] Added new `startFlowFromDeeplink()` APIs which allows you to resume an onboarding session based on a deep link URL and with an optional session configuration.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-29)

- Fixed several bugs in the `VideoSelfie` module which could lead to missing videos in the dashboard:

- Bugs in methods for reading `VideoSelfie` video metadata
  - Bugs in permission handling mechanism
- Improved visibility of potential problems in `VideoSelfie` module:

- Added "keep" rules for the `HBRecorder` library used for recording videos. The goal of these is to get unobfuscated errors in the dashboard.
  - Improved verbosity of error messages reported in `videoSelfieVideoUploadError` analytics event by including the full stack trace instead of a generic message.
- Denying location permission in the `Geolocation` module now results in an `onError(PermissionDeniedException())` callback rather than an `onUserCancelled()` callback.
- Updated device environment error handling. `RuntimeException` is replaced with `onError()` callback in case of an unsafe environment.
- Improved TalkBack voice-over feedback for:
  - Positioning the phone when scanning the face in the `Selfie` module
  - Positioning the phone when scanning the ID in the `IdScan` module
- Fix for a crash in the `SelfieScan` module which happens on tablets on startup. Crash introduced in 5.22.0.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-22)

- Revamped Video Selfie Questions and Voice Consent steps by enhancing real time feedback and giving control to the user, ultimately aiming to increase the pass rate. Available only in Video Selfie UI Experience added in SDK version 5.22.0.
- Added support for 1 to 1 login without an API key. Check [User Guide](https://developer.incode.com/docs/user-guide#init-sdk-with-external-token-no-apikey-approach) for details on how to initialize the SDK without an API key. Check [Login Guide](https://developer.incode.com/docs/user-guide-face-login) on how to perform face login.
- `GovernmentValidation`module improvements:

- Added support for the "Skip Government Verification animation" configuration. See the Javadoc for the `GovernmentValidation.Builder.setSkipAnimation` SDK API for more info.
  - The module will now be skipped for unsupported document types.
- `VideoSelfie`module improvements:

- Changed UI for error state on the video file upload screen.
  - Added new UI error state in case of "No Internet connection" on the video file upload screen.
- Added Sentry library for crash reporting. Enabled by default, to disable use `IncodeWelcome.Builder.setCrashReportingEnabled(false)`.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-22)

- Fixed a bug where `VideoSelfie` video upload starts before video is saved which results in an unsuccessful upload.
- Optimized `VideoSelfie` by eliminating redundant video upload URL generation after each upload failure.
- Fixed a bug which caused intermittent video recording upload failures when the `FlowConfig.setRecordSession(true)` API is used.
- Fixed an issue that prevented login attempts from being synced to the backend.
- Fixed missing "ID Specific" checks in `Results` module.

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode-4)

- Fixed a crash in the `Questions` step of `VideoSelfie` module, that occurred when generating analytics event.

## Version 5.23.3 - 2024-04-19   [Skip link to Version 5.23.3 - 2024-04-19](https://developer.incode.com/docs/changelog\#version-5233---2024-04-19)

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-23)

- Resolved an issue where streaming and video conferencing features were not functioning properly in the EU SAAS environment.

## Version 5.23.2 - 2024-02-23   [Skip link to Version 5.23.2 - 2024-02-23](https://developer.incode.com/docs/changelog\#version-5232---2024-02-23)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-30)

- Fix for a crash in `SelfieScan` module which happens on tablets on startup. Crash introduced in 5.22.0.

## Version 5.23.1 - 2024-02-09   [Skip link to Version 5.23.1 - 2024-02-09](https://developer.incode.com/docs/changelog\#version-5231---2024-02-09)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-28)

- Added `IncodeWelcome.Builder.disableVirtualEnvironmentDetection()` to disable virtual environment detection. For debugging purposes only.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-31)

- Updated device environment error handling. `RuntimeException` is replaced with `onError()` callback in case of an unsafe environment.

## Version 5.23.0 - 2024-01-19   [Skip link to Version 5.23.0 - 2024-01-19](https://developer.incode.com/docs/changelog\#version-5230---2024-01-19)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-29)

- Extended `setDefaultRegionPrefix()` API to accept 4 digit prefixes
- Changed the color of the X (close) button in Video Selfie ID scan to be more visible

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-32)

- Fixed an issue where users are unable to exit the app by pressing the back button in the `VideoSelfie` module when there is no Internet connection.
- Fixed an issue in the Selfie step of `VideoSelfie` where the selfie frame would keep showing after sending the app to the background.

### Added (STANDARD and Submit-Only modes)   [Skip link to Added (STANDARD and Submit-Only modes)](https://developer.incode.com/docs/changelog\#added-standard-and-submit-only-modes)

- Added a mandatory consent screen for using Incode services from regulated states. User consent can be displayed either immediately after the session starts or after scanning the front of the ID. If the user decides to omit giving consent, the flow is interrupted, the `onError` callback is called, and all session data is deleted. A new type of error is returned in this case: `BiometricConsentNotGiven` or `BiometricConsentNotReceived`.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-23)

- Added `SessionConfig` option for setting an external ID that starts a new session if the current session is interrupted, `SessionConfig.Builder.setExternalCustomerId()`.
- Added workflows support for the `setStreamFramesEnabled()` for the following modules:

- `IdScan`
  - `SelfieScan`
- Added a new feature for dynamic back scan detection based on document type. For instance, when a user selects to scan an ID but actually scans a passport, the system will now intelligently skip the back scan process.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-24)

- Fixed Government Validation showing "Failed" status for cases where a "Submitted" status makes more sense.
- Fixed a NPE in `MachineLearningConsentActivity` that could happen during the application submission process to the Play Store.
- Fixed an issue where entering the OTP code received via email unexpectedly interrupted the flow.
- Fixed validation issues for Street and House Number fields in EKYB module.
- Fixed several bugs in the `VideoSelfie` UI introduced in 5.22.0:

- Changed the background color of the progress bar on the Video Upload screen.
  - Fixed an issue where the camera positioning was not restored correctly upon resuming the app from the background.
  - `Questions` and `VoiceConsent` steps are now automatically skipped when audio is disabled. Adapted the tutorials not to show `Questions` and `VoiceConsent` in the same scenario.
  - Removed the recording indicator.

### Fixed (Capture-Only & Delayed modes)   [Skip link to Fixed (Capture-Only & Delayed modes)](https://developer.incode.com/docs/changelog\#fixed-capture-only--delayed-modes)

- Fixed an issue where `IdScan` module requests a scan of the back side when the `IdType` is explicitly set to `Passport`.

## Version 5.22.0; `nfc` 1.3.1; `video-streaming` 1.5.5 - 2023-Dec-15   [Skip link to Version 5.22.0; ,[object Object], 1.3.1; ,[object Object], 1.5.5 - 2023-Dec-15](https://developer.incode.com/docs/changelog\#version-5220-nfc-131-video-streaming-155---2023-dec-15)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-30)

- Added support for using the SDK in app compiled with Java 11
- Upgraded following internal dependencies to support Kotlin `1.8.10`, and Android Gradle Plugin `8.0`:

- `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21` -\> `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10`
  - `com.android.tools.build:gradle:7.4.2` -\> `com.android.tools.build:gradle:8.1.4`
  - `org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21` -\> `org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10`
  - `com.google.dagger:dagger:2.38.1` -\> `com.google.dagger:dagger:2.48.1`
  - `com.google.dagger:dagger-compiler:2.38.1` -\> `com.google.dagger:dagger-compiler:2.48.1`
  - `androidx.compose.ui:ui:1.2.0-rc02` -\> `androidx.compose.ui:ui:1.4.3`
  - `androidx.compose.material:material:1.2.0-rc02` -\> `androidx.compose.material:material:1.4.3`
- Added more UI customization options. Please refer to [SDK Customization How-To Guide](https://developer.incode.com/docs/user-guide-customization#4-add-a-custom-logo) for more info. These options include:

- Support for customizable logos through `ThemeConfiguration`.
  - Support for module-specific customizable logos and messages to the `Selfie` and `VideoSelfie` modules.
- `nfc` module refactor, no changes in functionality

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-33)

- Fixed double events logging in `VideoSelfie`, eKYB, `CurpValidation`, and `CustomWatchlist` modules.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-24)

- Added new Video Selfie UI Experience, accessible through a feature toggle that can be remotely enabled upon client request. Currently in BETA phase.
- Added workflows support for the `Antifraud` module.
- Update of `video-streaming` module obfuscation rules

### Deprecations (STANDARD mode only)   [Skip link to Deprecations (STANDARD mode only)](https://developer.incode.com/docs/changelog\#deprecations-standard-mode-only-1)

- The following methods have been deprecated as they are no longer used in the new Video Selfie UI Experience. These methods remain applicable and continue to be in use for the old Video Selfie UI Experience:
  - `VideoSelfie.Builder.setSelfieCameraFacing()`
  - `VideoSelfie.Builder.setIdScanCameraFacing()`
  - `VideoSelfie.Builder.setIdFrontCameraFacing()`
  - `VideoSelfie.Builder.setIdBackCameraFacing()`
  - `VideoSelfie.Builder.setDocumentScanEnabled()`
  - `VideoSelfie.Builder.setDocumentScanCameraFacing()`
  - `VideoSelfie.Builder.setRandomQuestionsCameraFacing()`
  - `VideoSelfie.Builder.setVoiceConsentCameraFacing()`

## Version 5.21.0; `core-light` 2.6.2; `nfc` 1.3.0; `kiosk-login` 1.3.1 - 2023-Nov-30   [Skip link to Version 5.21.0; ,[object Object], 2.6.2; ,[object Object], 1.3.0; ,[object Object], 1.3.1 - 2023-Nov-30](https://developer.incode.com/docs/changelog\#version-5210-core-light-262-nfc-130-kiosk-login-131---2023-nov-30)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-31)

- Updated `nfc` module to v1.3.0: Added workflows support.
- Updated 3rd party libraries used during NFC scans.
- Optimized R8 rules for the `nfc` module, reducing APK size further when using `minifyEnabled`.
- ButterKnife dependency removed.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-34)

- Fixed issues with `Selfie` and `VideoSelfie` modules including:

- Pressing the "Continue" button too quickly on `VideoSelfie` question could cause a crash.
  - `Selfie` module could crash when returning from the background.
- Removed several redundant analytics events.
- Fixed a crash in NFC tutorial.
- Improved real-time feedback in Selfie screen when user positions his phone too far from his face. On specific high-end phones such as Pixel 7 Pro, Huawei P30 and Samsung S20+ "Move closer" message was not shown and photo was taken from afar.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-25)

- Upgraded `FaceMatch` module to support First ID, Second ID and Selfie matching at the same time.
- Added new API `startWorkflow()` which provides a new way to configure flows and setup onboarding sessions. Please refer to the [User Guide](https://developer.incode.com/docs/user-guide#workflows)
- Added default text for User Consent title and description.
- Added `isEditableOcr: Boolean` property to `IdInfo` class. Use to enable editing by the end user.”
- Added `GlobalWatchlist` module.
- Added the `EKYC` module, which enables eKYC (electronic Know-Your-Customer) validation with the user's information.
- Added `setUploadDocument()` and `setDownloadDocument()` methods in the AES module's `Builder` to enable document upload at the start and document download at the end of the AES flow, respectively.
- Added support for end-to-end encryption (E2EE) of internal API calls. This provides an additional layer of protection for the PII of users. This feature requires a specific backend environment configuration. Please contact Customer Success for more information.
  - Enable this via `SessionConfig.Builder().setE2eEncryptionEnabled(true)`.
- Added more granular analytics events when uploading `VideoSelfie` videos to help diagnose video upload issues.
- Added "An error occurred while submitting OCR data" toast message when user tries to submit invalid data in editable OCR screen.
- Replaced runtime crash with an `onError` callback when using `setStreamFramesEnabled(true)` without adding 'com.incode.sdk:video-streaming' dependency.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-25)

- Added missing Video Selfie ID checks for default flow
- Fixed a crash (`NullPointerException`) in the `UserConsent` module when initialized without title and content - `UserConsent.Builder().build()`
- Fixed default SSL Pinning configuration - `IncodeWelcome.Builder.configureSSLPinning()`. In case of a certificate failure, the onboarding flow will not be interrupted.
- Fixed an issue where data would come from a mixture of IDs on the "Please Check Your Data" screen in the `nfc` module if multiple IDs are captured. NFC scans are only supported for the first ID captures.
- Added missing request for Manual Review when the Second ID scan fails.
- Fixed intermittent 1:N login failures.
- Added missing analytics event for every failed Face capture attempt.

### Fixed (Capture-Only mode)   [Skip link to Fixed (Capture-Only mode)](https://developer.incode.com/docs/changelog\#fixed-capture-only-mode-5)

- Prevent SDK from trying to make (unsuccessful) network calls in Capture Only mode when `SelfieScan.setStreamFramesEnabled(true)` or `IdScan.setStreamFramesEnabled(true)` is set.

### Fixed (DELAYED mode)   [Skip link to Fixed (DELAYED mode)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode-1)

- Fixed inability to sync delayed onboardings due to missing class.

## Version 5.20.0; `nfc` 1.2.1; `core-light` 2.6.1 - 2023-Nov-06   [Skip link to Version 5.20.0; ,[object Object], 1.2.1; ,[object Object], 2.6.1 - 2023-Nov-06](https://developer.incode.com/docs/changelog\#version-5200-nfc-121-core-light-261---2023-nov-06)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-32)

- Added option to enable opt-in messaging on the Phone input screen.
- Improvements when using the TalkBack feature for visually impaired people:
  - Added voice-over text for ID and Selfie tutorials.
  - Added voice-over for real-time UX feedback in ID and Selfie scan.
  - Doubled the auto-capture timeout in ID and Selfie scan.
  - Improved the usability of manual capture button in ID and Selfie scan. Button gets automatically selected when it's shown, allowing the user to double tap anywhere on the screen to capture a photo.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-35)

- Fixed an issue where an Incode `Activity` could be killed without providing a callback to the host app if the user sends the host app to background while the Incode `Activity` is being started.
- Fixed an issue where NFC scans could crash when using `minifyEnabled = true` for a project.
- Added missing events related to the OTP screen for Phone and Email modules.
- Fixed a crash (`NullPointerException`) in the `Captcha` module when used together with `SessionConfig.setExternalToken()`.
- Fixed a device-specific crash (`UnsatisfiedLinkError`) happening during SDK init in Flutter apps using Incode's Flutter wrapper. Crash was introduced in Android 5.17.2.
- Exposed public classes and interfaces that were hidden by obfuscation (when using `minifyEnabled = true` for a project):

- `SSLPinningFailedListener`, `FetchRegionsListener` and `VerifyListener`.
- Fixed build warnings about missing classes when not using optional dependencies.
- Added a list of Lottie animations for `nfc` module customization to the docs.
- Accessibility mode fixes:
  - Fixed an issue with selecting items in Intro screen.
  - Fixed an issue with some buttons not touch-selectable.

### Fixed (DELAYED mode)   [Skip link to Fixed (DELAYED mode)](https://developer.incode.com/docs/changelog\#fixed-delayed-mode-2)

- Exposed classes and interfaces that were hidden by obfuscation, including:
  - `SyncDelayedOnboardingListener`, `DelayedOnboardingSyncResult` and `DelayedOnboardingSyncError`.

## Version 5.19.0 - 2023-Oct-23   [Skip link to Version 5.19.0 - 2023-Oct-23](https://developer.incode.com/docs/changelog\#version-5190---2023-oct-23)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-33)

- Added a new API for the `Phone` module, `setDefaultRegionPrefix()`, which overrides the default Country Calling Code for the desired region. E.g., 1 for USA, 52 for Mexico, 381 for Serbia, etc.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-26)

- Updated ML consent screen title and checkbox description.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-36)

- Implemented a workaround for an issue in the "choose best frame" algorithm of ID scan, which previously could result in discarding a valid frame.
- Javadoc improvements.
- Worked-around several potential crashes when using the `streamFrames` feature of the `IdScan` and `SelfieScan` modules.
- Fixed an issue where `Selfie` and `VideoSelfie` modules would stop responding with screen recording enabled on Android 14 devices.
- Making 'video-streaming' dependency optional again, as it was mistakenly made non-optional.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-26)

- Added missing analytics events for `Phone` module.
- Fixed the optional Sardine Risk SDK integration to accurately report `Fragments`.
- Fixed an issue with recording camera capture - `FlowConfig.setRecordSession`, where the Dashboard's Video tab would occasionally miss the recording of the last module in the flow (usually selfie or back ID) due to calling the finish session API too early.
- Fixed an issue with streaming camera capture - `IdScan.setStreamFramesEnabled`, `SelfieScan.setStreamFramesEnabled`, where the Dashboard's Video tab would occasionally miss front ID, back ID, or selfie video recordings.
- Implemented a workaround for several potential crashes when using the `streamFrames` feature of the `IdScan` and `SelfieScan` modules.

## Version 5.18.0; `core-light` 2.6.0; `kiosk-login` 1.3.0; `model-face-recognition` 3.0.0; `model-id-face-detection` 2.1.0; `model-liveness-detection` 3.0.0; `nfc` 1.2.0 - 2023-Sep-28   [Skip link to Version 5.18.0; ,[object Object], 2.6.0; ,[object Object], 1.3.0; ,[object Object], 3.0.0; ,[object Object], 2.1.0; ,[object Object], 3.0.0; ,[object Object], 1.2.0 - 2023-Sep-28](https://developer.incode.com/docs/changelog\#version-5180-core-light-260-kiosk-login-130-model-face-recognition-300-model-id-face-detection-210-model-liveness-detection-300-nfc-120---2023-sep-28)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-34)

- Added `forceInterrupt` API which interrupts any ongoing flow that might have started. It closes all open SDK activities and interrupts all active processes.
- Added `mimeType: String` property to `DocumentValidationResult` class.
- Updated `core-light` module to v2.6.0: Improved lenses and face mask detection. Introduced optional eyes closed detection in `Selfie` and `VideoSelfie`. To enable it, use module level parameter `eyesClosedCheckEnabled`.
- Updated `kiosk-login` module to v1.3.0: Utilize improved lenses detection from `core-light`.
- Updated `model-face-recognition` to v3.0.0: Security improvements.
- Updated `model-id-face-detection` to v2.1.0: Performance and security improvements.
- Updated `model-liveness-detection` to v3.0.0: Security improvements.

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-37)

- Fixed issues where NFC-related UI can appear incorrectly during NFC scanning.
- Fixed `onError()` callback not called when NFC dependency is missing.
- Fixed a crash (ClassNotFoundException) during SDK initialization, when the host app is processed by ProGuard.
  - This issue was introduced in 5.17.2.
  - As a workaround, add the following rule to `proguard-rules.pro`: `-keep class com.a.d.getSelfieAutoCaptureTimeout`

### Deprecations (ALL modes)   [Skip link to Deprecations (ALL modes)](https://developer.incode.com/docs/changelog\#deprecations-all-modes-9)

- `CommonConfig.getMaskThreshold()` has been deprecated as it's not used anymore. Calling this will log a deprecation warning and return a useless value.
- `CommonConfig.Builder.setMaskThreshold()` has been deprecated as it's not used anymore. Calling this will log a deprecation warning.
- The previously deprecated `IncodeWelcome.Builder.enableMaskDetection()` will log a deprecation warning.
- `SelfieScanResult.maskConfidence` has been deprecated as it behaves in an analog way to `SelfieScanResult.hasFaceMask`.
- Optional dependency `model-mask-detection` has been deprecated as the functionality has been ported to `core-light` v2.6.0.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-27)

- Added optional Email OTP verification.
- Added optional Phone OTP verification.
- Added support for passive authentication for ICAO 9303 compliant documents supporting NFC.
- Added Tax ID (RFC) validation module
- Added support for [API key rotation](https://developer.incode.com/docs/api-key-rotation).
- Added ID Info module (currently known as `OCR on ID(s)` module on the Dashboard)
- Added `Antifraud` module, and a non-ui API `processAntifraud()` which allows the user to detect anomalies that could be signs of fraud.
- Added CURP module callback for unsuccessful attempts of entering and/or generating CURP.
- Added `AES` (Advanced Electronic Signature) module that enables users to sign legal documents.
- Added processing of the back side of the ID in `Video Selfie` module.
- Added specific exceptions for cases when a feature is being used without the necessary dependency: `MissingNfcDependencyException`, `MissingKioskLoginDependencyException` and `MissingQrFaceLoginDependencyException`.
- Added analytics events to track opening and closing of each module.
- Added missing analytics events to track opening and closing screens in following modules: ID Capture, Selfie, Geolocation, Document capture, Gov Validation, CURP, Custom Watchlist, Conference, Video Selfie.
- Refactored capture events:
  - Added `captureType` \- 'auto/manual', `idType` \- 'id/passport', and `idCategory` \- 'primary/secondary' parameters to `captureFrontId` event.
  - Added `captureType` \- 'auto/manual' and `idCategory` \- 'primary/secondary' parameters to `captureBackId` event.
  - Added `captureType` \- 'auto/manual' to `captureSelfie` event.
  - Added `idType` \- 'id/passport' and `idCategory` \- 'primary/secondary' parameters to `switchToManualCaptureFrontId` event.
  - Added `idCategory` \- 'primary/secondary' parameter to `switchToManualCaptureBackId` event.
  - Removed obsolete `manualCaptureFrontId`, `manualCaptureBackId`, `switchToManualCaptureFrontSecondId`, `manualCaptureFrontSecondId`, `switchToManualCaptureBackSecondId`, `manualCaptureBackSecondId`, `manualCaptureSecondPassport`, `manualCaptureSelfie` events.
- Added support for A/B testing.
- Added eKYB (Electronic "Know Your Business") module, which allows users to validate the existence and legitimacy of business.
- Added support for “Only Front ID” option for ID Validation. This option can now be configured directly from the dashboard.

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-27)

- Fixed an issue with Retry button in No Internet dialog not working if pressed too quickly.
- Fixed navigation issue in CURP module: Users were previously unable to navigate back after an unsuccessful CURP entry attempt.
- Fixed CURP validation: The CURP module now correctly validates the length of a pre-populated CURP or a CURP entry upon retry.
- Fixed a crash in `QRScan` module happening on module start.

### New mode (DELAYED mode)   [Skip link to New mode (DELAYED mode)](https://developer.incode.com/docs/changelog\#new-mode-delayed-mode)

- Added `Delayed Onboarding` mode.
- This mode enables the SDK to collect onboarding data (ID, Selfie), temporarily store it locally on the device, and sync with the server later when an Internet connection is available.
- Supported modules: `ID Scan`, `Process ID`, `Document Scan`, `Selfie Scan`, `Face Match`.

## Version 5.17.3 - 2023-Dec-30   [Skip link to Version 5.17.3 - 2023-Dec-30](https://developer.incode.com/docs/changelog\#version-5173---2023-dec-30)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-38)

- Back-ported this fix from 5.18.0:
  - Fixed a crash (ClassNotFoundException) during SDK initialization, when the host app is processed by ProGuard.
    - This issue was introduced in 5.17.2.
    - As a workaround, add the following rule to `proguard-rules.pro`: `-keep class com.a.d.getSelfieAutoCaptureTimeout`

## Version 5.17.2; `core-light` 2.5.1; `video-streaming` 1.5.4 - 2023-Aug-29   [Skip link to Version 5.17.2; ,[object Object], 2.5.1; ,[object Object], 1.5.4 - 2023-Aug-29](https://developer.incode.com/docs/changelog\#version-5172-core-light-251-video-streaming-154---2023-aug-29)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-39)

- Refactored library initialization to mitigate exceptions when app process is killed and restored by the system.
- Updated 3rd party library used for protection against reverse engineering and hacking to the latest version. Update contains multiple fixes for issues, crashes and false positives during hook detection.
- Updated 3rd party library used for video streaming. Update contains (among others) fixes for crashes and memory leaks.
- Fix for R8 build issues in release mode when using AGP 8.0 and above.

## Version 5.17.1 - 2023-July-12   [Skip link to Version 5.17.1 - 2023-July-12](https://developer.incode.com/docs/changelog\#version-5171---2023-july-12)

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-28)

- The `CurpValidation` module will no longer allow users to enter more characters than the length of a CURP

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-28)

- Fixed an issue where the first time a properly formatted, but invalid CURP is entered, the "CURP not verified" text isn't shown
- Fixed an issue where `ID Scan` module skips the scan of the back side of the ID when the `IdType` is explicitly set to `ID`
- Fixed an issue where `ID Scan` auto-capture never happens after "Too dark" state when the `IdType` is explicitly set to `ID`

## Version 5.17.0; `nfc` 1.1.0; `kiosk-login` 1.2.0; `qr-face-login` 1.1.0; `video-streaming` 1.5.3 - 2023-July-07   [Skip link to Version 5.17.0; ,[object Object], 1.1.0; ,[object Object], 1.2.0; ,[object Object], 1.1.0; ,[object Object], 1.5.3 - 2023-July-07](https://developer.incode.com/docs/changelog\#version-5170-nfc-110-kiosk-login-120-qr-face-login-110-video-streaming-153---2023-july-07)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-35)

- Added screenshots to `External Screen Viewed` analytics events, check `IncodeWelcome.Builder.setExternalScreenshotsEnabled`
- UI change: Changed default fragment transition used in `Video Selfie` and `CURP` screens, so that new fragment enters chronologically, from right, and old one exits to the left. When going back, old fragment enters from left and new one exits to the right.
- \[BETA\] Added support for IDs to `NfcScan` module - Read data from NFC chip in IDs and use it for ID verification
- ID Scan improvements:
  - Added ability to capture IDs in horizontal orientation
  - The manual capture timer now starts counting from the first ID detection instead of screen opening, providing users with additional time to locate their ID or make changes. After 60 seconds, the manual capture button appears regardless of the previous condition.
  - Added new analytics events for first ID detection: `frontIdDetected` and `backIdDetected`
- Updated button design in ID type chooser screen
- Added optional ID template overlay within ID capture frame, check `IdScan.Builder.setShowIdOverlay`
- Added `module` and `screen` event properties to existing analytics events
- Added analytics events to track opening and closing of each screen: `screenOpened` and `screenClosed`
- `Capture Only`documentation improvements:

- Added flow diagram to [https://developer.incode.com/docs/user-guide-capture-sdk](https://developer.incode.com/docs/user-guide-capture-sdk)
  - Explicitly documented which customization and strings are applied in capture only
  - Explicitly document which configurations are applied in capture only mode
- General documentation improvements:
  - Cleaned `IncodeWelcome` public documentation so it shows only APIs intended for external use
- Renamed Gradle dependency `com.incode.sdk:conference` to `com.incode.sdk:video-streaming`
- Fixed an issue with Retry button in No Internet dialog not working if pressed too quickly

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-40)

- Fixes from 5.15.4 hotfix release
- Fixed incompatibility between `nfc` and `qr-face-login` dependencies
- Javadoc not appearing in Android Studio
- Other Javadoc improvements
- Issue that causes ID model update to re-trigger for the same model version. No functional side-effects - prevents unnecessary work.

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-29)

- Added optional high-quality streaming of camera feed in `ID Scan` and `Selfie Scan`. Videos are available in the dashboard, check `IdScan.Builder.setStreamFramesEnabled` and `SelfieScan.Builder.setStreamFramesEnabled`
- Authentication improvements:
  - Authentication method 'local', 'hybrid' or 'server' is sent to the server as part of the authentication attempt log. Authentication method can be seen in authentication dashboard.
  - Locally chosen Facial Recognition and Liveness thresholds, applied in local mode, are sent to the server as part of the authentication attempt log. Thresholds can be seen in authentication dashboard. Logging of local attempts can still be completely disabled with `SelfieScan.Builder.setLogAuthenticationEnabled(false)`.
- Added `SSL Pinning`, enabled by default. To disable check `IncodeWelcome.Builder.configureSSLPinning`
- Added optional Sardine risk SDK integration

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-29)

- Fixed a bug introduced in 5.16.0 which caused incomplete sessions on the Dashboard
- Bug where `onSuccess` callback gets called before `finishOnboarding` network call finishes. Affects only flows started with `startOnboarding` API (and NOT with `startOnboardingSection` API).
- Bug that causes the voice consent step to be skipped if the user enters the `Video Selfie` module without an internet connection
- Bug that causes stored user chosen ID type to be used in the next session, if the next session doesn't contain `ID Scan`

## Version 5.16.0; `nfc` 1.0.0 - 2023-Apr-06   [Skip link to Version 5.16.0; ,[object Object], 1.0.0 - 2023-Apr-06](https://developer.incode.com/docs/changelog\#version-5160-nfc-100---2023-apr-06)

### Added (ALL modes)   [Skip link to Added (ALL modes)](https://developer.incode.com/docs/changelog\#added-all-modes-36)

- Updated Incode SDK `minSdk` API level to `21`
- \[BETA\] `NfcScan` module - Read data from NFC chip in passports and use it for ID verification
- Support for PDF upload for `OTHER_DOCUMENT_1/2/3` and `PAYMENT_PROOF` in `Document Scan` module
- Tap-to-focus in `ID Scan` and `Video Selfie` modules
- External `Screen View` and `Session Events` tracking

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-41)

- Fixed inaccuracies in docs

### Added (STANDARD mode only)   [Skip link to Added (STANDARD mode only)](https://developer.incode.com/docs/changelog\#added-standard-mode-only-30)

- Showing "ID type unacceptable" upon uploading the ID if that ID type is configured not to be accepted
- Added `IssueName`, `IssueYear` and `CountryCode` to `IdScanResult`
- Implemented unified "No Internet Connection" message

### Fixed (STANDARD mode only)   [Skip link to Fixed (STANDARD mode only)](https://developer.incode.com/docs/changelog\#fixed-standard-mode-only-30)

- Fixed issues with SDK in External Token mode
- Reset UI in `kiosk-login` module when app is resumed from the background
- Fixed selfie upload when bringing app from background to foreground

## Version 5.15.4 - 2023-Apr-13   [Skip link to Version 5.15.4 - 2023-Apr-13](https://developer.incode.com/docs/changelog\#version-5154---2023-apr-13)

### Fixed (ALL modes)   [Skip link to Fixed (ALL modes)](https://developer.incode.com/docs/changelog\#fixed-all-modes-42)

- Crashes caused by releasing the camera too early
- Crash in `Retake Photo` screen
- Prevent the possibility to start the onboarding flow more than once when initializing the SDK multiple times
- Issues when mocking certain classes in tests
- Prevent multiple instances of `ValidationActivity`

## Version 5.15.3 - 2023-Mar-13   [Skip link to Version 5.15.3 - 2023-Mar-13](https://developer.incode.com/docs/changelog\#version-5153---2023-mar-13)

### Fixed   [Skip link to Fixed](https://developer.incode.com/docs/changelog\#fixed)

- Rare race condition that can occur between the SDK and the integrating app, which can cause a crash

## Version 5.15.2 - 2023-Feb-28   [Skip link to Version 5.15.2 - 2023-Feb-28](https://developer.incode.com/docs/changelog\#version-5152---2023-feb-28)

### Fixed   [Skip link to Fixed](https://developer.incode.com/docs/changelog\#fixed-1)

- Wrong liveness feedback in face match screen in case of an error (e.g., photo not meeting constraints)
- Bug that was leading to some devices uploading videos with ONLY Audio during video selfie (confirmed on Xiaomi Poco X3 Pro)
- Issues on SDK init caused by missing `IncodeWelcome.InternalConfig` default values
- Crash on ID and Selfie scan startup when using Incode SDK with google play dynamic delivery
- Upgraded following internal dependencies to add support on newer versions of Android that require Java 8 or higher, these updates don't break compatibility:
  - `androidx.databinding:viewbinding:7.3.0` -\> `androidx.databinding:viewbinding:7.4.1`
  - `org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.20` -\> `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21`
  - `org.jetbrains.kotlin:kotlin-parcelize-runtime:1.6.20` -\> `org.jetbrains.kotlin:kotlin-parcelize-runtime:1.6.21`
  - `com.airbnb.android:lottie:3.6.1` -\> `com.airbnb.android:lottie:5.2.0`

## Version 5.15.1   [Skip link to Version 5.15.1](https://developer.incode.com/docs/changelog\#version-5151)

Fixed an issue with the `VideoSelfie` module where the ID scan step was skipped if the session was paused and resumed

Improved the handling of `null` cases in `IncodeWelcome.getThemeConfiguration()` to prevent potential crashes

## Version 5.15.0; `core-light` 2.5.0; `kiosk-login` 1.1.0; `qr-face-login` 1.0.0   [Skip link to Version 5.15.0; ,[object Object], 2.5.0; ,[object Object], 1.1.0; ,[object Object], 1.0.0](https://developer.incode.com/docs/changelog\#version-5150-core-light-250-kiosk-login-110-qr-face-login-100)

Added QR Face Login feature for offline authentication using QR code, including a new `qr-face-login` module

Added Support for Blocklist for QR Face Login

Updated `core-light` module to v2.5.0 (updated RecogKit libraries and ID Detection model from v2 to v2.0.1)

Added option to choose between two types of Autocapture UX:

1. HoldStill with the possibility to set delay in seconds (if not specified, the default duration is 2 seconds)
2. Countdown animation (3-2-1)

Also, it is possible to change the style of the Countdown animation using XML or dynamic styles

Added `AutocaptureUXMode` to `IdScan.Builder`

Added Horizontal ID check in `ID Scan` module, to prevent horizontal ID from being scanned (non-configurable, always on)

Updated `ResponseOCRData` & `DocumentValidationResult`:

- Added `documentType` & `poaName` properties to `ResponseOCRData`
- Added `DocumentValidationResult.getAddressStatementData()` method

Updated `kiosk-login` version to 1.1.0

Updated error handling when an Incode module dependency (such as `model-liveness-detection`) is missing

Video Selfie: Fixed issue that was causing flow to end after the first failed Selfie attempt

Fix for ID frame not showing when animations are disabled on system level

Minor bugfixes and code improvements

## Version 5.14.0   [Skip link to Version 5.14.0](https://developer.incode.com/docs/changelog\#version-5140)

Implemented Local mode for 1:N Login

Implemented an API to configure Lenses Check in `VideoSelfie` module. Check `VideoSelfie.Builder.setLensesCheckEnabled`

Implemented an API to configure Mask Check in `VideoSelfie` module. Check `VideoSelfie.Builder.setMaskCheckEnabled`

Updated Google's `play-services-location` dependency version to 21.0.1

Fixed outdated results returned from `VideoSelfie` module

Video Selfie now calls `onVideoRecorded()` even if there was an error while recording (except for errors that prevent video from being recorded). You can check the `resultCode` field to determine if recording was successful, and `error` field for more info about the potential error. Additionally, `onError()` is called, and the flow is interrupted.

Fixed displaying of images in `Referred to Executive` Screen

Changed default Liveness Threshold from 0.3 to 0.5

Other improvements and bugfixes

Added remaining Kotlin code snippets to User Guide

## Version 5.13.0; `core-light` 2.4.0; `kiosk-login` 1.0.0   [Skip link to Version 5.13.0; ,[object Object], 2.4.0; ,[object Object], 1.0.0](https://developer.incode.com/docs/changelog\#version-5130-core-light-240-kiosk-login-100)

Added `kiosk-login` module for 1:N login applications on shared devices

New version of Face Detection model with improved face angle detection

New version of ID Capture model with ID side classification

Implemented an API to toggle image downloads in the SDK. Check `SessionConfig.setDownloadImagesEnabled`

Implemented an API to toggle photo rotation in Retake Photo screen. Check `IdScan.setEnableRotationOnRetakeScreen`

Implemented a non-ui API to fetch user's OCR data via token. Convenience API to use after successful login. Check `IncodeWelcome.getUserOCRData`

Fixed a crash when changing camera configuration

Improvements and bugfixes to dynamic customization feature

Other small bugfixes and improvements

Updated docs to point to proper online documentation; Added code snippets for Java/Kotlin

Added missing SDK callbacks: onAddEmailCompleted, onMachineLearningConsentCompleted, onCustomWatchlistProcessed

## Version 5.12.0   [Skip link to Version 5.12.0](https://developer.incode.com/docs/changelog\#version-5120)

Configurable validation modules for Video Selfie

Upload Video Selfie video even if user exits the flow before finishing

Fixed non functional selfie capture in VS after clean install in Android 13

Added a Throwable to verifyClientId onError callback

Fixed a crash in POA

Added new fields to SelfieScanResult: fullFrameSelfieEncryptedBase64 and fullFrameSelfieBase64

## Version 5.11.0   [Skip link to Version 5.11.0](https://developer.incode.com/docs/changelog\#version-5110)

Removed usage of com.google.android.gms.vision.face.\* classes. Replaced with internal implementation.

Fixed an intermittent crash in Video Selfie

Added option to hide "User already exists" feedback in FaceMatch screen. Check `FaceMatch.Builder.setShowUserExists`

Fixed string misspellings

Added documentation for setLocalizationLanguage() API

Fixed double start events when resuming an existing session

Added "Name" module which allows the user to enter a name

VideoSelfie small UI fixes

## Version 5.10.0   [Skip link to Version 5.10.0](https://developer.incode.com/docs/changelog\#version-5100)

Video Selfie improvements:

- Added option to use passports in Video Selfie when using back camera
- Added real time feedback to Video Selfie ID Scan
- Introduced new Video Selfie scoring rules - user is able to finish the flow with failing OCR name check, ID type check or ID photo check.
- Improved UI, specifically display of labels in questions and consent screens

Server flow configuration is used when session is created with an external token

## Version 5.9.0   [Skip link to Version 5.9.0](https://developer.incode.com/docs/changelog\#version-590)

Added Dynamic Styles. Please refer to the [Theme Configuration](https://developer.incode.com/docs/user-guide-customization#2-theme-configuration)

Fixed ID Scan capture animation glitch

Fixed camera preview glitch after application is paused

Removed close X button for some screens

## Version 5.8.0   [Skip link to Version 5.8.0](https://developer.incode.com/docs/changelog\#version-580)

Improvements made to `MachineLearningConsent` module:

- Consent text is loaded from the server.
- When using mode `ConsentType.GDPR` consent text is translated to device language

Implemented an API for changing the SDK language. Check `CommonConfig.setLocalizationLanguage`

Small improvement in auto-capture ID Scan animation

Improved Selfie scan UX; Added a small delay when lenses get detected before restarting the processing, to give the user time to remove the lenses

Implemented screen recording in `IdScan` and `SelfieScan`. Check `FlowConfig.setRecordSession`

Replaced Google FD with Incode FD. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide)

Time unit for setting the maximum length for video selfie recording changed from minutes to seconds. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide)

## Version 5.7.0   [Skip link to Version 5.7.0](https://developer.incode.com/docs/changelog\#version-570)

Added `setEnableBackShownAsFrontCheck()` method to `IdScan.Builder` to enable realtime check if back of the ID is shown instead of front. Disabled by default.

Added optional `showRetakeScreenForAutoCapture` parameter to `IdScan.Builder.setShowRetakeScreen()` method (shows Retake screen after auto-capture)

Removed ID capture countdown during ID scan

Added `setCameraFacing()` method to `SelfieScan.Builder` for controlling camera facing

Added ability to customize Video Selfie Tutorial animation

Changed default camera for `ID Scan` and `Document Scan` submodules in `Video Selfie` to back-facing camera

Disabled `Questions` and `Voice Consent` in `Video Selfie` by default

Added `setAssistedOnboardingEnabled()` to `SelfieScan.Builder` and `VideoSelfie.Builder` to enable assisted onboarding (use back-facing camera for all camera modules). For `Selfie Scan` module, this is equivalent to using `setCameraFacing(CameraFacing.BACK)`. Similarly for `Video Selfie`, it sets camera facing for all submodules to `CameraFacing.BACK`.

Added Submit Only SDK mode

Video Selfie now uses H264 codec, if supported by the device. This fixes Video Selfie recording only black screen on some devices.

Fixed issue with camera in Video Selfie on Android 5.0

## Version 5.6.0   [Skip link to Version 5.6.0](https://developer.incode.com/docs/changelog\#version-560)

Added back camera support for ID and Document scan in VS

Added `MachineLearningConsent` module

Implemented addNOM151Archive non-UI API call

Increased b3nediktRestring library version to 5.2.1

## Version 5.5.0   [Skip link to Version 5.5.0](https://developer.incode.com/docs/changelog\#version-550)

Added configurable maximum length for Video Selfie recording

Fixed `Geolocation` module to properly show city/state/country

Camera speed improvements

ID auto-capture improvements: Camera now captures two frames instead of one, and uses the one with better quality

Added allowFaceAuthModeFallback parameter to `SelfieScan` module (allows Login to obtain face template from server, if not present on the device)

Fixed VideoSelfie not uploading video when an error occurs under `VideoSelfie.audioDisabled` true + audio permission not granted

## Version 5.4.0   [Skip link to Version 5.4.0](https://developer.incode.com/docs/changelog\#version-540)

Fixed crash in Login when using reduced core-light variant

Fixed null interviewId when resuming session with IncodeWelcome.setupOnboardingSession()

Added support for using the SDK in app compiled with Java 8

Added adaptation for selfie scan on tablet device

Added server mask check in login

Added watchlist module

Improved one to one local

## Version 5.3.0   [Skip link to Version 5.3.0](https://developer.incode.com/docs/changelog\#version-530)

Fixed issue with signature upload error when using white (`#FFFFFF`) stroke

Added support for [Dynamic Localization](https://developer.incode.com/docs/user-guide-customization#32-dynamic-localization)

Fixed network call attempt with apiKey for External Token init

Added login improvements: mask check, results visible in the dashboard

Added support for huawei location services

Fixed issue with IdScanResult.idImagePath file not found

Added local mask model usage instead of downloading the model from S3 bucket in runtime

Added no-audio configuration in VideoSelfie

## Version 5.2.1   [Skip link to Version 5.2.1](https://developer.incode.com/docs/changelog\#version-521)

Fixed memory leaks

Added Auto-capture timeout setting for Selfie Scan in Capture Only mode

Fixed: Signature module - Disabled drawing after submitting

## Version 5.2.0   [Skip link to Version 5.2.0](https://developer.incode.com/docs/changelog\#version-520)

Added 1 to N login

Added Auto-capture timeout setting for Capture Only mode

Exit dialog customizations

Fixed issue with disappearing Need Help button

## Version 5.1.0   [Skip link to Version 5.1.0](https://developer.incode.com/docs/changelog\#version-510)

Added MinVideoLengthRequired config to allow videos shorter than 30 seconds in VideoSelfie module

All fixes and updates from 4.12.4

# Version 5.0.0   [Skip link to Version 5.0.0](https://developer.incode.com/docs/changelog\#version-500)

Introduced new way to configure flows and setup onboarding sessions. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide)

`VideoSelfie` module now works in capture only mode

Introduced new way to initialize the SDK without the API URL and API KEY in capture only mode. Please refer to the guide [here](https://developer.incode.com/docs/user-guide-capture-sdk)

Removed automated license check from capture only mode to avoid network calls

Improved logic for handling location permission requests on Android 12 and above

Refactoring and bug fixes

## Version 4.12.4   [Skip link to Version 4.12.4](https://developer.incode.com/docs/changelog\#version-4124)

Fixed issue with Continue button not appearing in Tutorials on some devices

Fixed issue where the Back ID scan gets skipped in Second ID module

Fixed issues with Video Selfie ID scan

Fixed issue with Conference on Android 12 & 13

## Version 4.12.3   [Skip link to Version 4.12.3](https://developer.incode.com/docs/changelog\#version-4123)

Improved Video Selfie ID scan

## Version 4.12.2   [Skip link to Version 4.12.2](https://developer.incode.com/docs/changelog\#version-4122)

Fixed image distortion problem with back-camera on model SMA135

Updated okhttp3 logging interceptor

## Version 4.12.1   [Skip link to Version 4.12.1](https://developer.incode.com/docs/changelog\#version-4121)

Changed default value of waitForTutorial to false

Added customizable signature ink color

Migrating Geolocation and some base files to Kotlin

Updated third party libraries

## Version welcome 4.12.0 & core-light 2.2.0   [Skip link to Version welcome 4.12.0 & core-light 2.2.0](https://developer.incode.com/docs/changelog\#version-welcome-4120--core-light-220)

Introduced download and install time optimizations

## Version 4.11.1   [Skip link to Version 4.11.1](https://developer.incode.com/docs/changelog\#version-4111)

Added null checks for data repository access at OnLifecycleEvents

## Version 4.11.0   [Skip link to Version 4.11.0](https://developer.incode.com/docs/changelog\#version-4110)

Updated compile sdk version

Removed TensorFlow dependency and related files

Refactored Phone Number Module into Kotlin

Fixed document scan upload error when used local image

## Version 4.10.2   [Skip link to Version 4.10.2](https://developer.incode.com/docs/changelog\#version-4102)

Refactoring

Fixed ID Uploading/Processing screen to use `@color/onboard_sdk_BackgroundWindow` background color instead of hard-coded white

## Version 4.10.0   [Skip link to Version 4.10.0](https://developer.incode.com/docs/changelog\#version-4100)

Handling of IDProcess result

Changed blur threshold default value to 0.75

Added logic for removing duplicated ProcessId module

Fix for back id tutorial condition

Fix for broken attach-flows logic

Added raw JSON for UserScore into the UserScoreResult

Migrated some modules and UI elements to Kotlin

Updated HBRecorder dependency to latest version (Fixes issues with Android 12)

## Version 4.9.0   [Skip link to Version 4.9.0](https://developer.incode.com/docs/changelog\#version-490)

Added ability to customize Selfie Scan circle outline color

Added ability to display Need Help screens in vertical mode

Fixed Need Help screens to use proper background color (`onboard_sdk_BackgroundWindow`)

Fixed code for parsing `getLibraries` API response

Fixed Xamarin bindings

## Version 4.8.0   [Skip link to Version 4.8.0](https://developer.incode.com/docs/changelog\#version-480)

Added secondary text for Scan ID title

Added customizable thresholds for ID Glare and Blurriness checks (Added `setIdGlareThreshold` and `setIdBlurThreshold` methods to `OnboardingConfigBuilderV2`)

Added ability to customize Selfie Scan screen background color

## Version 4.7.2   [Skip link to Version 4.7.2](https://developer.incode.com/docs/changelog\#version-472)

Fixed crash when pressing back after denying Camera permission

Fixed NaN when parsing ResponseProcessFace

Fixed unnecessary `omni/update` call when `omni/addFace` fails

## Version 4.7.1   [Skip link to Version 4.7.1](https://developer.incode.com/docs/changelog\#version-471)

Added customizable Scan Feedback Text

Added customizable Manual Capture Instructions Text

## Version 4.7.0   [Skip link to Version 4.7.0](https://developer.incode.com/docs/changelog\#version-470)

Added new individual style for Need help manual capture button

Added `OnboardingConfigV2.setShowExitConfirmation()` to enable configurable exit confirmation dialog

Added screen name to event values on BACKGROUND and USER\_CANCELLED events

Added customizable help more subtexts

Added customizable id capture feedback background color

Added continue button string resource per screen

Fixed continue button disabled in Document Scan Tutorial

## Version 4.6.1   [Skip link to Version 4.6.1](https://developer.incode.com/docs/changelog\#version-461)

Fixed bug with running ID scan on emulator which interrupted the flow

Fixed bug in start session which caused new session to be generated even when interviewId is provided.

## Version 4.6.0   [Skip link to Version 4.6.0](https://developer.incode.com/docs/changelog\#version-460)

Added exit confirmation dialog

Added possibility to initialize SDK with Token (No ApiKey Init)

Added option to hide manual capture review photo screen

Fixed OnErrorNotImplementedException in takeCameraPicture() method

Bug fixes

## Version 4.5.0   [Skip link to Version 4.5.0](https://developer.incode.com/docs/changelog\#version-450)

Added `onEvent()` callback to `IOnboardingListenerV2` to track analytic Events locally

Prevent double-clicking buttons

Fixed Video Selfie video not uploaded in some cases

Fixed Video Selfie showing wrong feedback message

## Version 4.4.1   [Skip link to Version 4.4.1](https://developer.incode.com/docs/changelog\#version-441)

Added option to show Close Button on all screens (Default: off)

Enabled customization for Need help

Replaced ID and SELFIE balloon images in FaceMatch module with TextView (Custom fonts are applied automatically now)

Fixed issue with missing back ID scan in certain use cases

Prevent Continue button from being clicked twice on Tutorial screens

Fixed issue with flow interrupting after ID/Passport scan

Fixed issue with rotation of some Documents on Photo Review screen

Fixed issue with Submit button on Captcha screen

## Version 4.4.0   [Skip link to Version 4.4.0](https://developer.incode.com/docs/changelog\#version-440)

Added support for OTHER\_DOCUMENT\_3 in DocumentScan module

## Version 4.3.1   [Skip link to Version 4.3.1](https://developer.incode.com/docs/changelog\#version-431)

Bug fixes

Javadoc added

## Version 4.3.0   [Skip link to Version 4.3.0](https://developer.incode.com/docs/changelog\#version-430)

SDK Version is now sent to the server and it is visible on the Dashboard

`DocumentScan` module updates (allow file upload for all DocumentTypes)

Fixed compile-time error due to missing interface

Fixed `onUserCancelled()` callback not called in some cases

Removed jCenter repository

Bug fixes

## Version 4.2.0   [Skip link to Version 4.2.0](https://developer.incode.com/docs/changelog\#version-420)

Added non-UI API for processing Labor History

Added non-UI API for processing Payment Proof

Added non-UI API for getting Payment Proof Info

Updated `QRScan` module to send raw data to server

`Captcha` module improvements

Fixed empty values being sent in `Captcha` module

Fixed issue with feedback messages being too small

Fixed an issue in Signature module where clicking Done multiple times could cause an error

Fixed `onOnboardingSessionCreated()` callback called on the wrong thread

Fixed `IdResults` class missing

Fixed SDK config not set properly when using sections API

Bug fixes

## Version 4.1.1   [Skip link to Version 4.1.1](https://developer.incode.com/docs/changelog\#version-411)

Added missing `croppedFacePath` to `IdScanResult`

## Version 4.1.0   [Skip link to Version 4.1.0](https://developer.incode.com/docs/changelog\#version-410)

Added non-UI API for ID processing

`Captcha` module UI updates

Bug fixes

# Version 4.0.0   [Skip link to Version 4.0.0](https://developer.incode.com/docs/changelog\#version-400)

Separated front and back `IdScan` modules. Check out [Migration Guide](https://developer.incode.com/docs/migration-guide) for details.

Updates to SDK results: nameMatched in FaceMatchResult

VideoSelfie UX updates: White background and increased screen brightness for Selfie step

Refactoring and bug fixes: build process adapted for easier crowd testing distribution, fix for user already exists always shown

## Version 3.6.0   [Skip link to Version 3.6.0](https://developer.incode.com/docs/changelog\#version-360)

Added `geolocation(@NonNull Context context, @Nullable String interviewId, GeolocationListener geolocationListener)` API which allows running the `Geolocation` module without showing Incode's UI

## Version 3.5.0   [Skip link to Version 3.5.0](https://developer.incode.com/docs/changelog\#version-350)

Added `faceMatch(String interviewId, IdCategory idCategory, @NonNull FaceMatchListener faceMatchListener)` API which allows doing a face match without showing Incode's UI

Added a static label to the scan ID screen to show which side of the ID is being scanned

Updates to SDK results: Unencrypted Base64 image in SelfieScanResult, ExistingUser and ExistingInterviewId in FaceMatchResult, GovernmentValidationResults in UserScoreResult

Bug fixes

## Version 3.4.0   [Skip link to Version 3.4.0](https://developer.incode.com/docs/changelog\#version-340)

Moved liveness and face recognition models into standalone libraries - Make sure to check the [Migration Guide](https://developer.incode.com/docs/migration-guide)

Added possibility to use on-device liveness while enrolling face

Face detection improvements

Bug fixes

## Version 3.3.1   [Skip link to Version 3.3.1](https://developer.incode.com/docs/changelog\#version-331)

Added support for OTHER\_DOCUMENT\_1 and OTHER\_DOCUMENT\_2 in DocumentScan module

Added support for usage of Selfie in VideoSelfie from Dashboard flow

Added sending device fingerprint within `setOnboardingSession()`

Added `getFrontIdBase64()` and `getBackIdBase64()` to IdValidationResult

Added ability to disable emulator and root detection for debugging purposes

Added `setExternalId(String externalId)` method to `OnboardingConfigV2`

Updated UserConsent module

Added ID processing to VideoSelfie module

Fixed missing `SelfieMode` enum

UI improvements

Bug fixes

## Version 3.3.0   [Skip link to Version 3.3.0](https://developer.incode.com/docs/changelog\#version-330)

Medical card scanning and validation

Selfie resolution step-up to get better liveness results

Doing face recognition between the selfie taken in video selfie and the enrolled face template even if liveness failed for the selfie taken in video selfie

Bug fixes

## Version 3.2.1   [Skip link to Version 3.2.1](https://developer.incode.com/docs/changelog\#version-321)

Fixed crash in Conference module

Bug fixes

## Version 3.2.0   [Skip link to Version 3.2.0](https://developer.incode.com/docs/changelog\#version-320)

Increased `targetSdkVersion` and `compileSdkVersion` from 29 to 30

Added `setInterviewId(String interviewId)` method to `OnboardingConfigV2.OnboardingConfigBuilderV2`

Added ability to start Onboarding SDK for an existing `interviewId` (which can be set in `OnboardingConfigV2`)

Bug fixes

## Version 3.1.0   [Skip link to Version 3.1.0](https://developer.incode.com/docs/changelog\#version-310)

Referred to executive screen redesign

API refactor: Individual API calls are deprecated, please check [Migration Guide](https://developer.incode.com/docs/migration-guide) and [User Guide](https://developer.incode.com/docs/user-guide#advanced-usage) for migrating to sections API

Updated to Gradle plugin 4.2.0 and Gradle Wrapper 6.9.1

Prevent false positive in hook detector when using Realm in a React Native app

Email module added

Implemented an API to disable a check which detected hooking framework on the device

New ID realtime check introduced - Check if front of the ID is shown as back. Disabled by default, can be turned on when initializing `IdScan` module.

Bug and UI fixes

## Version 3.0.1   [Skip link to Version 3.0.1](https://developer.incode.com/docs/changelog\#version-301)

\\2021-23-08

Added disableHookCheck API

# Version 3.0.0   [Skip link to Version 3.0.0](https://developer.incode.com/docs/changelog\#version-300)

New customization options - Make sure to check the [Migration Guide](https://developer.incode.com/docs/migration-guide) and [Customization Guide](https://developer.incode.com/docs/user-guide-customization)

Fix for not sending finish status

Added IncodeWelcome interface to enable easier testing. Check IIncodeWelcome.java and IncodeWelcomeAPI.java

Added full frame photo in SelfieScan result

## Version 2.10.1   [Skip link to Version 2.10.1](https://developer.incode.com/docs/changelog\#version-2101)

Added detailed event logging for Video Selfie

Fixed `/omni/finish-status` called multiple times in certain cases

Fixed `VideoSelfie` module sometimes sending one extra selfie scan attempt

Hotfix: Fixed issue with `attachFlow` endpoint

Bug fixes

## Version 2.10.0   [Skip link to Version 2.10.0](https://developer.incode.com/docs/changelog\#version-2100)

Fixed broken Opentok dependency

Modularized VideoSelfie API: Added possibility to turn on/off ID scan, address proof scan, questions and voice consent.

Implemented second ID feature: IDScan and FaceMatch modules can be added to the flow twice and parametrized with second ID category.

Incode styleables and file provider renamed to support internal naming convention and avoid possible duplicate names with other libraries

## Version 2.9.0   [Skip link to Version 2.9.0](https://developer.incode.com/docs/changelog\#version-290)

Made CTA buttons more uniform

Improved customization of CTA buttons

Added customization of "Need Help" button

Added `Customer Token` to `Approve` result

Error messages refactor

Face login feature changes:

- Face recognition in server mode now sends photo to the server (instead of locally generated template)
- API was adapted accordingly: enableFaceLogin() was replaced with enableLocalFaceRecognition()

Portuguese translations

Rebranding INE to government

Added new validation module: `governmentOcrValidation`

Bug fixes

## Version 2.8.1   [Skip link to Version 2.8.1](https://developer.incode.com/docs/changelog\#version-281)

\\2021-16-07

## Version 2.8.0   [Skip link to Version 2.8.0](https://developer.incode.com/docs/changelog\#version-280)

Added new ID detection model with on device classification, glare and sharpness checks

Added model encryption

Removed unused ExcludedValidationModules API

Implemented restart of the selfie scan if app is sent to background/foreground during the selfie step

Fixed UX and liveness problems in selfie scan on phones with narrow horizontal view angle (e.g. Samsung s9+)

## Version 2.7.1   [Skip link to Version 2.7.1](https://developer.incode.com/docs/changelog\#version-271)

\\2021-21-06

## Version 2.7.0   [Skip link to Version 2.7.0](https://developer.incode.com/docs/changelog\#version-270)

Added CURP validation

Added INE scraping

Bug fixes

## Version 2.6.1   [Skip link to Version 2.6.1](https://developer.incode.com/docs/changelog\#version-261)

Added extendedOcrJsonData field to OCRData

Bug fixes

## Version 2.6.0   [Skip link to Version 2.6.0](https://developer.incode.com/docs/changelog\#version-260)

Changes to `IncodeWelcome.startFaceMatch()` \- Make sure to check the [Migration Guide](https://developer.incode.com/docs/migration-guide)

API update: Possibility to set custom fields in onboarding session

Implemented Face Detection for devices without Google Services support

Bug and crash fixes

## Version 2.5.1   [Skip link to Version 2.5.1](https://developer.incode.com/docs/changelog\#version-251)

Optimized resources in favor of size

API update: Possibility to set customer token for login feature

API update: Added binary face match and liveness results for clarity, simplicity and alignment with iOS

Small UI improvements

Bug and crash fixes

## Version 2.5.0   [Skip link to Version 2.5.0](https://developer.incode.com/docs/changelog\#version-250)

Changes to `ApproveListener` \- Make sure to check the [Migration Guide](https://developer.incode.com/docs/migration-guide)

Replaced Tutorial videos with Lottie animations - Make sure to check the [Migration Guide](https://developer.incode.com/docs/migration-guide)

Updated SDK to allow mocking of Results and Listener classes (for automated testing)

Prevent SDK from running on a real device when `Test Mode` is enabled

Bug fixes

## Version 2.4.2   [Skip link to Version 2.4.2](https://developer.incode.com/docs/changelog\#version-242)

Added new fields to OCRData

Bug fixes

## Version 2.4.1   [Skip link to Version 2.4.1](https://developer.incode.com/docs/changelog\#version-241)

Moved network security configuration to app level

Bug fixes

## Version 2.4.0   [Skip link to Version 2.4.0](https://developer.incode.com/docs/changelog\#version-240)

Capture Only mode

Moved 'queueName' parameter from Conference module to OnboardingConfigV2

Bug fixes

## Version 2.3.5   [Skip link to Version 2.3.5](https://developer.incode.com/docs/changelog\#version-235)

OMNI rebranding

Selfie scan defaults to manual capture if photo is not taken automatically

Help feature in ID scan

Informing the user about the number of ID scan retries

Analytics events updates

Added intro module for educating users about the process and to help with measuring conversion

Added onGeolocationUnavailable() callback

Using server configuration for auto capture timeouts and upload retries

Bug fixes

## Version 2.3.4   [Skip link to Version 2.3.4](https://developer.incode.com/docs/changelog\#version-234)

Added analytics events

Added PDF/Image upload for Proof of Address documents

Implemented a mechanism to inform the server that the onboarding is complete from the client side

Fix for SDK not returning result after unsuccessful processing ID calls

Implemented new UI state after 3rd unsuccessful ID upload

Model download disabled by default. Customers can enable it through SDK.

Bug fixes

## Version 2.3.3   [Skip link to Version 2.3.3](https://developer.incode.com/docs/changelog\#version-233)

Emulator support updates: EMULATOR\_DETECTED as `FaceMatch` module result, added missing OCR data fields

## Version 2.3.2   [Skip link to Version 2.3.2](https://developer.incode.com/docs/changelog\#version-232)

Added setOnboardingSession() API to allow continuing the existing onboarding even after app uninstall

Added dummy OCR data to ID scan and Document scan result in case when emulator is detected

## Version 2.3.1   [Skip link to Version 2.3.1](https://developer.incode.com/docs/changelog\#version-231)

Enabled emulator support in test SDK mode

## Version 2.3.0   [Skip link to Version 2.3.0](https://developer.incode.com/docs/changelog\#version-230)

Sending parsed address from `Geolocation` module to server

Optional dependency for conference

Dynamic delivery mechanism implemented for big ML resources

Downloading video selfie random questions from the server

ISO country code for specifying regions instead of a type

Bug fixes

## Version 2.2.12   [Skip link to Version 2.2.12](https://developer.incode.com/docs/changelog\#version-2212)

POA capture improvements

ID capture improvements

Selfie capture improvement

Signature API extended to accept tittle and subtitle

Bug fixes

## Version 2.2.11   [Skip link to Version 2.2.11](https://developer.incode.com/docs/changelog\#version-2211)

Fix for Canadian passport

## Version 2.2.10   [Skip link to Version 2.2.10](https://developer.incode.com/docs/changelog\#version-2210)

Introduced Canada region

## Version 2.2.9   [Skip link to Version 2.2.9](https://developer.incode.com/docs/changelog\#version-229)

Video Selfie 2.0:

- Liveness check
- Proof of Address
- Random questions
- Minimum video length of 30 seconds

Bug fixes

## Version 2.2.8   [Skip link to Version 2.2.8](https://developer.incode.com/docs/changelog\#version-228)

Video recording improvements - size optimization and uninterrupted recording

Optional Proof Of Address Statement step in Video Selfie

Video Selfie design updates

Security updates

Bug fixes

## Version 2.2.7   [Skip link to Version 2.2.7](https://developer.incode.com/docs/changelog\#version-227)

`Geolocation` module implemented

Bug fixes

## Version 2.2.6   [Skip link to Version 2.2.6](https://developer.incode.com/docs/changelog\#version-226)

Video selfie feature implemented

## Version 2.2.5   [Skip link to Version 2.2.5](https://developer.incode.com/docs/changelog\#version-225)

Upgrade mechanism for library download

## Version 2.2.4   [Skip link to Version 2.2.4](https://developer.incode.com/docs/changelog\#version-224)

Bug fixes

## Version 2.2.3   [Skip link to Version 2.2.3](https://developer.incode.com/docs/changelog\#version-223)

Fixed missing classes due to DexGuard config

## Version 2.2.2   [Skip link to Version 2.2.2](https://developer.incode.com/docs/changelog\#version-222)

Fixed Proof of Address scan

## Version 2.2.1   [Skip link to Version 2.2.1](https://developer.incode.com/docs/changelog\#version-221)

Separate address fields as part of the OCR result

Fixed broken signature bug

## Version 2.2.0   [Skip link to Version 2.2.0](https://developer.incode.com/docs/changelog\#version-220)

Added public methods for starting individual SDK modules

Refactoring - moved and renamed SDK interface classes. Please refer to the [Migration Guide](https://developer.incode.com/docs/migration-guide-legacy#2-movedrenamed-classes) for details.

## Version 2.1.6   [Skip link to Version 2.1.6](https://developer.incode.com/docs/changelog\#version-216)

Added more user information to OCRData

## Version 2.1.5   [Skip link to Version 2.1.5](https://developer.incode.com/docs/changelog\#version-215)

Improved ID capture photo quality

ID capture design improvements

ID and selfie tutorials design improvements

Selfie feedback messages changes

Conference chat feature implemented

Added setWaitForTutorials() method for IdScan and SelfieScan modules

Bug fixes

## Version 2.1.4   [Skip link to Version 2.1.4](https://developer.incode.com/docs/changelog\#version-214)

Optional captcha verification in retake video conference SDK API

Styles updated: reverted to text color white for base button style

Bug fixes

## Version 2.1.3   [Skip link to Version 2.1.3](https://developer.incode.com/docs/changelog\#version-213)

Retake video-conference with specific token

`Captcha` module retry/fail mechanism implemented

Bug fixes

## Version 2.1.2   [Skip link to Version 2.1.2](https://developer.incode.com/docs/changelog\#version-212)

Added UI for Approval module

Added option to perform Face Match inside Approval module

Added Legal screen

Refactoring to allow for some upcoming features

Bug fixes

## Version 2.1.1   [Skip link to Version 2.1.1](https://developer.incode.com/docs/changelog\#version-211)

Allowing download-set API to be used in on-premise environment

Passport flow improvements

## Version 2.1.0   [Skip link to Version 2.1.0](https://developer.incode.com/docs/changelog\#version-210)

Capture ID and capture selfie offline APIs. APIs perform capture when local conditions for the capture are met and return photos

Passport scanning and validation flow

Download libraries control exposed through new APIs

Bug fixes

# Version welcome 2.0.0 & core-light 1.4.0   [Skip link to Version welcome 2.0.0 & core-light 1.4.0](https://developer.incode.com/docs/changelog\#version-welcome-200--core-light-140)

Using new server API

Major SDK refactor to allow more flexibility, easier configuration and support for reorderable components

INE validation feature

QR scan

New tutorials

New bubble animation while processing ID

Result screen updates

App navigation improvement

Report feature

User consent feature

Liveness call encryption

Eyes closed detection

Multiple faces detection

Face angle is 20 by default instead of 15

Fixes for lower end device

Bug fixes

Smartlook screen recording analytics (off by default)

Google forms in the end of the flow

Video recording prototype feature

Contract acceptance feature

Captcha feature

Speech to text prototype feature

Runtime download of native libraries

## Version 1.1.2   [Skip link to Version 1.1.2](https://developer.incode.com/docs/changelog\#version-112)

Enable/disable logs through `setLoggingEnabled` method of `IncodeWelcome.Builder`

Displaying valid interviewer name during video conference

Added more info when sending back results after face scan

Added callbacks through `OnboardingListener` once signature and proof of address are captured

## Version 1.1.1   [Skip link to Version 1.1.1](https://developer.incode.com/docs/changelog\#version-111)

Bugfixes

## Version 1.1.0   [Skip link to Version 1.1.0](https://developer.incode.com/docs/changelog\#version-110)

Introduced `core` Module which has to be added as a dependency together with `welcome` module - This change allows Incode Welcome SDK to be used together with Incode Hello SDK

Exposed `getUserScore` API to fetch results from `IdScan`, Liveness and Face Recognition checks.

Exposed `approve` API to approve users either by using Incode's scoring mechanism or explicitly approving them regardless of the scoring mechanism.

## Version 1.0.8   [Skip link to Version 1.0.8](https://developer.incode.com/docs/changelog\#version-108)

Improved ID Scan performance

Improved Selfie capture UX

Bugfixes`OnboardingListener` now has `onEstimatedWaitingTime` callback which returns estimated waiting time in seconds

## Version 1.0.7   [Skip link to Version 1.0.7](https://developer.incode.com/docs/changelog\#version-107)

`OnboardingSessionListener` and its `onSuccess` callback now returns both `token` and `interviewId`

`OnboardingListener` now has `onOnboardingSessionCreated` callback that returns `token` and `interviewId`

`VideoConferenceListener` now has `onEstimatedWaitingTime` callback which returns estimated waiting time in seconds

`OnboardingListener` now has `onEstimatedWaitingTime` callback which returns estimated waiting time in seconds

## Version 1.0.6   [Skip link to Version 1.0.6](https://developer.incode.com/docs/changelog\#version-106)

Added OCR data inside IdValidationResult.

OnboardingListener now has 2 more callbacks - onIdValidationCompleted and onQueuePositionChanged

VideoConferenceListener now has onQueuePositionChanged callback

## Version 1.0.5   [Skip link to Version 1.0.5](https://developer.incode.com/docs/changelog\#version-105)

Fixed Camera crash on Selfie screen

Address Validation step can now be skipped through OnboardingConfig

## Version 1.0.4   [Skip link to Version 1.0.4](https://developer.incode.com/docs/changelog\#version-104)

Fixed obfuscation issue

## Version 1.0.3   [Skip link to Version 1.0.3](https://developer.incode.com/docs/changelog\#version-103)

Enabled Theme customization

Enabled custom text messages

'How To' ID tutorials are now optional

Extended IncodeWelcome Builder API to specify custom SSL configuration for on-premise servers

Choose if you wish to enable or disable the call when starting the video conference

## Version 1.0.2 - 2019-Sep-09   [Skip link to Version 1.0.2 - 2019-Sep-09](https://developer.incode.com/docs/changelog\#version-102---2019-sep-09)

Bug fixes

initNewOnboardingSession now expects useConference parameter

startIdValidation now expects idAutoCaptureTimeout parameter

## Version 1.0.1 - 2019-Sep-05   [Skip link to Version 1.0.1 - 2019-Sep-05](https://developer.incode.com/docs/changelog\#version-101---2019-sep-05)

Bug fixes

Optimized ID capture for getting better quality ID photos

Enabled relative paths for URL

## Version 1.0.0 - 2019-July-24   [Skip link to Version 1.0.0 - 2019-July-24](https://developer.incode.com/docs/changelog\#version-100---2019-july-24)

Initial release

Updatedabout 1 month ago

* * *

### What’s Next

- [Migration Guide](https://developer.incode.com/docs/migration-guide)

Did this page help you?

Yes

No

Copy Page
