9.18.0
7 October 2026
approve, getUserScore, faceMatch, and startWorkflow now return the same payloads and error codes on Android and iOS, and the Phone, Email, and FullName modules now follow the shared native contract. Several of these changes are breaking; see the migration guide for the steps to update your app.
approve
approvenow resolves{ success, uuid, customerToken, error }instead of{ status, id, customerToken }. Thestatusstring is replaced by thesuccessboolean,idis renamed touuid, and the newerrorfield reports an iOS-only approval error (alwaysnullon Android).uuid,customerToken, anderrorarenullwhen the SDK has no value for them, instead of an empty string.approvenow rejects on every failure with the native error code and message. It previously resolved{ status: 'userCancelled' }on Android when the user cancelled, and never settled at all on iOS on a non-success path.- The
Approvemodule step event now carries the same{ success, uuid, customerToken, error }payload asapproveon both platforms. - Standalone
approvenow emits anONBOARDING_STEP_COMPLETEDevent for theApprovemodule on iOS, matching Android. - The
forceApprovalargument ofapproveis now optional and defaults tofalse.
getUserScore and the UserScore module
- Added optional
interviewIdparameter to thegetUserScoremethod. - Added
userScoreFailedanduserCancellederror codes, reported by thegetUserScoremethod. - Renamed the
getUserScoremethod'smodeparameter tofetchMode. The old name is no longer read, so a call still passingmodesilently falls back to theaccuratedefault. - Changed the result shape of the
getUserScore. It now contains the same payload on both Android and iOS. And it has the full score surface asUserScoreResult—overall,idValidation(with thephotoSecurityAndQualityandidSpecificcheck lists),liveness(withlivenessScoreandphotoQuality),faceRecognition(withexistingUser),governmentValidation(withrecognitionConfidence,validationStatusandocrValidation), plusextendedUserScoreJsonData. - Changed the
UserScoremodule's step-complete event, it now delivers that sameUserScoreResultshape, replacing{ extendedUserScoreJsonData, data: { overallScore, status, facialRecognitionScore, existingUser, idVerificationScore, livenessOverallScore } }. TheUserScoretype is removed. - Changed user score values to no longer include the
/100suffix on Android, in bothgetUserScoreresults and theonUserScoreFetchedcallback. - Changed
getUserScoreon Android to reportuserScoreFailedwhen a session produced no score, instead of completing with an empty result. - Changed the SDK to report
warnwhere it previously reportedwarningstatus on iOS, and absent values arenullinstead of"". - Changed the SDK on iOS to reject the promise when the score cannot be fetched, instead of resolving with an empty result.
- Changed the SDK to no longer emit a
{ debug: … }payload on iOS when the score is empty, the result is always well-formed.
faceMatch
- Added optional
interviewId,matchType, andidCategoryparameters tofaceMatch. - Added
idCategory,isFaceMatched,isNameMatched,nfcVsIdConfidence,nfcVsSelfieConfidence, andsecondIdConfidencetofaceMatch's result on Android. These already existed on iOS. - Renamed
faceMatch's result fieldexistingUsertoisExistingUseron Android. iOS already usedisExistingUser. - Changed
faceMatch's rejection code tofaceMatchErrorwith the native error message, fromIncdSDK:faceMatch/"Error"on iOS andEUNSPECIFIEDon Android. - Changed
faceMatch's user-cancellation code touserCancelled, fromIncd::FaceMatch::UserCancelled. Other methods keep their ownIncd::…::UserCancelledcodes. - Changed
faceMatch's result fields on iOS to be omitted when the native SDK has no value, instead of defaulted tofalse/0. - Changed
faceMatch'sconfidence,nfcVsIdConfidenceandnfcVsSelfieConfidenceon Android to be omitted when there was nothing to compare, instead of returned as-1. Check whether the key is present instead of comparing to-1. - Changed
faceMatchto resolve, with those fields omitted, instead of rejecting when no confidence score can be produced. - Removed
statusfromfaceMatch's result. Derive it fromisFaceMatched. - Fixed
faceMatch's promise never settling when the installed native SDK has no handler for the method. It now rejects withmethodNotSupportedByBridge. - Split the
faceMatchTypeScript types:FaceMatchResultis the standalone result;FaceMatchCompleteEventkeeps its own shape for the module event.
startWorkflow
- Added the
configErrorflow error code.startWorkflownow rejects with it whensessionConfighas neither aconfigurationIdnor atoken. Previously this failed withunknownon Android, and on iOS only after failed network requests.IncodeSdkFlowErrorCodegains'configError', so exhaustiveswitchstatements over it need a new case. - Changed
startWorkflow's rejection code for a missing presenting screen tounknownon both platforms, fromIncd::StartWorkflowExceptionon Android andIncdSDK:startWorkflowon iOS.
Phone, Email, and FullName modules
- Breaking change
Namemodule renamed toFullName— in flow configuration, in the completion event, and in the exportedFullNameCompleteEventtype (wasNameCompleteEvent). Listeners must be updated. - Omitting
otpVerificationon thePhoneandEmailmodules now leaves the native SDK setting in place instead of forcingfalse. - Added
defaultRegionPrefixto thePhonemodule — a dialing-code override in the range1–9999. Out-of-range values are ignored. Phone,Email, andFullNameresults now share one shape:status(success/fail) plusresultCode, both populated on both platforms.resultCodeis the finer detail — both platforms reportsuccessanderror, and Android additionally reportsuserCancelledandemulatorDetected, since on iOS a cancellation is reported at the session level rather than through a module callback.Phonegainsstatus;EmailandFullNamegainresultCode.- Breaking change On Android, a failed
FullNamereported the native SDK's error message asstatus, so the value was an arbitrary sentence. It is nowfail, like every other module. - Breaking change On iOS, a failed
Phonearrived as a step error while Android delivered a completed event. It is now a completed event carryingstatus: "fail"on both platforms, matchingEmailandFullName. - Breaking change The captured value (
phone,email,name) is now omitted when the SDK has none, instead of arriving asnullor"". Check whether the key is present. - Breaking change (types):
resultCodeonPhonewas declared as'success' | 'error' | 'userCancelled' | 'emulatorDetected'but the runtime delivered the SDK's upper-snake names (SUCCESS,USER_CANCELLED). The runtime now matches the declared type.FullNameCompleteEventalso gains thenamefield, which it emitted but never declared.
iOS installation
- The plugin now depends on
IncodeBridgeCommon.
Working with Android SDK 5.54.0 and iOS SDK 5.50.0
9.17.0
15 September 2026
9.17.0
- Added optional
logoparameter to theSelfieScanmodule. - Added optional
logoparameter to theVideoSelfiemodule. - Added
storageUnavailabletoIncodeSdkFlowErrorCode. Android only. It is reported when the device cannot provide a writable images directory at flow start. - Breaking change On Android, every event name delivered through
onEventsnow uses the SDK's camelCase value form (for example,userCanceled,moduleOpened) instead of the SDK enum constant name (for example,USER_CANCELLED,MODULE_OPENED). The{ status: 'userCancelled' }value resolved by the flow promises is unchanged. - On Android, the Video Selfie V2 camera steps hide the close (X) button, so
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. - Added an optional
documentSourcesparameter to theDocumentScanmodule (camera,photoUpload,fileUpload). It supersedes the now-deprecatedshowDocumentProviderScreenflag, which is still honored whendocumentSourcesis omitted. - Added
combinedConsentsNotReceivedtoIncodeSdkFlowErrorCode. The flow rejects with this code when a mandatory Combined Consent cannot be shown because it has no readable text or checkbox ID. iOS only. - Fixed
onStepCompletednot firing for theVideoSelfiemodule on Android. The event was previously only emitted on iOS. It now emits{ module: 'VideoSelfie', result: { status: boolean } }on both platforms.
Working with Android SDK 5.53.0 and iOS SDK 5.49.0
9.16.0
28 August 2026
9.16.0
- Added optional
sslPinningConfig.forceSSLPinningtoinitialize(defaults tofalsewhen omitted). - Added
sendDiagnosticsData(iOS only) parameter toinitialize. Set tofalseto prevent the Incode SDK from sending diagnostics data. Defaults totrue. - Removed
waitForTutorialsparameter frominitializemethod. - Fixed Android build failure on React Native 0.80+ caused by a Kotlin nullability mismatch in
BaseActivityEventListeneroverrides. - Fixed Android build failure on React Native 0.81+ (
Unresolved reference 'currentActivity'). setThemenow takes{ theme }instead of{ jsonTheme }.setFaceAuthenticationHintnow takes{ identityId }instead of a string or{ faceAuthenticationHint }. The TypeScript parameter forshowCloseButtonis nowallowUserToCancel(wasshouldShowCloseButton); call sites stayshowCloseButton(true).setThemeandsetUXConfignow reject withappearanceErroron failure instead of resolving{ success: false }.- On iOS
showCloseButton,setLocalizationLanguage, andsetStringnow settle their promises. They previously returned immediately without waiting for the native call. - Appearance methods
setSdkMode,setTheme,setUXConfig, andsetLocalizationLanguagenow type asPromise<void>.setLocalizationLanguagewas previously typed asPromise<string>. - Added new required parameters
localeandquantityStringsto thesetQuantityStringsmethod. - Removed
stringsparameter from thesetQuantityStringsmethod. - Modified the
setQuantityStringsmethod to, when erroring out, return a code specific to the cause of the error alongside a message and native stack trace, instead of returning aSET_QUANTITY_STRINGS_ERRORcode.
Working with Android SDK 5.51.0 and iOS SDK 5.47.0
9.15.0
28 July 2026
9.15.0
- Added
integrityCompromisedand removedjailbreakDetectedfromIncodeSdkFlowErrorCode. - Removed
disableJailbreakDetectionparameter frominitializemethod.
Working with Android SDK 5.50.0 and iOS SDK 5.46.0
9.14.0
26 June 2026
9.14.0
- Added
setSdkModemethod to change the SDK mode (standard,captureOnly, orsubmitOnly) after initialization. - Added optional
voiceConsentLanguageparameter toOnboardingSessionConfigto set the voice consent language in theVideoSelfiemodule. Supported values: 'en', 'es', 'pt', and 'he'. Default is English. - Updated
IncodeSdkFlowError. RemovedbadEnvDetectedfromIncodeSdkFlowErrorCode. - Deprecated
showTutorialparameter inDocumentScanmodule for Android. - Fixed
setStringon Android always applying string overrides for theenlocale regardless of the language set viasetLocalizationLanguage.
Working with Android SDK 5.49.0 and iOS SDK 5.44.0
9.13.0
26 May 2026
9.13.0
- Added
isInitializedmethod to provide a hint on whether the native SDK has been initialized or not. - Updated
onStepUpdatedto fire per-attempt events forIdScanFront,IdScanBack, andSelfieScanmodules, in addition to the existingConferenceupdates. - Updated
onStepUpdatedsignature to take a{ module, listener }object (matchingonStepCompleted/onStepError), replacing the previous bare-listener form. - Updated the default values of the
lensesCheckandfaceMaskCheckparameters totruein theSelfieScanmodule.
Working with Android SDK 5.48.0 and iOS SDK 5.44.0
9.12.0
13 May 2026
9.12.0
- Added
isSkippableflag to theGeolocationmodule. 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 toIdScanResultandSelfieScanResultindicating when capture or upload retries are no longer available.
Working with Android SDK 5.47.0 and iOS SDK 5.43.0
9.11.0
28 April 2026
9.11.0
- 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
9.10.0
26 March 2026
9.10.0
- Added support for Android SDK initialization without api key with e2ee url.
- Added new parameter
showIdTypeChoosertoIDScanmodule. - Added new parameter
e2eeEncryptionEnabledforstartFaceLoginmethod that enables End-to-End Encryption (E2EE) on Android. - Deprecated
autocaptureUxModeparameter from theIdScanmodule. - Deprecated
enableIdSummaryScreenparameter from theProcessIdmodule. - Removed parameters
disableHookCheck,disableEmulatorDetection,disableRootDetection,disableVirtualEnvironmentDetectionfrominitializemethod. - Removed
simulatorDetected,rootDetected,hookDetected,virtualEnvDetectedfromIncodeSdkFlowError.
Working with Android SDK 5.45.0 and iOS SDK 5.40.0
9.9.0
27 February 2026
9.9.0
- Removed the
enableRotationOnRetakeScreenparameter from theIdScanmodule. Captured documents are now always displayed in a vertical orientation on the Review Screen. - Renamed the
showRetakeScreenparameter toshowRetakeScreenForManualCapturein theIdScanmodule. - Renamed the
showAutoCaptureRetakeScreenparameter toshowRetakeScreenForAutoCapturein theIdScanmodule. - Fixed issue preventing custom V2 theme from applying when configured via JSON.
Working with Android SDK 5.44.0 and iOS SDK 5.40.0
9.8.0
09 January 2026
9.8.0
- Fixed 'TypeError' appearing for API methods
finishOnboardingFlow,approve,deleteLocalUserDataand 'faceMatch' for React Native versions 0.8+. - Added
CombinedConsentmodule.
Working with Android SDK 5.43.0 and iOS SDK 5.39.1
9.7.0
24 November 2025
9.7.0
- Fixed error handling on Android.
Working with Android SDK 5.41.1 and iOS SDK 5.38.0
9.6.1
23 October 2025
9.6.1
- Fixed compatibility issue for new React Native architectures.
Working with Android SDK 5.40.1 and iOS SDK 5.37.0