Upgrade for compliance
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).
📌 Recommended version alignment note
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 sections of each release's notes.
Version 5.49.0 - 2026-June-16
API Changes (refer to Migration Guide for details)
- Removed
IncodeWelcome.getReport(interviewId, ReportListener), theReportListenerinterface, and theResponseEventReportclass. The backing/omni/get/reportbackend endpoint is no longer supported and reports cannot be generated through the SDK. Please refer to the Migration Guide for details. {/* ENG-46451 */} - Renamed
IncodeColorPalette.neutraltoneutralLightandIncodeColorPalette.blacktoneutralDark, including the matching JSON keys, to align with iOS so a single theme JSON works across both platforms. {/* ENG-46620 */}
Added (ALL modes)
- Updated
core-lightmodule 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. {/* ENG-46789 */} - Added missing Javadocs for
SelfieScanResultfields andSTATUS_*constants, including@sincelinks to the introducing or deprecating SDK versions where available. {/* ENG-42388 */} - Added consecutive-frame debouncing for blur and glare real-time feedback in the
IdScanmodule so a single bad frame no longer flashes the error pill. Aligns Android with iOS and Web. {/* ENG-37402 */} - Added
Document CaptureV2 module. Available when the V2 feature gate is enabled. {/* ENG-39285 */} - Added
DocumentScan.Builder.setDocumentSources(...)to configure which submission methods (CAMERA,FILE_UPLOAD,IMAGE_UPLOAD) appear on theDocument Capturechooser. Defaults to all three. For document types that don't accept PDFs,FILE_UPLOADis dropped only when another source remains; configuring exactlyFILE_UPLOADon 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 viasetShowDocumentProviderOptions(true); with that chooser disabled, V1 remains camera-only. {/* ENG-46421 */} - Added
EmailV2 module. Available when the V2 feature gate is enabled. {/* ENG-32743 */} - Refreshed the
CombinedConsentmodule UI to align with the latest Incode design and added dark-mode support. {/* ENG-45462 */}
Added (STANDARD mode only)
- Added
Custom WatchlistV2 module. Available when the V2 feature gate is enabled, with dark-mode support. {/* ENG-45608 */}
Fixed (ALL modes)
- Fixed the first streaming recording sometimes missing at onboarding start due to a token timing issue. {/* ENG-47440 */}
- Fixed
Face Loginreopening the camera and capturing a second time after a successful login flow completed. {/* ENG-43725 */} - 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
Finalizeevent, the SDK now salvages any partial MP4 already written to disk and queues it for upload instead of dropping the recording. {/* ENG-41903 */} - Security improvements. {/* ENG-30869, ENG-45696, ENG-45860, ENG-46966, ENG-47817 */}
- Improved accessibility behavior for phone input field. {/* ENG-38110 */}
- Fixed a crash in the
CombinedConsentmodule when system font size is set to maximum. {/* ENG-45274 */} - Fixed
SelfieScanauto-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. {/* ENG-45095 */} - Fixed the camera preview being visible on the status bar / notification line during
SelfieScan,Face Authentication, andFace Logincapture. {/* ENG-42958 */} - The SDK no longer contributes an
io.sentry.proguard-uuid<meta-data>entry to the host app's merged manifest. {/* ENG-46214 */} - Fixed the
IdScanV2 module to respect the configuration when thesetShowRetakeScreenForManualCapture()method in theIdScan.Builderclass is set tofalse. {/* ENG-44338 */} - Fixed a
Duplicate classbuild failure when integrating theonboardSDK alongside another library whose obfuscated classes occupy the root JVM package. {/* ENG-45643 */} - Fixed unexpected focus jumps in
Dynamic Formsfields. {/* ENG-43908 */} - 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. {/* ENG-45176 */} - Rewrote the deprecation messages on
IncodeWelcome.fetchAllFlows(),IncodeWelcome.fetchFlow(),IncodeWelcome.downloadLibraries(),IncodeWelcome.isLibrariesReady(),IncodeWelcome.subscribeForLibrariesReady(), and theLibraryDownloadErrorenum to name the recommended replacements. {/* ENG-45176 */} - Fixed the
IdScanV2 success screen displaying "Continue" instead of "Let's continue" on the label shown after a successful ID capture. {/* ENG-46828 */} - 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. {/* ENG-44349 */} - 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. {/* ENG-47577 */} - Fixed a crash in the
Video Selfiemodule that occurred when the app was minimized while the recorded video was uploading, which left the session marked as Not Completed. {/* ENG-48004 */}
Deprecations (ALL modes)
- Deprecated
IncodeException.DeviceEnvironmentExceptionandIncodeException.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. {/* ENG-47418 */} - Deprecated
SelfieScan.FaceAuthMode.SERVER. This enum case should not be used for new integrations. Use the FaceAuthentication module instead.SelfieScan.FaceAuthMode.LOCAL(offline Face Login) is not affected. {/* ENG-42904 */} - Deprecated
DocumentScan.Builder.setShowTutorials(...)andDocumentScan.Builder.setShowDocumentProviderOptions(...)for V2. Both are ignored by the V2Document Capturemodule — usesetDocumentSources(...)to configure the chooser. Still honored in V1. {/* ENG-46421 */}
Updated dependencies
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20->org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.25{/* ENG-46558 */}org.jetbrains.kotlin:kotlin-reflect:1.9.20->org.jetbrains.kotlin:kotlin-reflect:1.9.25{/* ENG-46558 */}org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20->org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25{/* ENG-46558 */}org.jetbrains.kotlin:kotlin-serialization:1.9.20->org.jetbrains.kotlin:kotlin-serialization:1.9.25{/* ENG-46558 */}com.google.devtools.ksp:1.9.20-1.0.14->com.google.devtools.ksp:1.9.25-1.0.20{/* ENG-46558 */}- kotlinCompilerExtensionVersion
1.5.4->1.5.15{/* ENG-46558 */} com.guardsquare:dexguard-gradle-plugin:9.14.2->com.guardsquare:dexguard-gradle-plugin:9.14.3{/* ENG-46966 */}
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/reportendpoint 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. {/* ENG-46451 */} - 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. {/* ENG-45855 */}
- Fixed the ID capture
captureAttemptFinishedevent being reported with the wrong name in UXV2 frame-logging flows, so the event now matches the value emitted by all other flows. {/* ENG-47303 */}
Module Versions
core-light3.0.14nfc1.5.5
Version 5.48.0 - 2026-May-22
Added (ALL modes)
- Added Hebrew (
he-IL) localization for theonboardSDK module. Passhe-ILtoCommonConfig.Builder.setLocalizationLanguage(...)to render the SDK UI in Hebrew, and toSessionConfig.Builder.setLanguage(...)to enable Hebrew voice-consent transcription. (Bothhe-ILand the legacy Java-stylehe_ILform are accepted bysetLocalizationLanguage. The Android resource folder uses the legacy ISO 639-1 qualifiervalues-iw/internally — this is a platform requirement and not an integrator-facing identifier.) {/* ENG-43243 */} - 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 and face capture design guidelines. Customer-overridden animation resources are automatically detected and left unchanged. {/* ENG-42745 */} - Local Room databases are now encrypted at rest using SQLCipher. Existing unencrypted databases are automatically migrated to encrypted format on first access. See Licenses for the SQLCipher attribution that must be reproduced if your app ships an open-source licenses screen. {/* ENG-38849 */}
- Added a persistent dim overlay around the silhouette on the
SelfieScanV2 manual capture screen. {/* ENG-43240 */} - Added
PhoneV2 module. Available when the V2 feature gate is enabled. {/* ENG-40430 */}
Added (STANDARD mode only)
- Added support for verifying identity using Google Wallet IDs within the
IdScanmodule, via the new optionalcom.incode.sdk:walletsdependency. Enable per-module withIdScan.Builder.setGoogleWalletIdEnabled(true), and switch between production and sandbox environments viaIncodeWelcome.Builder.setGoogleWalletEnvironment(...). The optionalwalletsmodule requiresminSdk28. {/* ENG-38379 */}
Fixed (ALL modes)
- Fixed an issue where Kotlin interface callbacks with default implementations in the
onboardmodule required empty overrides from Java integrators; they are now emitted as Javadefaultmethods and are optional overrides for both Kotlin and Java integrators. This includes the per-attemptSelfieScanListenerandIdScanListenercallbacks introduced in 5.47.0: {/* ENG-45401 */}SelfieScanListener.onSelfieScanReadySelfieScanListener.onSelfieScanAttemptCompletedIdScanListener.onIdScanReadyIdScanListener.onIdFrontAttemptCompletedIdScanListener.onIdBackAttemptCompleted
Face AuthenticationV2 module: FixedSelfieScan.Builder().setCaptureAttemptsnot being respected when the captured selfie did not match the identity provided viaCommonConfig.Builder().setFaceAuthenticationHint(...); the flow ended after the first attempt instead of allowing the configured number of retries. {/* ENG-41889 */}- Fixed button label clipping on long or translated strings:
IncodeButtonnow auto-sizes its text, shrinking the font before adding ellipsis, and wraps multi-word labels to two lines. {/* ENG-40699 */} - Security improvements. {/* ENG-43788 */}
- Fixed the verification-complete confirmation message in
ApproveActivityand the overall score inResultsActivity(theSHOW_RESULTSmodule) not being announced as accessibility headings by TalkBack. {/* ENG-44450 */} - Accessibility improvements in the
Dynamic Formsmodule. {/* ENG-43908 */} - Fixed
Loginflow rendering the legacy selfie tutorial instead of the V2 tutorial whenshowTutorialswas enabled. {/* ENG-40556 */} - Updated the
Proof of Addresstutorial screen design and improved the layout of the review screen. {/* ENG-43369 */} - 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. {/* ENG-40556 */} - Corrected typos, grammar, and British-English spellings in customer-facing Javadoc, KDoc, and Markdown documentation. {/* ENG-45177, ENG-45329 */}
- Fixed
SelfieScan.Builder.setLogo(...)not being applied to the toolbar on the V2 selfie capture screen. {/* ENG-45653 */} - Changed the default values of the
setHeadCoverCheckEnabled()andsetMaskCheckEnabled()methods totruein theSelfieScan.Builder. {/* ENG-44795 */} - Changed the default values of the
setHeadCoverCheckEnabled()andsetMaskCheckEnabled()methods totruein theVideoSelfie.Builder. {/* ENG-33210 */} - Fixed a Spanish localization typo on the camera permission screen:
Salir del processois nowSalir del proceso. {/* ENG-45754 */}
Fixed (STANDARD mode only)
- Fixed a
VideoSelfieActivitycrash when Android recreates the activity while the video selfie upload screen is being restored. {/* ENG-44567 */} - Fixed a rare crash (
FileNotFoundException/UndeliverableException) during selfie video upload whenSelfieScanVideoRecordVideo.mp4was missing or unflushed at upload time. Failures now route through the standard retry UI /SelfieScanListener.onErrorpath instead of crashing the flow. {/* ENG-45000 */}
Added dependencies
androidx.credentials:credentials:1.5.0(required only when using the new optionalwalletsmodule) {/* ENG-38379 */}androidx.credentials:credentials-play-services-auth:1.5.0(required only when using the new optionalwalletsmodule) {/* ENG-38379 */}net.zetetic:sqlcipher-android:4.6.1{/* ENG-38849 */}
Module Versions
core-light3.0.13nfc1.5.4wallets1.0.0 (new optional module)
Version 5.47.0 - 2026-May-07
Added (ALL modes)
- Updated
core-lightmodule to v3.0.12: incorporating libRecogKitAndroid.so v3.9.1; updating the on-device liveness model used bySelfieScanandFaceAuthentication(model-liveness-detection3.2.2) {/* ENG-42832 */} - Added
allAttemptsExhaustedflag toIdScanResultandSelfieScanResultindicating when capture or upload retries are no longer available. {/* ENG-41980 */} - Added per-attempt
IdScancallbacksonIdFrontAttemptCompleted/onIdBackAttemptCompletedtoIdScanListener(andIncodeWelcome.OnboardingListener). They fire after every individual capture attempt, including intermediate failures. The terminal attempt is signaled whenIdScanResult.allAttemptsExhaustedistrueor when the attempt succeeds. {/* ENG-44025 */} - Added per-attempt
SelfieScancallbackonSelfieScanAttemptCompletedtoSelfieScanListener(andIncodeWelcome.OnboardingListener). It fires after every individual selfie capture attempt, including intermediate failures. The terminal attempt is signaled whenSelfieScanResult.allAttemptsExhaustedistrueor when the attempt succeeds. {/* ENG-44025 */} - Added missing Javadocs for
IncodeWelcomeentry-point APIs. {/* ENG-42384 */}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 tapsSkip this stepin the V2 flow. When skippable, the flow continues; otherwise it ends withOnboardingListener.onError(andOnboardingListener.onGeolocationUnavailable). The flag is also wired up to the dashboard'sAllow user to skip geolocationtoggle for bothFlowsandWorkflowsconfigurations. {/* ENG-44725 */} - Updated the V2 Geolocation skip button label to read
Skip this stepwhenGeolocation.setSkippable(true)andQuit processwhenGeolocation.setSkippable(false), on both the permission-denied and location-unavailable screens. {/* ENG-44725 */} - Added
LocationPermissionDeniedException, raised by the V2Geolocationflow when the user exits from the permission-denied screen.GeolocationUnavailableExceptionis now reserved for the location-unavailable and max-retries exit paths. {/* ENG-44725 */}
Added (STANDARD mode only)
- Added an on-device face occlusion check available in
SelfieScan(V1 and V2) andFaceAuthentication. Configure it locally viasetFaceOcclusionEnabled(...)andsetFaceOcclusionSeverity(...)on the respectiveBuilderclasses, or from the dashboard'sisOcclusionEnabled/occlusionSeveritysettings for the respective modules. The feature requires the new optionalcom.incode.sdk:model-face-occlusiondependency. {/* ENG-42832 */} - Added the
setOnDeviceFaceResultsSubmissionEnabled()API to theSelfieScanV2 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. {/* ENG-42833 */}setOnDeviceFaceResultsSubmissionEnabled()requires E2EE, supports auto-capture only, and has other configuration constraints. See the Javadoc for more details. {/* ENG-42834 */}
- Implemented on-device age estimation in the
SelfieScanV2 module behindsetOnDeviceFaceResultsSubmissionEnabled(), available via the new optionalcom.incode.sdk:model-age-estimationdependency. {/* ENG-42956 */} - Added Digital ID validation for selected PDF files to reject uploads larger than 5 MB with an appropriate error state. {/* ENG-41833 */}
Fixed (ALL modes)
- Updated the SDK's internal encrypted storage to a more reliable, future-proof implementation. Existing data is migrated transparently on first launch after upgrade. {/* ENG-43283 */}
- Improved reliability of internal encrypted storage on low-end devices that previously experienced intermittent encryption failures. {/* ENG-44915 */}
- Fixed an issue where
Behavioral Trustresults were reported as unknown. {/* ENG-37626 */} - Removed internal SDK implementation details from the Javadoc that were not relevant to integration. {/* ENG-42390 */}
- Fixed missing back-side tutorial in the
IdScanV2 flow whenIdScan.ScanStep.BACKis used with ID tutorials enabled. {/* ENG-43309 */} - Fixed
IdScanV2 reportingIdScanResult.scanStatus = RESULT_ERROR_UNKNOWNfor wrong-document-side captures; now correctly reportsRESULT_ERROR_WRONG_ID_SIDE. {/* ENG-44025 */} - Fixed an issue where
IncodeWelcome.startWorkflow()only logged aModuleConfigurationExceptionat startup and did not invokeOnboardingListener.onError(). {/* ENG-42384 */} - Fixed the image quality severity configured on the Dashboard being ignored by the
SelfieScanmodule; the configured severity is now honored. {/* ENG-42834 */} - Fixed a rare camera stack issue where
IdScanorSelfieScancould fail during capture on certain devices. {/* ENG-44612 */}
Module Versions
core-light3.0.12model-liveness-detection3.2.2model-face-occlusion0.2.0 (new optional module)model-age-estimation2.2.2 (new optional module)
Added dependencies
androidx.datastore:datastore:1.1.7{/* ENG-43283 */}com.google.crypto.tink:tink-android:1.21.0{/* ENG-43283 */}
Version 5.46.0 - 2026-Apr-27
Warning
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.
Added (ALL modes)
- 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. {/* ENG-36095 */}
Face Authentication: Enriched unknown error reporting with original exception details and cause chain for better diagnostics on the Dashboard. {/* ENG-41950 */}- Added the possibility to enable UXV2 modules directly from the Dashboard configuration. {/* ENG-39454 */}
- Enabled high resolution ID and Face capture via
clientExperimentId. Passhigh_res_capture(optionally combined with other experiments using|, e.g.experimentV2|high_res_capture) to opt in. {/* ENG-42693 */} - Migrated the
CURPmodule to the V2 design system (Compose), including a "Non-Binary/Other" gender option. {/* ENG-32746 */}
Fixed (ALL modes)
- 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. {/* ENG-36095 */} - Improved TalkBack accessibility in the
IdScanV2 module: better semantic grouping, button roles, content descriptions, live region announcements, and focus management. {/* ENG-38923 */} - Improved button accessibility in V2 Compose screens. {/* ENG-36601 */}
- The
SelfieScanmodule outline ring now inherits its coloring from the color scheme, aligned with the face capture design guidelines. {/* ENG-39275 */} - Improved accessibility behavior for Compose-based SDK modal components by adding stronger dialog semantics and deterministic initial focus handling for permission and picker dialogs. {/* ENG-36664 */}
- Fixed the overlay transition around the silhouette for
SelfieScanV2 module. {/* ENG-37350 */} - Fixed incorrect initial TalkBack focus in
IdScanV2 by hiding interactive elements during pre-initialization and controlling traversal order for buttons and the module header. {/* ENG-41985 */} - The SDK now throws an
ExternalTokenRequiredExceptionwhen a/0URL 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 withlateinit property has not been initializedin the E2EE interceptor. {/* ENG-42681 */} - Fixed an issue where video recording could fail if the recording directory did not exist before starting recording. {/* ENG-42495 */}
- 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+). {/* ENG-43000 */}
- Restored missing camera-opened analytics events on the V2 capture path. {/* ENG-42693 */}
- 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. {/* ENG-42342 */}
- Fixed dynamic localization not being applied in UXV2 modules due to the localized
Contextnot being propagated. The issue was introduced in5.45.1. {/* ENG-43342 */} - Fixed an issue where
Behavioral Trustresults were reported as unknown. {/* ENG-31533 */} - Fixed an issue where
Behavioral Trustresults were incorrectly reported as a failure on certain devices. {/* ENG-43638 */} - Improved Lottie animation playback smoothness on the ID capture tutorial screen. {/* ENG-43838 */}
- Improved camera compatibility, reducing false unsupported-device errors. {/* ENG-41887 */}
- Fixed an issue where the
QESandAESmodule activities did not close after publishing results. {/* ENG-42140 */} - Introduced unified searchable and plain dropdown components — used by Dynamic Forms (country selector, select inputs) and the
CURPV2 module — with improved TalkBack announcements, focus handling, and validation feedback. The country selector now supports searching (type to filter). {/* ENG-38102, ENG-42379 */}
Fixed (STANDARD mode only)
- Fixed
IncodeWelcome.SSLConfignot being accessible as a public API and custom SSL configuration not being applied correctly. {/* ENG-40537 */}
Module Versions
core-light3.0.11
Updated dependencies
com.squareup.okhttp3:logging-interceptor:4.9.3->com.squareup.okhttp3:logging-interceptor:4.12.0{/* ENG-37453 */}org.json:json:20180813->org.json:json:20251224{/* ENG-43442 */}
Version 5.45.1 - 2026-Apr-03
Warning
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.
Added (ALL modes)
- Added dark mode support for drawables in V2 modules. Custom drawables can now provide a
drawable-nightvariant that is automatically resolved based on the active display mode. {/* ENG-41311 */} - Added
MODULE_VERSIONinfo forSelfieScan,FaceAuthenticationandFaceMatchmodules to the module-opened analytics event. {/* ENG-42835 */}
Fixed (ALL modes)
IdScanandSelfieScanV2 modules now survive configuration changes (e.g., theme change). {/* ENG-39703 */}- Fixed close header button visibility issue on the manual photo review screen in
IdScanV2 flow. {/* ENG-40831 */} - Fixed an issue where the manual capture button in the
SelfieScanV2 module was not properly announced by TalkBack because it did not have acontentDescription. {/* ENG-41983 */} - Fixed
setShowFooter(false)not being applied in theGeolocationV2 module - the footer was always visible regardless of theIncodeUXConfigsetting. {/* ENG-42534 */} - Fixed missing "Get Ready" circle spinner on selfie capture when face re-enters constraints after being lost or after capture timeout. {/* ENG-42735 */}
- 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. {/* ENG-42727 */}
Module Versions
core-light3.0.10
Version 5.45.0 - 2026-Mar-23
Warning
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 for details)
- 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. {/* ENG-38854 */} IdScanmodule: document chooser visibility is now controlled only by Flows andsetShowIdTypeChooser(...). SettingidTypeno longer hides the chooser. Please see Migration Guide for details. {/* ENG-39106 */}- Security improvements. {/* ENG-37876 */}
Added (ALL modes)
- Added German localization. {/* ENG-40290 */}
- Extended the module customization functionality to align with the recent design guidelines. Updated the
IdScanV2 module to use the new customization system. {/* ENG-38311 */} - Added Geolocation Module V2. Like other V2 modules (
IdScan,SelfieScan,ProcessId,FaceMatch), it is available when the feature gate is enabled. {/* ENG-32620 */} - Implemented new camera loading indicator in
IdScanV2 module. {/* ENG-38282 */} IdScanResult.idImageBase64is now populated in all modes inIdScanV2. Previously, it was only available in Capture-Only mode. {/* ENG-40918 */}- Updated the document chooser screen in V2
IdScanmodule to always use a more compact design and to show documents dynamically based on the module configuration. {/* ENG-39097 */} - Strengthen device environment checks. {/* ENG-29896 */}
SelfieScanV2: tablets are now landscape-locked with an optimized layout. Phone devices remain portrait-locked. {/* ENG-38129 */}- Updated UI for the Permission screens in the
IdScanandSelfieScanV2 modules. {/* ENG-38295 */} - Improved feedback during ID capture in the
IdScanV2 module, with different labels shown in Standard and Capture-Only mode. {/* ENG-40403 */}
Added (STANDARD mode only)
- Ported these additions from
5.40.2: {/* ENG-41292 */}- Added ability to pass
SessionConfigtoIncodeWelcome.startFaceLogin()API. This allows enabling of end-to-end encryption (E2EE) in Face Login mode. {/* ENG-36863 */} - Face Login: Security improvements {/* ENG-36865 */}
- Added ability to pass
- Added support for ASYNC modules in Workflows. Currently applies to the
VideoSelfiemodule, where the/omni/finish-statusendpoint is handled on the backend. {/* ENG-36700 */}
Fixed (ALL modes)
- Bumped DexGuard plugin to 9.13.3 to fix an OOM error caused by bloated consumer ProGuard rules shipped with the AAR. {/* ENG-38272 */}
- Updated the position of the capture frame on the screen according to the capture screen specification for the
IdScanV2 module. {/* ENG-34025 */} - Updated the camera feed positioning in the
SelfieScanmodule. {/* ENG-38355 */} - Adjusted the
SelfieScanmodule UI to align with the UXv2 styling, including new success/error screens, animations, and transitions. {/* ENG-36639, ENG-40407 */} - Fixed potential crashes when backgrounding an app with a Camera-based module (
IdScan,SelfieScan, etc) on screen and returning to the app {/* ENG-40613 */} - Fixed a rare crash during ID capture upload caused by out-of-bounds bitmap coordinates. {/* ENG-35576 */}
- Fixed an issue with location fetching in the
Geolocationmodule; Unavailable location is now handled by falling back to requesting location updates. {/* ENG-39738 */} - Aligned error screens for the
IdScanV2 module with recent design guidelines. {/* ENG-38130 */} - Updated capture instructions on success screen in the
IdScanV2 module. {/* ENG-38317 */} - Fixed an intermittent error in frame analyzers caused by a race condition in concurrent frame processing. {/* ENG-40259 */}
- Fixed the app getting stuck during
IdScanwhen the user declines the screen recording permission withconfigureScreenRecording(true, false)config. {/* ENG-40355 */} - Fixed image quality checks severity in the
SelfieScanandFaceAuthenticationmodule so that configured thresholds are consistently honored across SDK-based and Dashboard-based configurations. {/* ENG-40269 */} - Update Close icon on all screens with close button configured, and Help icon on ID Capture V2 screen {/* ENG-38302, ENG-38313 */}
- Fixed a
NullPointerExceptionthat could occur when callingIncodeWelcome.deleteUserLocalData()if a temporary images directory failed to create. {/* ENG-40496 */} - Fixed potential
NullPointerExceptionsandConcurrentModificationExceptionsthat could occur in theSelfieScanmodule when determining the horizontal view angle of the camera. {/* ENG-40609 */} - Fix content centering problems for the
Face MatchV2 module {/* ENG-38332 */} - Fixed an issue where the Device Trust check in Deepsight could be marked as "unknown". {/* ENG-41348 */}
Face Authentication: The progress text now shows "Uploading" instead of "Verifying". {/* ENG-38129 */}
Fixed (Capture-Only mode)
- Improved functionality of the feature flag mechanism when using
setClientExperimentId, particularly in Capture-Only and Delayed modes. {/* ENG-38095 */}
Fixed (STANDARD mode only)
- Updated the HTTP method for
/omni/finish-statusfromGETtoPOST{/* ENG-39023 */}
Module Versions
core-light3.0.9nfc1.5.3
Updated dependencies
com.guardsquare:dexguard-gradle-plugin:9.13.1->com.guardsquare:dexguard-gradle-plugin:9.13.3{/* ENG-41348 */}
Removed dependencies
com.guardsquare:dexguard-runtime{/* ENG-29896 */}
Version 5.44.0; core-light 3.0.8 - 2026-Feb-25
API Changes (refer to Migration Guide for details)
DocumentTypehas been moved {/* ENG-38097 */}
Added (ALL modes)
- 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 and Migration Guide for further details. {/* ENG-27853, ENG-28147 */}
- Added a lot of missing Javadocs in the following packages/classes/methods of
com.incode.welcome_sdk.:CommonConfig.Builder.setShowCloseButton(){/* ENG-39640 */}commons.exceptions.*{/* ENG-39640 */}commons.exceptions.IncodeException.CaptureRetryAttemptsExceeded{/* ENG-39640 */}commons.exceptions.IncodeException.DeviceEnvironmentException.*{/* ENG-29896 */}commons.exceptions.video_selfie.*{/* ENG-39640 */}data.*{/* ENG-38097, ENG-39640 */}data.Event.*{/* ENG-29896, ENG-39640 */}IncodeWelcome.Builder.setTestModeEnabled(){/* ENG-39640 */}listeners.*{/* ENG-39640 */}modules.*{/* ENG-39640 */}
- Added a new encryption layer to data the SDK stores in
SharedPreferences. {/* ENG-37867, ENG-38805 */}
Added (STANDARD mode only)
- Updated the
FaceMatchmodule to UxV2. This update also introduces a new SDK API:FaceMatch.Builder.setShowLivenessResult(). {/* ENG-32836 */}
Added (Capture-Only mode)
- Added the
presignedVideoFilePathparameter to theSelfieScanResultmodel whenSelfieScan.Builder.()setVideoLivenessRecordingEnabled()is enabled {/* ENG-38058 */}
Fixed (ALL modes)
- Fixed recording being cut off at the beginning and occasional video missing in
SelfieScanandIdScan. {/* ENG-36559 */} - Fixed an issue where the "No internet" bottom bar UI would overlap with the bottom navigation buttons when
targetSdkis 35+ {/* ENG-38087 */} - Updated manual capture text in the
SelfieScanmodule. Updated the manual capture button icon and the layout alignment. {/* ENG-38285, ENG-39595 */} - Added the missing default outer grey circle camera border in the
SelfieScanmodule. {/* ENG-38247 */} - Fixed an issue where the
onSSLPinningFailed()callback was not called when usingstartOnboardingSection(){/* ENG-37766 */} - Fixed letter spacing in the
MINIMALvariant of realtime feedback messages in theIdScanmodule. {/* ENG-38308 */} - Updated text on the Tutorial and Capture screens in the
IdScanV2 module to reflectUS Smart Capture. {/* ENG-36649 */} - Fixed an issue where the close button could not be shown in the
SelfieScanmodule. {/* ENG-38246 */} - Added missing exclamation mark to the "Success" state message in
SelfieScan. {/* ENG-38292 */} - Fixed an issue where
IncodeWelcome.deleteUserLocalData()was not deleting video liveness and screen recordings from theIdScanandSelfieScanmodules. {/* ENG-38350 */} - Fix session breaking issues in the
IdScanV2 flow when the user scans the front side of the document with a covered face. {/* ENG-37804 */} - Updated the V2 flow maximum header logo height. {/* ENG-39658 */}
- Prevent
ConcurrentModificationExceptioninIdScanandSelfieScanV2 that could occur randomly when capturing the photos. {/* ENG-40260 */}
Added dependencies
androidx.security:security-crypto-ktx:1.1.0{/* ENG-38805 */}
Updated dependencies
com.guardsquare:dexguard-gradle-plugin:9.12.6->com.guardsquare:dexguard-gradle-plugin:9.13.1{/* ENG-29896 */}com.guardsquare:dexguard-runtime:9.12.6->com.guardsquare:dexguard-runtime:9.13.1{/* ENG-29896 */}
Version 5.43.0; core-light 3.0.7; nfc 1.5.2 - 2025-Dec-30
Added (ALL modes)
- Added support for
allowSkipDocumentCaptureconfiguration for theDocumentScanmodule, allowing users to skip document capture when enabled. AddedisDocumentValidationSkippedfield toDocumentValidationResultto indicate when document validation was skipped. {/* ENG-31767 */} - Updated wording in the
SelfieScanV2 module to improve clarity and user guidance during the selfie capture process. {/* ENG-35941 */} - Added
getDocumentImage()method to theDocumentValidationResultclass, which returns the document image as aBitmap. {/* ENG-33245 */} - Added "minimal" option for the real time feedback shown in the
IdScanV2 module. This can be configured viaIncodeUXConfig.Builder().setRealtimeFeedbackMessageUIFlavor(). Available options areRealtimeFeedbackMessageUIFlavor.STANDARDandRealtimeFeedbackMessageUIFlavor.MINIMAL. {/* ENG-30391 */} - Updated Javadoc for
IncodeWelcome.Builder().setClientExperimentId()to better reflect proper usage. {/* ENG-36661 */} - Updated UI in the
FaceMatchmodule for compact UI mode. This feature can be enabled viaFaceMatch.Builder().setFaceMatchAnimationEnabled(false). {/* ENG-31550 */} - Performance improvements. {/* ENG-36599 */}
- Added missing Javadocs for the following SDK APIs:
- Introduced with Dynamic Localization in
5.3.0: {/* ENG-35706 */}IncodeWelcome.setStrings()IncodeWelcome.setStringArray()IncodeWelcome.setQuantityStrings()
- Introduced with the
FaceAuthenticationmodule in5.40.0: {/* ENG-36524 */}FaceAuthenticationListenerFaceAuthenticationResultIncodeWelcome.setFaceAuthenticationHint()
- Introduced with Dynamic Localization in
- Security improvements. {/* ENG-36178, ENG-36524 */}
- New Transition screen layout. This screen is now customizable using the new V2 theming system. Check the Migration Guide for more details. {/* ENG-34656 */}
- Updated UI for Need Help screen in the
IdScanV2 module. {/* ENG-31498 */} - Added
setHeaderAlignment()method toIncodeUXConfig.Builderto configure alignment of the Header on the applicable screens. Available options areHeaderAlignment.START,HeaderAlignment.CENTER(default), andHeaderAlignment.END. {/* ENG-32016 */} - Added PDF417 barcode support to the
IdScanV2 module, enabled per-flow through the dashboard via the US Smart Capture setting. {/* ENG-31263 */} - 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 for details on component configuration. {/* ENG-33593 */}
Added (STANDARD mode only)
- The
errorfield inIdScanResultis now populated when retry attempts are exhausted. TheresultCodeis set toSUCCESSbecause the flow continues. This change applies only toIdScanV2, as adding it to V1 would be a breaking change. {/* ENG-36234 */} - Added a specific error message for cases where face occlusion is detected in the
SelfieScanandFaceAuthenticationmodules. {/* ENG-36325 */} - Refactored
SelfieScanandFace authenticationV2 modules to useComposeUI. These modules are now customizable using the V2 theming system. Check the Migration Guide for more details. {/* ENG-34656 */}
Fixed (ALL modes)
- Fixed an issue where the Behavioral Trust check in Deepsight could get an unknown result on lower-end devices {/* ENG-36524 */}
- Fixed an issue where the Behavioral Trust check in Deepsight would always get an unknown result if
SelfieScanv2 was used in the session {/* ENG-36524 */} - Fixed a potential
OutOfMemoryErrorwith long, repeated use of theNfcScanmodule. {/* ENG-36751 */} - Fixed an issue where some legacy model files could be retained on the device following an update of the Android SDK. {/* ENG-35706 */}
- 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. {/* ENG-37172 */}
- Fixed an issue where video upload failed in Face Login mode when using video streaming. {/* ENG-36945 */}
- Fixed an issue in the
SelfieScanmodule where tutorials were incorrectly skipped in Face Login mode whenSelfieScanV2 was enabled. {/* ENG-36945 */} - Improved error handling in video streaming initialization by checking for required dependency first, before checking for available RAM. {/* ENG-36945 */}
- Fixed an
IllegalStateExceptionthat could occur in theIdScanv2,SelfieScanv1, andSelfieScanv2 modules when the camera was determining what features it supports {/* ENG-37218 */} - Fixed a
CalledFromWrongThreadExceptioncrash in theSelfieScanmodule that could occur randomly. {/* ENG-37414 */} - Fixed a
NullPointerExceptioncrash 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) {/* ENG-36176 */} - Fixed an issue that caused the SDK to stop producing logs in certain cases. {/* ENG-36687 */}
- Fixed an issue where phantom analytics events were being logged in the
IdScanV2 module when the Passport is selected. {/* ENG-36702 */} - Fixed an error that would occur when reading a certain type of NFC chip in the
NfcScanmodule. {/* ENG-34608 */} - Fixed an issue where the
NfcScanmodule did not respect thenfcMaxRetriessetting when an NFC read failed due to (possibly) incorrect OCR data. {/* ENG-34608 */} - Fixed an issue where the camera hardware cannot be found when the host application is built with ProGuard or R8 enabled. {/* ENG-37417 */}
- Fixed an issue where the flow got stuck on the Transition screen when the camera permission was denied in the
FaceAuthenticationmodule. {/* ENG-37448 */}
Fixed (STANDARD mode only)
- Fixed a potential
OutOfMemoryErrorwith long, repeated use of workflows. {/* ENG-36751 */} - Fixed an issue in
SelfieScanmodule 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. {/* ENG-29449 */} - Fixed an issue in the
IdScanmodule where Back ID scan would start unexpectedly for one-sided documents after pausing and resuming the app. {/* ENG-34656, ENG-40299 */}
Fixed (Capture-Only mode)
- Fixed an issue where the Behavioral Trust check in Deepsight would always display an unknown result if
SelfieScanv1 was used in the session due to relevant data missing when invokingSelfieScanResult.metadata. {/* ENG-36524 */} - Fixed an issue where the Device Trust check in Deepsight would always display a potentially false "PASSED" result if
SelfieScanv1 was used in the session due to relevant data missing when invokingSelfieScanResult.metadata. {/* ENG-36524 */}
Fixed (Submit-Only mode)
- Fixed a
NullPointerExceptionthat happens when publishing the result in theSelfiemodule.
Version 5.42.0; core-light 3.0.6; nfc 1.5.1 - 2025-Nov-28
Added (ALL modes)
- Upgrading
compileSdkto level 35 is required. Please see Migration Guide for details. - Added Age Assurance UX to the
IdScanV2. {/* ENG-32741 */} - Added
croppedDocumentPathfield toIdScanResult(applicable only toIdScanv2 module), containing the file path to the cropped document image. {/* ENG-36141 */} - Added a Review Photo screen in the
IdScanv2 module, shown after the user captures an ID. This feature can be enabled using thesetShowRetakeScreenForAutoCapture()andsetShowRetakeScreenForManualCapture()methods inIdScan.Builder. {/* ENG-31736 */}
Added (STANDARD mode only)
- Added info describing which API and configurations were used for starting the SDK to the "Sdk Info" event. {/* ENG-28507 */}
- Added a specific error message for cases where face image quality is too low in the
SelfieScanmodule. {/* ENG-29149 */} - Workflows: added the option to prefill the phone number in the
Phonemodule based on the user's previously stored identity. {/* ENG-35572 */}
Added (STANDARD mode only)
- Added support for
CustomModulein Workflows, allowing integrators to pause a flow, execute custom logic, and resume at the module's next node. The configuredcallbackNameis provided as a string for custom handling. {/* ENG-32793 */}
Fixed (ALL modes)
- Fixed an issue on Android 14+ devices where the
SelfieScanmodule could crash after screen recording permission is granted if an active camera preview is showing. The issue was introduced in 5.36.0. {/* ENG-28186 */} - Fixed a potential
IllegalStateExceptionthat could occur in the following modules after the app was in the background and came back. {/* ENG-33249 */}ConferenceCurpValidationIdScanV2VideoSelfie
- Fixed UI issues for targetSdk 35 {/* ENG-33774 */}
- Refactored exception handling with dedicated hierarchies:
IncodeException.PermissionNotGranted(camera, microphone, location, NFC) andIncodeException.DeviceEnvironmentException(emulator, hooking, virtual environment, root detection). See the Migration Guide for details. {/* ENG-33703 */} - Fixed an issue where liveness was incorrectly shown as "failed" in the
FaceMatchmodule if it came after theFaceAuthenticationmodule. {/* ENG-35033 */} - Fixed crashes on Android 6 that could happen on various screens. The error message was "Error inflating class ImageView". {/* ENG-36311 */}
Fixed (STANDARD mode only)
- Fixed an issue where the settings for
Closed EyesandHead Coverchecks were not respected in theSelfieScanandFace Authenticationmodules when using Workflows. {/* ENG-34562, ENG-34566 */} - Fixed an issue in the
SelfieScanmodule where streaming did not record subsequent face capture attempts after the first failed attempt. {/* ENG-31134 */} - Fixed a crash in the
FaceAuthenticationmodule when receiving unknown error codes (e.g.,SELFIE_FACE_OCCLUDED) from the server. Unknown error codes will be mapped toUNKNOWNinstead of throwing an exception. {/* ENG-35318 */} - Fixed an issue in the
SelfieScanmodule where use of both Deepsight Video Liveness and video streaming viasetStreamFramesEnabled(true)would log a "Video Streaming Session Failed Due To An Error" event with aSessionNullOrInvalidParametererror code. If both of these features are enabled, video streaming will be ignored. {/* ENG-34918 */} - 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. {/* ENG-32983 */}
- Updated log messages related to missing optional dependencies to provide clearer debugging information. {/* ENG-32983 */}
- Removed borders around the images in
FaceMatchmodule. {/* ENG-35033 */}
Removals/Deprecations
- Removed the "Referred to executive" screen from the
IdScanv2 module, and deprecated theProcessId.Builder.setEnableIdSummaryScreen()method. {/* ENG-33663 */}
Updated dependencies
androidx.activity:activity-compose:1.8.2->androidx.activity:activity-compose:1.10.1{/* ENG-34806 */}androidx.camera:camera-camera2:1.4.2->androidx.camera:camera-camera2:1.5.1{/* ENG-34309 */}androidx.camera:camera-extensions:1.4.2->androidx.camera:camera-extensions:1.5.1{/* ENG-34309 */}androidx.camera:camera-lifecycle:1.4.2->androidx.camera:camera-lifecycle:1.5.1{/* ENG-34309 */}androidx.camera:camera-video:1.4.2->androidx.camera:camera-video:1.5.1{/* ENG-34309 */}androidx.camera:camera-view:1.4.2->androidx.camera:camera-view:1.5.1{/* ENG-34309 */}androidx.fragment:fragment:1.6.2->androidx.fragment:fragment:1.8.9{/* ENG-33249 */}com.android.tools.build:8.1.4->com.android.tools.build:8.6.0{/* ENG-34309 */}com.google.dagger:dagger:2.48.1->com.google.dagger:dagger:2.57.2{/* ENG-34895 */}com.google.dagger:dagger-compiler:2.48.1->com.google.dagger:dagger-compiler:2.57.2{/* ENG-34895 */}gradle-8.0-bin.zip->gradle-8.7-bin.zip{/* ENG-34309 */}io.insert-koin:koin-android:3.5.3->io.insert-koin:koin-android:4.0.4{/* ENG-34806 */}io.insert-koin:koin-androidx-compose:3.5.3->io.insert-koin:koin-androidx-compose:4.0.4{/* ENG-34806 */}
Version 5.41.1 - 2025-Nov-12
Fixed (ALL modes)
- Fixed an issue where capturing an image in the
IdScanandDocumentScanv1 modules, as well as theSelfieScanv1 and v2 modules, could be slow. ForIdScanandDocumentScan, this could render the "Help" button unresponsive. For theSelfieScanmodule, this could cause the post-capture phase to take longer. This issue was introduced in5.41.0{/* ENG-34537 */}
Version 5.41.0; core-light 3.0.5; nfc 1.5.0 - 2025-Oct-17
Added (ALL modes)
- Updated
core-lightmodule 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. {/* ENG-30730 */} - Added Age Assurance UX to the
SelfieV2. {/* ENG-32739 */} - Added support for optional fields in
DynamicFormsmodule. {/* ENG-31592 */} - Added
ProcessIdV2 module with support for design tokens. {/* ENG-32886 */} - Added number of remaining ID capture attempts to
IdScanv2 error screen. {/* ENG-30094 */} - Added realtime feedback when head coverings (such as hats) are detected. This feature can be enabled using the
setHeadCoverCheckEnabled()method inSelfieScan.BuilderandVideoSelfie.Builder, or in the corresponding module configs on the Dashboard. {/* ENG-30730 */} - Added support for 16KB page size devices to the
nfcmodule. More info here. {/* ENG-32576 */} - Added Digital ID PDF upload flow to the
IdScanmodule. {/* ENG-25681 */}- Introduced a new
IdTypecalledDIGITAL_ID. - Added a new API method,
setDigitalIdEnabled()inIdScanfor enabling the digital ID option on the Document chooser screen.
- Introduced a new
- Updated the documentation for following
IncodeWelcome.BuilderAPIs to better indicate what happens when disabled. {/* ENG-33755 */}disableEmulatorDetection()disableHookCheck()disableRootDetection()disableVirtualEnvironmentDetection()
Added (STANDARD mode only)
- Added support for the
US Smart Captureoption of theIdScanv2 module. This is the optimized capture flow for US IDs which captures the back of the ID in order to extract data from the barcode. Exclusively available with DMV Face Match. {/* ENG-33080 */} - Improved StatSig configuration to enable feature gate segmentation per-flow. {/* ENG-32737 */}
- Security improvements. {/* ENG-33755 */}
Fixed (ALL modes)
- UI Improvements in
IdScanv2. {/* ENG-32171, ENG-31565 */} - Fixed an issue where liveness was incorrectly shown as fail in the
FaceMatchwhen theVideo Selfiemodule was used as the Selfie. {/* ENG-29681 */} - Fixed swapped ES/PT translations for the "Quit process" button on the V2 Permission Request screen. {/* ENG-33771 */}
- Fixed a crash in the
Selfiemodule due toCalledFromWrongThreadException. {/* ENG-34037 */} - Code security improvements. {/* ENG-33754 */}
- Fixed DexGuard configuration to preserve Kotlin metadata, allowing Named Arguments to be used in
IncodeWelcome.Builder. {/* ENG-34230 */}
Fixed (STANDARD mode only)
- Fixed an issue where end-to-end encryption (E2EE) was not applied when using external token, causing requests to be sent unencrypted. {/* ENG-34229 */}
- Added storing of the
customerUUIDin theSelfieScanmodule when using Face Login (1:N) mode withSelfieScan.storeAuthenticationEnabled(true). The value appears in theIncode Dashboard > Authenticationtab after authentication sync completes. {/* ENG-33167 */}
Updated dependencies
com.github.Tgo1014:JP2ForAndroid:1.0.4->dev.keiji.jp2:jp2-android:1.0.5{/* ENG-32576 */}com.guardsquare:dexguard-gradle-plugin:9.12.2->com.guardsquare:dexguard-gradle-plugin:9.12.6{/* ENG-33755 */}com.guardsquare:dexguard-runtime:9.12.2->com.guardsquare:dexguard-runtime:9.12.6{/* ENG-33755 */}
Version 5.40.3 - 2026-Jan-30
Fixed (STANDARD mode only)
- Fixed an issue where end-to-end encryption (E2EE) was not applied when using external token, causing requests to be sent unencrypted. {/* ENG-38851 */}
Version 5.40.2 - 2026-Jan-08
Added (STANDARD mode only)
- Added ability to pass
SessionConfigtoIncodeWelcome.startFaceLogin()API. This allows enabling of end-to-end encryption (E2EE) in Face Login mode. {/* ENG-36863 */} - Face Login: Virtual environment checks are now always performed, even when disabled in configuration. The login flow aborts if any check fails. {/* ENG-33864 */}
- Face Login: Security improvements {/* ENG-36865 */}
Fixed (ALL modes)
- Fixed an issue that caused the SDK to stop producing logs in certain cases. {/* ENG-36687 */}
Version 5.40.1 - 2025-Sep-22
Fixed (Standard mode only)
- 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. {/* ENG-33224 */}
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
Added (ALL modes)
- Introduced
CommonConfig#setUXConfig()method for UX customizations in V2IdScanandSelfieScanmodules. {/* ENG-31570 */}
Added (STANDARD mode only)
- Added support for the
onlyFrontandonlyBackflags from the dashboard configuration for theIdScanmodule. {/* ENG-23317 */} - Added customization guide for the Manual Shutter Button in the
SelfieV2 module. Please refer to the SDK Customization How-To Guide for details. {/* ENG-30383 */} - Added "All photos are encrypted" notice to
IdScanv2. {/* ENG-31495 */} - Added support for 16KB page size devices to the
video-streamingmodule. More info here. This update tovideo-streamingmodule requiresminSdk24 or higher. Please see Migration Guide for details. {/* ENG-14366 */} - 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. {/* ENG-31975 */}
- Added support for the
Face Authenticationmodule that performs a selfie scan to authenticate the user. {/* ENG-30629 */} - Added detailed info about SDK versions to the
Sdk Infoevent on the Dashboard. {/* ENG-32546 */}
Fixed (ALL modes)
- UI Improvements in
Selfiev2. {/* ENG-31025 */} - UI Improvements in
IdScanv2. {/* ENG-31187, ENG-31425 */} - Fixed an issue where the Light and Dark themes were not correctly applied to permission screens in the
IdScanV2 module. {/* ENG-31155 */} - Added new primitive color to improve theme customization. It applies to
IdScanv2 buttons and icons. {/* ENG-31431 */} - Fixed a compile-time issue when using Dynamic Feature Modules with
minSdkset 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. {/* ENG-30497 */} - Improved StatSig configuration to ensure reliable feature gate splitting. {/* ENG-28872, ENG-29444 */}
- Fixed an issue where the
onError()callback in theDocumentScanmodule was not triggered when the user denied camera permission. {/* ENG-18435 */} - Improved camera error handling, ensuring that
onError()is called when the camera fails to start, instead of the app crashing. {/* ENG-31393 */} - Added integrity checks for ML models based on checksums. This will prevent the app from crashing if the model files are corrupted or missing. {/* ENG-31540 */}
- Improved error handling when ML models cannot be loaded by making the error messages more specific. {/* ENG-31540 */}
- If the Face Detector and Face Quality models cannot be loaded for any reason,
Selfiemodule will immediately fall back to Manual Capture mode. {/* ENG-31540 */} - Fixed an issue where the
QuantityKeywordclass required byIncodeWelcome.setQuantityStrings()API was not exposed. {/* ENG-31753 */} - Fixed a crash in the
IdScanv2 module that could occur when tapping the Help button, if the host app was using a newer version of Jetpack Compose. {/* ENG-31177 */} - Fixed a crash in the
NFC Scanmodule that could occur on some devices. {/* ENG-31066 */} - Fixed an issue in the
IdScanmodule where the exit confirmation dialog did not appear when the user pressed the close button. {/* ENG-30061 */} - Fixed an issue in the
SelfieScanmodule where the back button did not finish the flow after exit confirmation. {/* ENG-30061 */} - Fixed the module execution order in
startFlow()API. It now follows the order specified by the backend. {/* ENG-32007 */} - Added a prefix to default font resources' names to avoid conflicts with other 3rd party dependencies that contain the same fonts. {/* ENG-32326 */}
Fixed (STANDARD mode only)
- Fixed a race condition that could cause video streaming in
Selfiemodule to fail. The fix ensures that theSelfiemodule begins processing only after video streaming session is fully created. {/* ENG-32056 */} - Fixed an issue where the selfie photo would be uploaded to subsequent sessions when using Deepsight together with Session Recording. {/* ENG-32410 */}
- Fixed an issue in the
SelfieScanmodule where the Deepsight Video Liveness configuration was not respected when using the sections API with the no-API-key approach. {/* ENG-32545 */}
Added dependencies
com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0{/* ENG-28872 */}
Updated dependencies
- kotlinCompilerExtensionVersion
1.4.4->1.5.4{/* ENG-31177 */} com.opentok.android:opentok-android-sdk:2.25.1->com.opentok.android:opentok-android-sdk:2.30.1{/* ENG-14366 */}org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10->org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20{/* ENG-31177 */}org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10->org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20{/* ENG-31177 */}org.jetbrains.kotlin:kotlin-serialization:1.8.10->org.jetbrains.kotlin:kotlin-serialization:1.9.20{/* ENG-31177 */}androidx.compose.material3:material3:1.1.2->androidx.compose.material3:material3:1.3.2{/* ENG-30393 */}androidx.compose.ui:ui:1.4.4->androidx.compose.ui:ui:1.7.8{/* ENG-31177 */}androidx.compose.ui:ui-graphics:1.4.4->androidx.compose.ui:ui-graphics:1.7.8androidx.compose.ui:ui-test-manifest:1.4.4->androidx.compose.ui:ui-test-manifest:1.7.8{/* ENG-31177 */}androidx.compose.ui:ui-test-junit4:1.4.4->androidx.compose.ui:ui-test-junit4:1.7.8{/* ENG-31177 */}androidx.compose.ui:ui-tooling:1.6.5->androidx.compose.ui:ui-tooling:1.7.8{/* ENG-31177 */}androidx.room:room-runtime:2.5.1->androidx.room:room-runtime:2.6.1{/* ENG-31177 */}androidx.room:room-rxjava2:2.5.1->androidx.room:room-rxjava2:2.6.1{/* ENG-31177 */}androidx.room:room-compiler:2.5.1->androidx.room:room-compiler:2.6.1{/* ENG-31177 */}com.guardsquare:dexguard-gradle-plugin:9.8.15->com.guardsquare:dexguard-gradle-plugin:9.12.2{/* ENG-29897, ENG-32461 */}com.guardsquare:dexguard-runtime:9.8.15->com.guardsquare:dexguard-runtime:9.12.2{/* ENG-29897, ENG-32461 */}com.statsig:android-sdk:4.39.2->com.statsig:android-sdk:4.42.2{/* ENG-29444 */}
Removed dependencies
androidx.compose.ui:ui-tooling-preview
Design Changes
Highlights
- Added corner cases screens (for ID Capture V2 and Face Capture V2).
- Updated permission dialog (web + bottom sheet native).
ID Capture V2
- Added Age verification screen.
- Added vertical and passport capture screens.
- Added “All photos are encrypted” message on all capturing/result screens.
- Updated Permission dialog screen design for Web.
- Updated Permission dialog screen design to a bottom sheet for native iOS and Android.
- Added Photo review screen.
- Removed “We protect your data, and it is only used for verification” from Learn more permission screen for native iOS and Android.
- Added No Internet connection screen.
- Added Document not accepted errors screens.
- Added Verification processing screen.
- Added “No attempts remaining” disclaimer to the error screens with exhausted attempts.
- Added Dark mode screens on Happy path.
Face Capture V2
- Removed the “Face is blurry” feedback screen.
- Added “Eyes closed” feedback screen.
- Added No Internet connection screen.
- Changed the icon on error screens that had attempts left for the orange warn one.
- Added a Continue button and “No attempts remaining” disclaimer to the error screens with exhausted attempts.
- Visibilized “Face not aligned” error screen.
- Added Dark mode screens on Happy path.
Version 5.39.0; core-light 3.0.3; extensions 1.2.0; nfc 1.4.3 - 2025-July-30
Added (ALL modes)
- Security improvements. {/* ENG-26754, ENG-28355 */}
- UI Improvements in
IdScanv2. {/* ENG-29150; ENG-29151; ENG-29152 */} - UI Improvements in
Selfiev2. {/* ENG-29158; ENG-29159 */} - Improved error description for analytics events logged in case of HTTP exceptions. {/* ENG-26096 */}
- Added
IncodeWelcome.removeAllFaces()API method for removing allFaceInfoentries from the local storage. {/* ENG-29736 */} - Added new
FaceInfoAPIs with support for asynchronous callbacks via the optionalFaceEventListenerparameter: {/* ENG-30248 */}IncodeWelcome.setFaces(List<FaceInfo>, FaceEventListener)IncodeWelcome.addFace(FaceInfo, FaceEventListener)IncodeWelcome.removeFace(String, FaceEventListener)
Added (Capture-Only mode)
- Added
metadatafield inIdScanResultandSelfieScanResultclasses. See the Migration Guide for details on how this field affects Incode API calls later on. {/* ENG-28355 */}
Removals
- Removed storage of a
customerUUIDfrom the SDK. This value should be managed by the client application if needed. Please refer to the Migration Guide for further details.
Fixed (ALL modes)
- Fixed an issue where the face capture circle briefly appeared before the ID Scan step in the
VideoSelfiemodule. {/* ENG-26552 */} - Fixed incorrect Portuguese translation on the Review Photo screen in the
IdScanmodule. {/* ENG-23643 */} - 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 of the Setup Guide for more info. {/* ENG-26005 */}
- Fixed an issue in the trimming logic for longer Deepsight Video Liveness videos where the resulting video would be significantly shorter than 10 seconds. {/* ENG-30029 */}
- Fixed an issue in the
NfcScanmodule where the PACE protocol authentication could fail due to provider misconfiguration. {/* ENG-30024 */} - Fixed an issue in the
NfcScanmodule where after a successful scan, the user was unexpectedly sent back to the beginning of the NFC scan flow. {/* ENG-30024 */} - Fixed an issue in
SelfieScanmodule where the UI would get stuck when attempting to upload a selfie without an internet connection. {/* ENG-29800 */} - Fixed an issue when using End-To-End-Encryption where requests would only be encrypted if the host portion of the
WELCOME_API_URLprovided toIncodeWelcome.Builder()contained the text, "api", in it {/* ENG-26754 */} - Fixed an issue where
IncodeWelcome.Builder().setCrashReportingEnabled(true)would only be respected if the integrating app happened to invokeSentryAndroid.init()in its own implementation or one of its other dependencies. See the Migration Guide for details on how this can affect existing Sentry integrations {/* ENG-30429 */} - Fixed "Method removeObserver must be called on the main thread" crash. {/* ENG-19810 */}
- Fixed an issue in the
IdScanV2 module where the Incode badge was incorrectly displayed after closing the Help screen. {/* ENG-29150 */} - Fixed an issue in the
IdScanV2 module where the camera preview would not be displayed due to the camera permission not being handled correctly. {/* ENG-30919 */} - Fixed an issue in the
IdScanV2 module whereIdScan.Builder.setShowTutorials(false)was not respected, causing the tutorial to be shown regardless of the setting. {/* ENG-30919 */} - 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. {/* ENG-31075 */}
Fixed (STANDARD and DELAYED modes only)
- Fixed an issue where uploading faces captured in the
SelfieScanmodule would include an emptyrecordingIdparameter in the API call if Deepsight Video Liveness was not used. {/* ENG-26669 */}
Deprecations (ALL modes)
- Deprecated
FaceInfoAPI methods, please migrate to the new APIs with callback support. See the Migration Guide for details. {/* ENG-30248 */}IncodeWelcome.setFaces(List<FaceInfo>)IncodeWelcome.addFace(FaceInfo)IncodeWelcome.removeFace(String)
Added dependencies
io.sentry:sentry-android:7.22.6{/* ENG-26005, ENG-30429 */}
Removed dependencies
io.sentry:sentry:7.19.0{/* ENG-30429 */}
Updated dependencies
com.airbnb.android:paris:2.0.0->com.airbnb.android:paris:2.0.2{/* ENG-9457 */}dev.b3nedikt.restring:restring:5.2.1->dev.b3nedikt.restring:restring:5.2.2{/* ENG-9457 */}dev.b3nedikt.reword:reword:4.0.2->dev.b3nedikt.reword:reword:4.0.4{/* ENG-9457 */}dev.b3nedikt.viewpump:viewpump:4.0.10->dev.b3nedikt.viewpump:viewpump:4.0.14{/* ENG-9457 */}
Version 5.38.0; core-light 3.0.2; nfc 1.4.2 - 2025-June-24
Added (ALL modes)
- Added support for 16KB page size devices. More info here. {/* ENG-28417 */}
- Improved camera preview quality for the
IdScanV2 andSelfieScanmodules. {/* ENG-28216 */} - Improved quality of "Video Liveness" videos captured in the
SelfieScanmodule. {/* ENG-28216 */} - Added UI changes in the
QESmodule: {/* ENG-25145 */}- 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
SelfieScanmodule to appear over the lock screen, supporting use cases like unlocking the device via Face Login. {/* ENG-28350 */} - Added
setShowSelfieStepFirst()method toVideoSelfie.Builder. This method allows the integrator to show the Selfie step before the ID step in theVideoSelfiemodule. Default value isfalse, which means that the ID step is shown first. {/* ENG-28366 */} - 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 for usage. {/* ENG-28096 */}.
- Added
onApproveCompletedcallback invocation when Workflow is complete, if theAutomatically create an identity on successful workflow executionoption is enabled on the Workflow. {/* ENG-27110 */} - Added support for light and dark themes in the
IdScanV2 module. {/* ENG-26818 */}
Added (STANDARD mode only)
- Added support for the "Single frame" and "Video Liveness" "Deepsight Liveness" Face Capture configuration options on the Incode Dashboard to the
startOnboarding()andstartOnboardingSection()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 theSessionConfigviaSessionConfig.Builder().setConfigurationId("[FLOW_ID_FROM_INCODE_DASHBOARD]"). Similarly, providing anexternalTokenfrom a session configured to use the aforementioned Face Capture configuration will be honored. {/* ENG-27130 */} - Added the
setReturnResultImmediately()API to theNfcScanmodule 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. {/* ENG-28908 */} - Added an option to prefill the phone number in the
Phonemodule based on the user's previously stored identity. {/* ENG-26301 */} - Added
setLanguage()method to theSessionConfig.Builder, enabling configuration of theVoiceConsentlanguage in theVideoSelfiemodule. {/* ENG-26065 */}
Fixed (ALL modes)
- Fixed a potential issue where on-device cameras may incorrectly report their capabilities. {/* ENG-28216 */}
- 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. {/* ENG-29087 */}
- Fixed a crash that could occur when the
SelfieScanmodule starts the camera. The NPE was caused by accessing a camera property before it was fully initialized. {/* ENG-28889 */} - Fixed a crash in the
GlobalWatchlistmodule caused by view initialization on a non-UI thread during module start. {/* ENG-29051 */} - Fixed a crash during SDK initialization caused by usage of an internal method from the
okhttp3.internalpackage. 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. {/* ENG-28614 */} - Fixed a
NullPointerExceptionthat happens when NFC document does not contain a photo. {/* ENG-29091 */} - Fixed a crash when starting the
DocumentScanmodule without the tutorial or document provider options screens if theDocumentTypeto be scanned could not be determined. {/* ENG-28889 */}
Fixed (STANDARD mode only)
- Fixed an issue where the
Government Validationmodule failed to function correctly when end-to-end encryption (E2EE) is enabled. {/* ENG-27029 */} - Disabled downloading of session report PDFs in the
Resultmodule when E2EE is enabled, due to lack of server-side support for this feature. {/* ENG-29173 */}
Fixed (Capture-Only mode)
- Fixed an issue that caused a frozen screen on the last step of the
VideoSelfiemodule. {/* ENG-27938 */}
Fixed (DELAYED mode only)
- Fixed an issue with
onCombinedConsentCompleted()callback not triggering from theCombinedConsentsmodule in DELAYED mode. {/* ENG-28409 */}
Deprecations (ALL modes)
- Using the
DocumentScan(DocumentType)constructor to create aDocumentScanmodule is now deprecated. Please refer to the Migration Guide for further details. {/* ENG-28889 */}
Updated dependencies
com.airbnb.android:lottie-compose:6.3.0->com.airbnb.android:lottie-compose:6.6.3com.airbnb.android:lottie:6.4.0->com.airbnb.android:lottie:6.6.3