4.10.0
7 October 2026
- Breaking change If a flow configuration includes a module name the SDK doesn't recognize, the call now fails with an
unknownModuleerror. Previously, the SDK skipped the module, wrote a log message, and still reported the flow as successful even though the step never ran. Before you upgrade, check your flow configurations for outdated or misspelled module names. - Added an optional
documentSourcesparameter to theaddDocumentScanmodule. Pass an array of"camera","photoUpload", and"fileUpload"to restrict the submission methods offered on the source chooser. The parameter defaults to every source thedocumentTypesupports. - Added the
approvemethod, which allows you to start user approval from your code instead of relying on the flow configuration. - Changed the
approveDataresult of the in-flowapprovemodule to the same shape the newapprovemethod returns:statusandidare nowsuccessanduuid.- A new
errorkey was added. See the Migration Guide.
- Added an
integrityCompromisederror case on iOS. - Added an optional
interviewIdparameter to thegetUserScoremethod. - The
getUserScoremethod can now return two new error codes:userScoreFailed: No score could be retrieved for the session, for example in submit-only mode or after a network error.userCancelled: The user canceled before the score was returned. Android only. On iOS,getUserScoreshows no UI, so the user can't cancel it.
- Breaking change If an Android session produces no score,
getUserScorenow fails withuserScoreFailed. Previously, it succeeded with an empty result. If your app treated an empty result as a valid outcome, move that handling to your error callback. - Changed the result shape of the
getUserScoremethod; it is now an object. It contains the same payload on both Android and iOS. It addsgovernmentValidation, the per-check lists,livenessScore,photoQualityandexistingUser. - Changed the user score values on Android to no longer include the
/100suffix, in bothgetUserScoreresults and theonUserScoreFetchedcallback. - Changed the SDK to report
warnwhere it previously reportedwarningstatus on iOS. Absent values arenullinstead of"". - On Android,
getUserScorenow usesfastmode when you passfetchMode: 'fast'. Previously, it always usedaccurate. - The plugin now depends on
IncodeBridgeCommon. - The plugin now adds the URL schemes that the iOS SDK checks for jailbreak detection to
LSApplicationQueriesSchemesin your app'sInfo.plist. Entries your app already has are kept. See the Installation guide. - Breaking change The
addPhonemodule has been renamed toPhone. See the Migration Guide. - Breaking change The
addEmailmodule has been renamed toEmail. See the Migration Guide. - Added the
FullNamemodule, which collects the user's first and last name. - Added
otpVerificationanddefaultRegionPrefixparameters to thePhonemodule. Neither was previously available in Cordova. - Breaking change The
Emailmodule'sotpVerificationEnabledparameter has been renamed tootpVerification, matching the name used on the other platforms. See the Migration Guide. otpVerificationaccepts a real boolean (true) in addition to the legacy string form ("true"). Omitting it leaves the native SDK setting in place.phoneData,emailData, andfullNameDatanow share one shape: the captured value,status(success/fail), andresultCode, with both outcome fields populated on both platforms.resultCodeis the finer detail; both platforms reportsuccessanderror, and Android additionally reportsuserCancelledandemulatorDetected. On iOS, a cancellation is reported at the session level, not through a module callback.phoneDatagainsstatus; all three gainresultCode.- Breaking change The captured value (
phone,email,name) is now omitted when the SDK has none, instead of arriving as"". Check whether the key is present. - Breaking change On Android, the
setTheme()colorpositive800has been renamed topositive750, matching its name on iOS. It is the same color. The old key is ignored. See the Migration Guide.
Changes to standalone faceMatch()
- Added optional
matchType,interviewId, andidCategoryparameters. - Added
secondIdConfidenceto the result. - Renamed the
existingUserresult field toisExistingUser. - Removed
statusfrom the result. Derive it fromisFaceMatched. - Changed the error callback to receive
{ code, message, cause }instead of a bare string. Codes arefaceMatchErroranduserCancelled, replacing"FaceMatchFailed"and"onUserCancelled". - Changed the result on iOS to be returned flat, matching Android. It was nested under
faceMatchData. - When the native SDK has no value for one of these fields, the plugin now leaves the field out of the result. Previously, it filled in a default of
0,false, or"".- Android and iOS:
nfcVsIdConfidence,nfcVsSelfieConfidence - iOS only:
isFaceMatched,isNameMatched, andexistingInterviewId
- Android and iOS:
- When there's no value for one of these fields—for example, because there was nothing to compare—the plugin now leaves the field out of the result. Previously, it filled in a default.
To check whether a field has no value, test forundefinedinstead of comparing to the old default. For the fields listed above, a0orfalseis now always a real result.
Expand to view old defaults per field
| Field | Platform | Old Default |
|---|---|---|
confidence |
Android | -1 |
nfcVsIdConfidence |
Android | -1 |
| iOS | 0 |
|
nfcVsSelfieConfidence |
Android | -1 |
| iOS | 0 |
|
isFaceMatched |
iOS | false |
isNameMatched |
iOS | false |
existingInterviewId |
iOS | "" |
- Fixed the error callback never firing on iOS: failures arrived at the success callback as
faceMatchData: { debug: "..." }.
Changes to startWorkflow()
- Changed the error callback to receive
{ code, message, cause }instead of a bare string. It previously read"Failed to start workflow: <message>"on Android and"No presenting view controller available."on iOS. See the Migration Guide. - Added the
configErrorerror code.startWorkflow()now reports it whensessionConfighas neither aconfigurationIdnor atoken, instead of failing withunknownon Android or after failed network requests on iOS. - Changed
sessionConfigto be optional, matching React Native. A missing value now falls back to SDK defaults instead of rejecting the call.
Working with Android SDK 5.54.0 and iOS SDK 5.50.0
4.9.0
16 September 2026
- Added an
appleWalletMerchantIDparameter toinitializeSDK(), for iOS only. - Added the
combinedConsentsNotReceivederror case on iOS. A mandatory combined consent that has no readable text or checkbox ID now stops the flow instead of being accepted silently. - Added the
storageUnavailableerror code, for Android only. The error callback ofstartOnboarding()andstartOnboardingSection()receives it when the device cannot provide a writable images directory, so the flow now fails at start instead of losing captures later on. - Changed
MLConsentData.statuson iOS to report the choice the user made:truewhen the consent was accepted andfalsewhen it was declined. It previously reportedtruewhenever the submission succeeded. See the Migration Guide. - On Android, the Video Selfie V2 camera steps hide the close (X) button, so
cordova.exec(resolve, reject, "Cplugin", "showCloseButton", ["true"])no longer applies to them. - On Android, Signature V2 reads the title and description from the new
onboard_sdk_signature_capture_titleandonboard_sdk_signature_capture_descriptionstring resources. V1 keeps usingonboard_sdk_signature_titleandonboard_sdk_signature_description.
Working with Android SDK 5.53.0 and iOS SDK 5.49.0
4.8.0
28 August 2026
- Added the
setQuantityStringsmethod, which is used to localize plural texts on Android. - Added optional
initializeSDK()parameters:sdkMode,externalAnalyticsEnabled, andexternalScreenshotsEnabled. - Added a
sendDiagnosticsDataparameter toinitializeSDK(), for iOS only. Set it tofalseto prevent the Incode SDK from sending diagnostic data. Defaults totrue. - Removed the
isExternalTokenEnabledparameter from theinitializeSDK()method. - Added the
setSdkMode,setLocalizationLanguage, andsetStringmethods. - Renamed the
setFaceAuthenticationHintparameter fromfaceAuthenticationHinttoidentityId. - Renamed the
setUXConfigparameter fromconfigtojsonConfig. - Fixed a bug on iOS where a denied or unavailable location permission during the
addGeolocationmodule ended thestartOnboardingSectioncall immediately, before the section itself had finished. - Updated the Android build requirements:
compileSdk36, Kotlin Gradle plugin2.2.21, Android Gradle Plugin8.9.1, Gradle8.14.5, kotlinx-coroutines1.9.0and JDK 17 are now the minimums. See the Migration Guide.
Working with Android SDK 5.51.0 and iOS SDK 5.47.0
4.7.0
30 July 2026
- Removed parameter
disableJailbreakDetectionfrominitializeSDK()method. - Added
integrityCompromisederror case on iOS. - Removed the deprecated
setCommonConfig()method. UseshowCloseButton()instead.
Working with Android SDK 5.50.0 and iOS SDK 5.46.0
4.6.1
3 July 2026
- Fixed the problem where
initializemethod was freezing UI on Android. It now runs on a background thread.
Working with Android SDK 5.49.0 and iOS SDK 5.44.0
4.6.0
23 June 2026
- Added
showCloseButtonmethod to show or hide the close button during onboarding. DeprecatedsetCommonConfigin favour ofshowCloseButton.setCommonConfignow internally callsshowCloseButtonand logs a deprecation warning; it will be removed in a future major release. - Added
setSdkModemethod to switch betweenstandard,captureOnly, andsubmitOnlymodes at runtime without reinitializing the SDK. - Added
setLocalizationLanguagemethod to change the UI language at runtime (e.g.en,es,pt,he). - Added
setStringmethod to override individual UI strings with custom copy, keyed by the current locale. - Added
isInitializedmethod that returns a boolean indicating whether the SDK has been fully initialized. - Added optional
voiceConsentLanguageparameter tosessionConfigto set the voice consent language in the VideoSelfie module. Supported values: 'en', 'es', 'pt', and 'he'. Default is English. - Increased minimum Java version to 11.
Working with Android SDK 5.49.0 and iOS SDK 5.44.0
4.5.0
2 June 2026
- Added
eyesClosedCheckEnabledparameter toaddSelfieScanmodule. - Fixed
eyesClosedCheckEnabled,headCoverCheckEnabled,lensesCheckEnabled, andmaskCheckEnabledon iOS not properly disabling checks when set to"false"(was passingfalseinstead ofnilto the native SDK). - Changed default values for
maskCheckEnabledinaddSelfieScanmodule fromfalsetotrue. - Changed default values for
faceMaskCheck,headCoverCheck,lensesCheck, andeyesClosedCheckinaddFaceAuthenticationmodule fromfalsetotrue. - Removed the hardcoded Android compileSdkVersion from the Cordova plugin so it inherits the SDK configuration from the host Cordova application.
Working with Android SDK 5.48.0 and iOS SDK 5.44.0
4.4.0
12 May 2026
- Added optional
sslPinningConfigto theinitializemethod. - Added
isSkippableflag to theaddGeolocationmodule. It allows the geolocation step to be skipped. When set totrue, skipping or denying location permission advances the flow instead of ending the session with a permission error. - Added
allAttemptsExhaustedflag toaddIdandaddSelfieScanresults indicating when capture or upload retries are no longer available. - Fixed bug preventing session recording on iOS unless
forcePermissionswas explicitly provided.
Working with Android SDK 5.47.0 and iOS SDK 5.43.0
4.3.0
30 April 2026
- Added new internal Android dependency
com.incode.sdk.hybrid-bridgethat is required to have to a successful build. In case you're experiencing issues fetching it during gradle sync phase please contact your Incode representative, as your account access might have to be updated.
Working with Android SDK 5.46.0 and iOS SDK 5.42.0
4.2.0
16 April 2026
- Added support for Android SDK initialization without api key with e2ee url.
- Added optional
showIdTypeChooserparameter to theaddIdmodule. - Added ability to pass
SessionConfigtostartFaceLogin()method. This allows enabling of end-to-end encryption (E2EE) in Face Login mode on Android. TheSessionConfigwill have no effect on iOS. - Added
startOnboardingmethod. - Added
CURPValidationmodule to thestartOnboardingSectionmethod. - Updated
startOnboardingSectionmethod to supportrecordSessionConfigandsectionTagparameters, both of which are mandatory. - Changed
setupOnboardingSession,startWorkflow, andstartFlowto accept a JSON session config object instead of a plain stringconfigurationId. - Removed
autocaptureUXModeparameter fromaddIdon iOS and Android. - Removed
enableIdSummaryScreenparameter fromaddIdon Android. - Removed optional parameters
disableHookCheck,disableEmulatorDetection,disableRootDetectionanddisableVirtualEnvironmentDetectionfrominitializeSDKmethod.
Working with Android SDK 5.45.1 and iOS SDK 5.41.0
4.1.0
5 March 2026
- Fixed issue preventing custom V2 theme from applying when configured via JSON.
- Introduced
startFlowmethod. - Added
addEmailmodule to thestartOnboardingSectionmethod.
Working with Android SDK 5.44.0 and iOS SDK 5.40.0
4.0.0
28 January 2026
- Introduced
setCommonConfigmethod to enable setting of a shared runtime configuration outside of SDK initialization. - Added
setShowCloseButtonparameter insetCommonConfigthat shows a close button when set totrue. Defaults tofalse. - Fixed issue in
addIdmodule on iOS preventingenableFrontShownAsBackCheckandenableBackShownAsFrontCheckfrom being configurable. - Fixed issue in
addVideoSelfiemodule on iOS and Android preventingenableFrontShownAsBackCheckandenableBackShownAsFrontCheckfrom being configurable. - Added support for End-to-End Encryption (E2EE).
- Aligned module results on Android and iOS.
Working with Android SDK 5.43.0 and iOS SDK 5.39.1
3.0.0
19 November 2025
- Introduced
startWorkflowmethod. - Removed hardcoded Artifactory credentials from Cordova SDK
build.gradleon Android. - Deprecated
enableIdSummaryScreenparameter fromaddIdon iOS. Screen will not appear when using v2 UI. IdSummaryScreen will be removed in future update. - Updated setTheme method to also configure theme on Android platform for V2 UX.
- Fixed error handling for IncodeException errors on Android.
Working with Android SDK 5.41.1 and iOS SDK 5.38.0