5.46.0 (July 20th 2026)
Features & Enhancements
- Added a Video Selfie hand-gesture step. Enable with
VideoSelfieConfiguration.handGesture(enabled:). The user is asked to wave their hand across their face; the gesture is reviewed manually and is not verified on device. {/* ENG-46802 */} - Added a Video Selfie head-turn liveness challenge. Enable with
VideoSelfieConfiguration.selfieScan(performHeadMovementCheck:). After the selfie is captured the user is asked to turn their head in a random 2 of 4 directions (up/down/left/right), verified on device. On iOS 13 and 14 the challenge is limited to left/right only, because Apple Vision provides the pitch angle needed for up/down detection on iOS 15 and later. {/* ENG-46802 */}
{/* * Added the Incode Wallet demo app and Digital Credentials provider extension for local mDL presentment testing. ENG-48696 */}
{/* * Added support for TRI (Transactional Risk Intelligence) Monitoring, which tracks risk signals and helps detect misuse. ENG-46121 */}
- Unified camera permission screens across ID Capture, Face Capture, and Document Scan into a shared module. Face Capture and Document Scan now show the same pre-permission screen that ID Capture V2 uses. {/* ENG-45714 */}
- Updated analytics names for screens from FaceCapture and ID Capture Modules and added new ones for V2 experience. {/* ENG-46797 */}
- Added elementClicked analytics event for ID Capture and Face Capture modules in V2. {/* ENG-46799 */}
- Redesigned Data Entry & Forms Module to UX V2 while removing v1 experience. {/* ENG-45602 */}
- Redesigned Electronic Signature module {/* ENG-45592 */}
{/* - Removed unused error case '.jailbreakDetected'. ENG-50591 */}
- Migrated the OCR / data-confirmation screen to UX V2 (SwiftUI). The legacy V1 OCR view controller and storyboard were removed, and both OCR entry points now route through the V2 screen. {/* ENG-45589 */}
Fixes
- Fixed ID Capture V2 success screen subtitle showing "Now let's continue" instead of "Let's continue" across all locales {/* ENG-46870 */}
- Fixed an issue in ID Capture that caused
No internet connectionto be presented when the server reports request errors, instead ofProcessing failed. {/* ENG-45404 */}
{/* * Fixed an issue with incorrect default values for Face Auth and Video Selfie. ENG-45573 */}
- Fixed a class of crashes on ID capture, face enrollment, and face login tutorial screens caused by completion handlers firing more than once. {/* ENG-47997 */}
- Fixed manual capture not appearing immediately when
IncdOnboardingManager.shared.selfieTimeout = 0{/* ENG-46335 */} - Fixed camera injection test errors being silently swallowed; failed checks now report
.notSupportedinstead of leaving the result asnil. {/* ENG-41406 */} - Fixed phone module v1 with SNA activated failing if phone number was formatted with parentheses. {/* ENG-50233 */}
- Fixed Deepsight video missing from Face Capture and Face Authentication sessions when the app was backgrounded during manual capture; video recording now resumes when the app returns to the foreground. {/* ENG-47881 */}
5.45.0 (Jul 2nd 2026)
Features & Enhancements
- Added SDK Diagnostics collection. Enabled by default; opt out with
IncdOnboardingManager.shared.sendDiagnosticsData = false. {/* ENG-42393 */} - Redesigned the Combined Consent / Data Sharing Consent module for UX V2, aligning it with the latest design while preserving the existing V1 experience. {/* ENG-45461 */}
- Added UX V2 version of Document Scan module {/* ENG-39286 */}
{/* Internal: expanded unit test coverage with ~500 new tests across 14 modules (UserInfo, OTP Verification, DynamicForms, Electronic Signature, Geolocation, Face Enroll/Authentication/Login, ID Capture, Storage, Event Manager, Network, Extensions, TrueSight) and a CI workflow that posts a per-module test+coverage table comment on PRs. ENG-45753 */}
- Extended methods for loading models (
IncdOnboardingManager.shared.loadModels/IncdOnboardingManager.shared.loadModelsSynchronously) with the ability to select which models should be preloaded (all (default), ID-Capture, or Face-Capture) and to enable (default) or disable automatic unloading when onboarding is finished or cancelled. This frees ~80–100 MB that local ML models previously retained in memory between sessions. See Migration Guide for details. {/* ENG-42275 */} - Added a method for explicit unloading of models (
IncdOnboardingManager.shared.unloadModels) when the customer wants to control unloading manually. {/* ENG-42275 */} - Redesigned
NFC Scanmodule to use the Incode Design System V2. PublicaddNfcScan(...)API andNFCScanResultare unchanged. See Migration Guide for the user-visible flow changes and Localization Guide for updated string keys. {/* ENG-42782 */} - Added accessiblity voiceOver to Phone Module v2. {/* ENG-45067 */}
- Added a Digital ID file-too-large error screen when the selected PDF exceeds the upload size limit of 5MB. {/* ENG-41834 */}
- Aligned the Deepsight public API with the Dashboard flow/workflow model: new
DeepsightConfiguration(enabled,modality,motion) andDeepsightModality(singleFrame/singleFrameWithDepth/singleFrameWithDepthAndVideo), a newaddSelfieScan(deepsight:)overload, andDeepsightConfigurationsupport onFaceAuthenticationConfiguration. The previousaddSelfieScan(requireDepthData:videoLivenessRecording:)overload is deprecated (not removed). See Migration Guide for details. {/* ENG-41625 */} - Added a
motionparameter toaddIdScan(...)to enable motion-based checks during ID capture. Defaultfalse. {/* ENG-41625 */}
{/* Reworked camera exposure check for injection attack detection. ENG-31312 */}
{/* Hardened jailbreak/hook detection and removed the public disableJailbreakDetection flag; runtime hooks now fail the flow closed with the new IncdError.integrityCompromised. ENG-48682 */}
{/* Temporarily stopped sending frame duplication and frame-values deviation (all captures); both still computed and logged on device. ENG-49341 */}
- Updated device-identifier mapping with latest iPhones and iPads. {/* ENG-46665 */}
{/* Internal: added algorithmName and algorithmVersion to the device-fingerprint payload (iOS reports algorithmName="identifierForVendor" and algorithmVersion="1.0.0") so backend analytics can identify which platform API produced the device hash. Cross-SDK with Android and Web. ENG-44006 */}
- Added
documentSourcesparameter toaddDocumentScanfunction {/* ENG-46423 */}
Fixes
- Fixed Done button in Dynamic Forms not enabling once all fields were populated. {/* ENG-11604 */}
- Fixed Video Selfie incorrectly reporting an internal recording error after the max video length was reached. {/* ENG-38028 */}
- Fixed ID Capture showing
No internet connectionwhen uploading a PDF larger than 5MB; it now shows the file-too-large error and supports retrying with another file. {/* ENG-43431 */} - Fixed false "No Internet Connection" snackbar shown during ID capture for non-network errors. {/* ENG-44942 */}
{/* - [DemoApp] Fixed infinite spinner showing in Accept Terms view, if cookies accepted is enabled ENG-46685 */}
Fixed dashboard config overriding code-set geolocation
isSkippableinstartOnboarding/startOnboardingSection. {/* ENG-45455 */}Fixed error handling in Phone Module v1 and v2. {/* ENG-43782 */}
Fixed V1 ID upload now returns the user to the camera when they tap Retry on the no-network snackbar, instead of re-uploading the cached image (avoids the case when backend processed the original request despite a dropped connection). {/* ENG-44942 */}
Improved internal method swizzling for better third-party SDK compatibility. {/* ENG-46570 */}
Fixed a Swift task continuation misuse crash in face capture tutorial screens. {/* ENG-45278 */}
5.44.0 (May 22nd 2026)
Features & Enhancements
- Added Hebrew (
he) localization. The SDK now ships Hebrew translations for all UI strings, andIncdLocalization.localizationLanguageaccepts full locale identifiers such ashe-IL(resolved tohe.lprojwhen no exactlprojmatch is found). {/* ENG-43242 */} IncdTheme.logonow applies to V2 screens in addition to V1. The logo is resolved in the following order: customUIImageset viaIncdTheme.logo, then theincdOnboardingLogoasset from the host app's main bundle, then the SDK bundle's default. {/* ENG-44119 */}- Added SNA (Silent Network Authentication) to
Phone Module(Only available via Flows integration and on new variant-sna). {/* ENG-41358 */}
Fixes
- Fixed issue with cancel event being lost when canceling onboarding. {/* ENG-43612 */}
- Fixed ID side validation so wrong-side ID scans show feedback instead of being auto-captured. {/* ENG-43582 */}
- Fixed image buffer processing continuing in the background after cancelling the ID capture screen on V2. {/* ENG-43507 */}
- Fixed Face Capture continuing incorrectly when microphone permission is denied for audio streaming; it now ends with
streamAudioPermissionsDenied. {/* ENG-16044 */} - Fixed an issue where the selfie image was missing in Face Match when using Face Authentication. {/* ENG-43687 */}
- Fixed VoiceOver accessibility issues on Face Capture error and ID Capture result screens. {/* ENG-44436 */}
- Fixed button label on ID capture confirmation screen (UX V2). {/* ENG-44404 */}
- Fixed incorrect default config values for Face Capture. {/* ENG-35508 */}
- Fixed issue with user-uploaded document (like for ID Capture or Electronic Signature) not being removed, when local data is cleared. {/* ENG-44189 */}
- Fixed inverted
OcclusionCheck.Severitythresholds where.lowand.highwere swapped, causing occlusion checks to behave with the opposite strictness. {/* ENG-45200 */} - Fixed camera permission denied alert not appearing in V1 ID Capture and Face Capture, leaving the user stuck with no way to exit onboarding. {/* ENG-46269 */}
{/* * [DEMO app] Fixed missing heading trait on Verification Complete screen title for VoiceOver users. ENG-44437 */}
5.43.0 (May 5th 2026)
Features & Enhancements
- Improved the
Geolocationmodule UX by adding a retryable Location Unavailable screen when permission is granted but coordinates or backend confirmation fail, and by surfacing No Internet screen when the backend call fails due to connectivity. {/* ENG-40826 */} - Updated Subtitle Text on Review Document Scan Screen {/* ENG-43368 */}
- Redesigned
Phonemodule {/* ENG-41356 */} - Added SNA (Silent Network Authentication) to
Phonemodule. Activate via Dashboard in supported countries and phone carriers. If SNA is not supported OTP will be used. {/* ENG-39637 */} - Added Accessibility support for ID-Capture and Face-Capture {/* ENG-42468 */}
- Face occlusion detection threshold is now configurable from the Incode dashboard for Face Capture and Face Auth. {/* ENG-43447 */}
- Added on-device age verification support (available only in -l variant with e2ee configuration). {/* ENG-42581 */}
- Added
allAttemptsExhaustedtoSelfieScanResultandIdScanResult, indicating when capture or upload retries are no longer available. {/* ENG-41981 */} - Added per-attempt callbacks
onIdFrontAttemptCompleted,onIdBackAttemptCompleted, andonSelfieAttemptCompletedtoIncdOnboardingDelegate, fired after each individual capture attempt with its specific result and status. {/* ENG-44236 */} - Added skip support to the
Geolocationmodule. The newisSkippableparameter onaddGeolocation(isSkippable:)allows the geolocation step to be skipped, and the same behavior is read automatically from the dashboard workflow configuration viaallowUserToSkipGeolocation. When enabled, skipping or denying location permission advances the flow instead of ending the session with a permission error. {/* ENG-44713 */} - Reworked the
Geolocationmodule's no-permission and location-unavailable screens to honorisSkippableparameter:- UI: When the module is not skippable, the no-permission screen's secondary button changes from
Skip this steptoQuit process, and on the location-unavailable screenTry Againis replaced withQuit processonce retries are exhausted. When the module is skippable, the location-unavailable screen falls back toSkip this steponce retries are exhausted. - Callbacks: Added
IncdFlowError.locationUnavailable, fired viaonErrorwhen a non-skippable module exhausts retries on the location-unavailable screen and the user tapsQuit process. Non-skippable location-permission denials fireIncdFlowError.permissionsDenied. For skippable modules, both Skip paths complete the step viaonGeolocationCompletedwithGeolocationResult.error = .locationUnavailable. - Analytics: Added new screen event
GEOLOCATION_UNABLE_TO_VERIFY, fired when the location-unavailable screen is shown. - The location-unavailable screen now caps user-driven retries at 2; the third consecutive failure swaps
Try AgainforSkip this step/Quit process. {/* ENG-44897 */}
- UI: When the module is not skippable, the no-permission screen's secondary button changes from
{/* * Added [DeepsightVideo] diagnostic logs across Face Enroll, Face Authentication, SampleBufferVideoRecorder, and video import to attribute the exact reason when a Deepsight liveness video is missing. ENG-43652 */}
Fixes
- Fixed Title Overlap with Close Button on Document Scan Flow {/* ENG-43368 */}
- Fixed duplicate screenClosed event being fired for the last screen in a flow. {/* ENG-43887 */}
- Fixed manual capture in Face Authentication not recording deepsight video on subsequent attempts. {/* ENG-44118 */}
- Fixed
deleteLocalUserDataleaving certain session files on the device after being called. {/* ENG-42580 */}
{/* * Fixed duplicate Face Enroll capture result processing while async capture handling is still in progress. ENG-44118 */}
5.42.0 (Apr 24th 2026)
Features & Enhancements
- Added UX V2 Dashboard Configuration for Flows & Workflows {/* ENG-39455 */}
- Redesigned
UserNameInfomodule {/* ENG-32742 */} - Redesigned
Emailmodule {/* ENG-32742 */} - Redesigned
CreditCardCCVmodule {/* ENG-32742 */} - Enabled high resolution ID and Face capture via
clientExperimentId. Passhigh_res_capture(optionally combined with other experiments using|) to opt in. {/* ENG-42694 */} - Redesigned
EKYCmodule {/* ENG-36460 */} - Lottie animations are now automatically tinted with the
brand500color from the color palette, including tutorials, document chooser icons, capture feedback, and loading spinners. {/* ENG-32601 */} - Improved accepted documents list display on id process screen. {/* ENG-42820 */}
Fixes
- Fixed an issue where CURP validation could fail in workflows due to the session completing prematurely. {/* ENG-42718 */}
- Added optional
mimeTypeto theDocumentScanResultmodel, indicating the MIME type of the content in thedatafield. {/* ENG-40245 */} - Fixed nudge color on the ID Capture V2 fake permission bottom sheet to
surfaceNeutral200. {/* ENG-38291 */} - Fixed a crash in the Video Selfie module when progressing to the next step. {/* ENG-41768 */}
- Fixed an intermittent crash during Face Login. {/* ENG-41768 */}
{/* * Fixed hasDepth upload flag being incorrectly set to false when deepsightLiveness configuration is nil, even if depth data was successfully embedded in the captured image. Affects Face Authentication, Face Enrollment controller, and Face Enrollment handler. ENG-41411 */}
{/* * Fixed Deepsight selfie video recording failing silently when AVAssetWriter could not start; errors are now propagated and the capture flow surfaces a failure instead of uploading without video. ENG-41401 */}
{/* * Added expectedDepth flag to selfie upload metadata, indicating whether depth data was expected based on device capability. Selfie metadata and depth-enriched frame are now returned in SelfieScanResult for all capture-only selfie captures. ENG-41621 */}
{/* * Fixed thread safety issues in IncdCameraSpoofDetector where shared mutable state was accessed without synchronization from the capture callback ENG-41407 */}
5.41.0 (Apr 7th 2026)
Features & Enhancements
UI MODERNIZATION
- Redesigned the CURP Validation module to use the Incode Design System V2. Form fields, layout, and typography now align with the V2 theme. See Migration Guide for renamed localization keys. {/* ENG-32747 */}
- Updated design on ID Scan module to display multiline text. {/* ENG-41250 */}
- Updated V2 theme color tokens for positive and negative semantic states. Palette keys
negative500→negative400,negative600→negative500,positive600→positive500,positive800→positive950. If you customizeIncdTheme's color palette, see Migration Guide. {/* ENG-41979 */}
{/* - Added Toast message presenter component. ENG-35307 */}
{/* - Implemented German localization by translating English with AI. ENG-40291 */}
{/* - Updated API call omni/finish-status to use POST method instead of GET. ENG-39012 */}
{/* - Automatically remove unneeded Face Match module from the flow when usSmartCapture is enabled and no front id has been scanned. ENG-39303 */}
{/* - Added capture interruption detection during spoof challenges. ENG-40836 */}
{/* - Added frame duplication detection during camera capture. ENG-40834 */}
{/* - Added ID capture values deviation analysis. ENG-40838 */}
{/* - Added face capture values deviation analysis. ENG-40837 */}
{/* - Fixed crash with Digital ID and camera tests. ENG-42476 */}
ID DOCUMENT CHOOSER
- ID Document Chooser now uses a compact card layout only. The screen title has been updated to "Select how to verify" and an Upload Digital ID option has been added. {/* ENG-39098 */}
- ID Document Chooser visibility is now controlled solely by the
showIdTypeChooserparameter inaddIdScan. Previously, settingidTypeimplicitly hid the chooser. The configuredidTypeis now only used as a pre-selection when the chooser is disabled (showIdTypeChooser == false). See Migration Guide for details. {/* ENG-39107 */} - Added Dashboard Configuration of the ID Document Chooser Screen. {/* ENG-39107 */}
CAPTURE & PROCESSING FLOW
- Introduced a "Processing" status in the Selfie module. After capture succeeds, users now see a brief indicator before the upload begins, providing clearer feedback between capture and upload. {/* ENG-40411 */}
- Improved the Capture-only flow to use the Analyze screen, with Processing (Security Check) only. {/* ENG-41111 */}
- Processing (Security Check) on Analyze screen, before Uploading. {/* ENG-40394 */}
CONFIGURATION & CUSTOMIZATION
- Selfie image quality threshold is now configurable from the Incode Dashboard. {/* ENG-39719 */}
- Added
.yesnoquestion input type to the Dynamic Forms module. Questions configured with this type render as a Yes / No radio group. Localization keysincdOnboarding.dynamicform.yesandincdOnboarding.dynamicform.noare available for customization. {/* ENG-38847 */} - Added support for replacing the default tutorial Lottie animations in ID Scan and Face Scan modules. Place your own
.jsonor.lottiefiles in the app's main bundle using the following names:id_scan_tutorial,id_back_scan_tutorial,passport_scan_tutorial,tutorial_selfie_v2. Refer toUSER_GUIDE_CUSTOMIZATION_v2for details. {/* ENG-41612 */}
Fixes
UI/THEMING
- Fixed incorrect color tokens applied to the Face capture spinner. During active capture, the spinner now uses
.borderFocus; during uploading it uses.borderPositiveStatic. Previously, swapped palette entries caused wrong colors in certain themes. {/* ENG-38342 */} - Face capture spinner now reflects color from
borderFocusduring capture over the system theme in respect to theIncdTheme.displayMode. {/* ENG-41168 */} - Fixed the Close (X) button on the ID Scan screen displaying different colors depending on the device theme. The button is now always white, consistent with the dark camera overlay background. {/* ENG-40718 */}
- Fixed the Close (X) button on the Face Capture processing screen not following the active theme's text color token. {/* ENG-40716 */}
FACE CAPTURE & AUTHENTICATION
- Fixed the camera freezing for several seconds when opening Face Capture for the first time in a session. {/* ENG-39670 */}
- Fixed missing depth data in face capture sessions. {/* ENG-41336 */}
- Fixed local Face Login (1:1 and 1:N modes) not animating the camera view away before showing the result screen. Behavior now matches the server-side login flow. {/* ENG-39775 */}
- Fixed Face Authentication missing some events and security checks. {/* ENG-41945 */}
- Fixed the Close (X) button in Face Authentication not showing a confirmation dialog when tapped. {/* ENG-41313 */}
ID SCAN
- Fixed missing Try Again button on the error state screen in the IDScan module. {/* ENG-42284 */}
{/* - Fixed unwanted API call to omni/asset/info in capture-only mode. ENG-40016 */}
- Fixed crash by removing option to cancel flip ID animation. {/* ENG-41312 */}
STABILITY / FREEZES & CRASHES
- Fixed an app freeze triggered by a "Face not found" error on the Front ID scan. {/* ENG-38732 */}
- Fixed an app freeze that occurred when uploading the Secondary ID Scan. {/* ENG-39917 */}
- Fixed an app freeze triggered by completing a usSmartCapture barcode scan. {/* ENG-39303 */}
- Improved Lottie animation loading to be fully asynchronous, preventing potential UI blocking when loading large animation files on the main thread. {/* ENG-28989 */}
- Fixed Selfie, Face Authentication, and Face Login modules incorrectly resuming camera autocapture and video recordings after the app returned from background during the processing or uploading stage. {/* ENG-41167 */}
NETWORKING & SESSION
- Fixed issue where upload request times out when networking is routed through VPN. {/* ENG-41511 */}
- Fixed
onErrordelegate not being called when SSL pinning fails during session creation. {/* ENG-37493 */}
ACCESSIBILITY & LOCALIZATION
- Fixed incorrect Spanish and Portuguese translations for the manual capture prompt. The ES/PT strings for "Take the photo manually" now match the English source. {/* ENG-40723 */}
- Fixed missing
accessibilityLabelon the Take Photo button in Selfie Scan, improving VoiceOver support. {/* ENG-41982 */}
5.40.0 (Feb 20th 2026)
Features & Enhancements
- Added Quit process button to the screen when user denies camera permissions. {/* ENG-39674 */}
- Fake permission 'Learn more' screen now shows a confirmation dialog when Quit process button is tapped. {/* ENG-39672 */}
- Added camera permission event tracking for Face Enroll, Face Login, Video Selfie, Document Scan, and ID Capture modules. {/* ENG-36278 */}
- Limited feedback message title and subtitle to 2 lines on ID Capture v2 screen. {/* ENG-34903 */}
- Turned off swipe gestures to go back between module screens in all iOS versions since they caused crashes. {/* ENG-33063 */}
- Added Geolocation UX V2 module. {/* ENG-32621 */}
- Adjusted UI layout for Manual capture button on ID v2 experience. {/* ENG-37639 */}
- Updated Loading, Error, and Success States for Face Authentication and Face Login V2 experience. {/* ENG-37326 */}
- Adjusted Header text layout on ID Capture v2 to prevent it from overlaying with the Cancel button. {/* ENG-37637 */}
- Added backend checks for Lenses, Headwear, Face Mask, and Closed Eyes to Video Selfie. {/* ENG-33209 */}
- Supporting async_resolution node types in Workflows. {/* ENG-36699 */}
- Added Optional Fields to Dynamic Forms. {/* ENG-31591 */}
- Added
presignedVideoFileURLtoSelfieScanResult. {/* ENG-38057 */} - Increased the customer logo height to 35pt on V2 experience. {/* ENG-39657 */}
- ID Capture V2 UI color updates: {/* ENG-38312 */}
- Capture frame during processing now uses focus500 in light and focus400 in dark mode.
- Capture countdown background now uses gray900 in both light and dark modes.
- Capture countdown border gradient removed and now uses gray100 in both light and dark modes.
- Realtime feedback background now uses gray1000 in both light and dark modes.
Fixes
- Fixed a crash when user came back from settings after declining camera permissions. {/* ENG-39672 */}
- Fixed PoA document scan showing connection error for unrecognized documents. Increased the document upload timeout. {/* ENG-31255 */}
- Fixed content alignment on Learn More About Camera Permissions screen to be vertically centered. {/* ENG-37613 */}
- Fixed a bug where Video Selfie Module asks to scan back side of an ID document when a passport document is previously scanned. {/* ENG-37779 */}
- Fixed a bug where Video Selfie Module ignored OnlyBack/OnlyFront ID module configurations. {/* ENG-37783 */}
- Fixed camera preview glitch when streaming is enabled during ID capture. {/* ENG-35690 */}
- Fixed Selfie module not transitioning to the next module on Simulators. {/* ENG-30489 */}
- Fixed button padding on ID Capture Help Screen. {/* ENG-37922 */}
- Fixed wrong icon order and overlapping between tooltips and title on Face Match screen. {/* ENG-37196 */}
- Fixed issues with camera injection test in Face Enroll in captureOnly mode. {/* ENG-38401 */}
- Fixed ID Upload screen layout issues on smaller screens. {/* ENG-38741 */}
- Fixed logo size mismatch for V2 experience. {/* ENG-38796 */}
- Fixed button spacing on the camera permission denial screen. {/* ENG-38288 */}
- Fixed minimal realtime feedback overlap on ID Capture screen. {/* ENG-38310 */}
- Fixed ID capture realtime feedback and header subtitle color. It is using now
textBodyTertiaryStaticcolor. {/* ENG-38289 */} - Fixed missing depth data in some cases on manual capture for Face Enroll module. {/* ENG-36330 */}
- Fixed bad exposure on captured face images and ID images. {/* ENG-35525 ENG-39660 */}
- Fixed a rare issue where the ID upload screen could be presented twice, causing the capture flow to become unresponsive. {/* ENG-39609 */}
- Fixed an issue where the Face Capture feedback label appeared on the Upload screen after capture. {/* ENG-39600 */}
- Fixed missing No Network screen on ID Capture Upload Screen for V2 experience; network errors now present the no-network screen and retry without consuming the user's upload attempts. {/* ENG-39696 */}
- Fixed customization of realtime feedback text color on Selfie V2. {/* ENG-39949 */}
{/* - Added errorMessage to reported events ENG-39672 */}
{/* - [DEMO app] Update “Launch Screen and Demo Configuration” for Omni Demo App to UXv2 ENG-35307 */}
{/* - [DEMO app] Update “Splash Screen, API Input Configuration, and Result Screens” for Omni Demo App to UXv2 ENG-35306 ENG-35301 ENG-35310 */}
{/* - Extend deleteLocalUserData to deal with deepsight videos, login attempts and template ids ENG-38351 */}
{/* - [Infra] Enforcing Swiftlint and pre-commit hooks. Cleaning up the entire project. ENG-38984 */}
{/* - [Cancelled] Fixed subtitles in ID V2 Capture Header and Realtime Feedback message container not using 'gray0' primitive for its text color. ENG-37609 */}
5.39.1 (Jan 09th 2026)
Fixed
- Running onboarding section upon module cancelation is again possible. {/* ENG-37764 */}
5.39.0 (Dec 31st 2025)
- Introducing the Non-UI mode for the ID Capture module. Refer to
USER_GUIDE_NON_UI.mdfor more. {/* ENG-31537 */}
{/* - Changed depth data embedding method. ENG-34024 */}
- Update phone number formatting and validation. {/* ENG-34063 */}
- Postal Code field in EKYB Module now accepts alphabetical characters. {/* ENG-34278 */}
- Fixed a crash that occurred when the user repeatedly tapped the CTA button on Video Tips tutorial screens. {/* ENG-35919 */}
- Added Face Match screens for the v2 experience with
showLivenessStatusparameter to display liveness status UI (defaults to false in V2, true in V1). {/* ENG-32837 ENG-30377 */} - Added support for
CustomModulein Workflows. ImplementonCustomModuleStarteddelegate method to pause a flow, execute custom logic, and resume at the module's next node. {/* ENG-32792 */}
{/* - Fix Motion Tracking in capture-only mode. ENG-36585 */}
- Added a way to skip Document Scan step. {/* ENG-31766 */}
- Added Review screen for the ID Capture V2 experience; In
addIdScanmethod, renamedshowRetakeScreenintoshowRetakeScreenForManualCapture, renamedshowAutoCaptureRetakeScreenintoshowRetakeScreenForAutoCapture, and removedenableRotationOnRetakeScreenparameter; RemovedIncdOnboardingManager.shared.enableRotationOnRetakeScreenflag. {/* ENG-33415 */} - Refined UI for Face Capture v2 experience; Added
incdOnboarding.FaceCapture.CaptureButton.cameraIconcustomizable asset for manual capture button icon. {/* ENG-29146 */}
{/* Added trueDepthDataMissing as manual check reason. ENG-35384 */}
- Added separate error message in Selfie Scan and Face Auth modules when the capturing face is occluded or partially covered. {/* ENG-36323 */}
- Updated Selfie tutorial subtitle text. {/* ENG-35942 */}
- Fixed captureAttemptFinished event module name for ID Capture {/* ENG-31175 */}
- Add additional event data to
onEvents(_:)delegate method {/* ENG-37134 */} - Updated Loading and Success Face Capture State for v2 experience {/* ENG-36640 ENG-36642 */}
- Updated No Internet Connection Error Screen for v2 experience {/* ENG-36640 ENG-36642 */}
{/* - Added new endpoint for uploading deepsight videos and added checksum to UploadMetadata. ENG-36179 */}
- Added parallel barcode scanning to the ID scan module when usSmartCapture is enabled. {/* ENG-35393 ENG-36650 */}
5.38.0 (Nov 9 2025)
- V2 user experience now possible when using SDK without api key. {/* ENG-32840 */}
- Fix
setupOnboardingSession,startFaceLoginmethods andonErrordelegate callback returningnotInitializedinstead of ajailbreakDetectederror when being run on jailbroken devices {/* ENG-34543 */} - Renamed param
showTutorialtoshowTutorialswhen configuring Face Authentication module {/* ENG-33174 */} - Added local authentication statistic data store and manual server sync feature. This feature is used when device is offline while using the local login feature and we need to log authentication attempts to the server at a later time. Setting new
storeLocalAuthenticationEnabledflag as true will store the authentication attempts data. Then new API functionsyncFaceLoginAttemptscan be called when device is back online to log all stored attempts. Progress can be tracked using newIncdLoginDelegatefunctiononSyncProgressUpdate(completionPercentage: Float). {/* ENG-25106 */} - Fixed a bug that prevented deepsight from executing when using the sections API. {/* ENG-32988 /}{/ - Updated face attributes model to 1.3 ENG-30732 */}
- Fixed the appearance of the ID Capture 'Common issues' screen on iOS 13. {/* ENG-30999 */}
- Fixed setting mark for manual review when user denies camera permission or cancels selfie capture {/* ENG-18239 /}{/ - Fixed exposure test being visible when using sections in capture only ENG-30817 */}
- Updated UI of ID Capture Help screen for the V2 experience. {/* ENG-30219 /}{/ - Updated CPU-only flag application for ML models initialization; Enabled CPU-only mode for IncdSelfieQualityEstimator to resolve runtime data alignment warnings and reduce possible freezes. ENG-32757 */}
- Added Age assurance tutorial screen for Selfie v2 experience. {/* ENG-32738 */}
- Added Age assurance tutorial screen for ID v2 experience. {/* ENG-32740 /}{/ - Improved Jailbreak detection: Added constants for modern tools, protection against system functions hooking, and additional checks. ENG-33916 */}
- Added support for the V2 UI for Login and Authentication {/* ENG-31460 */}
- Updated processing screen UI for the ID v2 experience. {/* ENG-31422 */}
- Deprecated
enableIdSummaryScreenparameter from addIdProcess. Now function signature remainsaddIdProcess(idCategory: IDCategory){/* ENG-33662 */} - Fixed 3-2-1 counter on V2 ID scan {/* ENG-33701 */}
- Added support for US Smart capture feature in Id capture module. Activate via dashboard. Contact your Incode representative for participating states driver's licence. {/ENG-33081/}{/* - Improved Deepsight Metadata uploading procedures. ENG-33915 */}
- Added metadata field in IdScanResult. It represents proprietary capture metadata, required by the Incode Omni SDK, that is associated with this ID Scan capture session. {/* ENG-34287 */}
- Added frameWithDepth field in SelfieScanResult. It contains a base64-encoded selfie image captured during the Selfie Scan step, enriched with AVDepthData. {/* ENG-34287 */}
- Added new Digital ID flow to ID Scan module {/* ENG-25688 */}
Known Issues:
- ID Scan module: White/black screen may appear briefly upon camera open/closure.
5.37.0 (Sep 9 2025)
- Resolved multiple UI discrepancies for ID Capture v2 {/* ENG-29028, ENG-29029 */}
- Fixed a bug where user can enter multiple characters in PhoneVerification OTP Fields {/* ENG-3406 */}
- Removed
-e2eevariant; E2EE functionality is now built in the basic SDK; Deprecatede2eEncryptionAlgorithmparameter {/* ENG-27583 */} - Fixed an issue in NFC Scan where the birth date and expiration date were incorrectly read. {/* ENG-30599 */}
- Updated the Selfie v2 error upload screen to align with the v2 design style. {/* ENG-29165 */}
- Added UX config customization for positioning of the ‘X’ button. {/* ENG-31467 */}
- Added UX config customization for hiding the "Verified by Incode" footer. {/* ENG-31569 */}
- Added
incdOnboardingLogoFooterimage asset that is now used by "Verified by Incode" footer" {/* ENG-31979 */} - 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-31976 */}
- Selfie scan in V1 UI no longer shows incode logo on top during the capture. {/* ENG-31567 */}
{/* - Move Bitrise Configuration to Git Repo and Optimize Workflow Reuse. ENG-29237 */}
{/* Add File Logger in Debug Mode. ENG-29552 */}
- Fixing feedback messages on manual Face Capture. {/* ENG-29147 */}
- Fixed autogenerated document names in QES. They are now named Contract followed by their respective ordinal numbers. {/* ENG-29190 */}
{/* - Removed old Video Selfie implementation ENG-27593 */}
- Fixed ODR feature initialization {/* ENG-26306 */}
- Fixed VideoSelfie Document Scan crash {/* ENG-29912 */}
- Adjusted NFC processing messages {/* ENG-30687 */}
{/* - Removed redundant use of Keychain storage. Sensitive data is now held in memory only during runtime. ENG-27664 */}
- Expanded NFC PACE protocol support to all supported iOS versions (iOS 13+). Previously limited to iOS 15+. Applicable only for the '-nfc' variant. {/* ENG-30450 */}
- Added "All photos are encrypted" label to ID Capture V2 experience. {/* ENG-31494*/}
- Added capability to move the help button in IDCaptureV2 via UXConfiguration class to bottom Left, top right and top left of the screen. {/* ENG-31492 */}
- Added minimal variant UX for feedback in IDCapture V2. {/* ENG-30220 */}
- Added support for the
Face Authenticationmodule that performs a selfie scan to authenticate the user. {/* ENG-30630 */} - Send hashed session id to StatSig {/* ENG-28871 */}
- Added
gray0color to the customizable palette for the V2 experience {/* ENG-31432 */} - Added UX config customization for adjusting headers alignment for certain screens. {/* ENG-32017 */}
- Updated camera permission request flow in the ID Capture V2 experience. {/* ENG-30218 */}
- Added ability to fine-tune CTA button UI properties for the V2 experience, independently of Palette colors. {/* ENG-30218 */}
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.
5.36.0 (July 29 2025)
- Fix Video Selfie Questions Stuck on First Install {/* ENG-28241 */}
- Replaced NFC tutorial animations from mp4 files to dot lottie animations. {/* ENG-27618 */}
- Added showSelfieStepFirst(_:) method to
VideoSelfieConfigurationto change the order of VideoSelfie steps. When set to true, the Selfie scan step is shown before the ID scan step. Default behavior shows the ID step first. {/* ENG-28367 */} - Add Select from Predefined Options Input in Dynamic Forms {/* ENG-24583 */}
- Remove Excessive Logging of Sensitive Data {/* ENG-27665 */}
- Fix Passport Capture Preview is not Fully Blurred {/* ENG-27206 */}
- Fix manual ID capture when user taps on Help button while streaming is on {/* ENG-26476 */}
- Added parameter
returnResultImmediatelytoaddNfcScan(...)which allows client app to handle errors and retries. {/* ENG-28910 */} - Fixed preview orientation when uploading captured ID in the v2 capture experience. {/* ENG-27041 */}
- Added support for .lottie format files for animations in all tutorial screens. {/* ENG-27614 */}
- Fixed alignment issue for the "No ID Detected" animation when capturing horizontal ID (for new ID capture experience) {/* ENG-27883 */}
- Prevent automatic face capture from being triggered while the Face Capture Error screen is displayed. {/* ENG-28498 */}
- Updated animation and added support for light/dark appearance for the "flip ID side" screen (for new ID capture experience). {/* ENG-28486 */}
- Improved error handling for authentication failures in the NFC tag reader. {/* ENG-28831 */}
- Use the v2 Incode logo for Selfie v2 {/* ENG-26764 */}
- Added
displayModeproperty toIncdThemeto setup light/dark UI appearance for v2 experience. Default is 'light'. {/* ENG-26886 */} - Added analytics with SDK integration statuses at the start of onboarding flows {/* ENG-28508 */}
- Fixed eKYC module using incorrect watchlist event names by adding dedicated
EKYC_PROGRESSevent {/* ENG-22759 */} - Remove Kiosk storyboard files from non-Kiosk variants {/* ENG-29431 */}
- Removed unnecessary external screen tracking events when picker views are displayed in dynamic form modules {/* ENG-22759 */}
- Added face detection feedback message in selfie scan module when face is not properly aligned within the capture frame {/* ENG-29140 */}
- Added frames streaming feature for Server Login {/* ENG-17929 */}
- Added support for onlyBack option in IDCapture Module set by dashboard flows/workflows {/* ENG-29124 */}
- Add More Information to
switchToManualCaptureFrontId&switchToManualCaptureBackIdevents {/* ENG-29688 */} - Add missing custom label in face capture view {/* ENG-30355 */}
- Fixed UI freeze in ID capture experience when recording is enabled. {/* ENG-30009 */}
- Fixed Selfie capture module dismissal behavior. {/* ENG-31079 */}
{/* - Fixed StatSig reconnection when env/clientID changed without restarting the app. ENG-28484 */}
{/* - Fixed stream audio recording in face capture. ENG-21055 */}
{/* - Fix minimum length video selfie recording. ENG-21060 */}
{/* - Fixed multiple sequential calls of pause/resume for the Face capture session ENG-30303 */}