Changelog
1.11.0 - 22.10.2026
Added
- Blink detection was added to the VideoRecord step:
StepBuilder.setBlinkDetectionEnabled(_:). When enabled, the user's blink count is measured during the recording and sent to the backend logs as a liveness signal (LIVENESS_SIGNALS); it does not affect the outcome of the flow. The default value isfalse, and it only takes effect on the.videoRecordstep. - Device and system information (
SYSTEM_INFO) is now sent to the backend logs once per flow.
Changed
- For events other than
start, log entries without extra information now include the verification library's accumulated logs in JSON format (aligned with Android). - The
IdVerificationdependency was upgraded to1.0.9. After upgrading, running File > Packages > Reset Package Caches in Xcode is recommended.
1.9.0 - 20.10.2026
Added
- Lottie (
airbnb/lottie-spm,4.5.0 ..< 5.0.0) is now declared as an SPM dependency. Lottie is no longer embedded in the SDK binary and is linked dynamically; if your app also uses Lottie, SPM merges both into a singleLottie.framework. Lottie is not part of the SDK's public API, and no extra configuration is required on the integration side.
Changed
- The
IdVerificationdependency was upgraded to1.0.7. After upgrading, running File > Packages > Reset Package Caches in Xcode is recommended. - Duplicate MRZ / OCR packages were removed from the dependency graph:
QKMRZScanner,QKMRZParser,SwiftyTesseractandlibtesseractare no longer added to the project, andocrb.traineddatais bundled into the app only once. - The SDK binary and its resources are significantly smaller, reducing the impact on app size.
- The package without video call does not include the LiveKit / WebRTC dependencies (
client-sdk-swift,webrtc-xcframework,livekit-uniffi-xcframework,swift-protobuf). Versions with video call are published separately under tags suffixed with-withLivekitand-withVideocall. - In the LiveKit variant (
-withLivekit), theclient-sdk-swiftpackage dependency was removed and replaced bywebrtc-xcframework(exact: 150.7871.2) andlivekit-uniffi-xcframework(0.1.9). - The framework bundle version (
CFBundleShortVersionString) now matches the release tag.
Removed
- Template images and animations that became unused in 1.8.0 were removed from the SDK. Accordingly,
Asset.Animations.idHologram,Asset.Animations.loading,Asset.Images.card,Asset.Images.idGuideFront,Asset.Images.idGuideBack,Asset.Images.idGuideRuPassportandAsset.Images.passportwere removed from the publicAssetenum. Integrations that access these assets directly need to be updated.
Notes
- If your app also uses
lottie-spm, a one-timeClass _TtC11_LottieStub10LottieStub is implemented in both …warning may appear at launch. This class is an empty helper target oflottie-spmand is never used; the warning is harmless and does not affect Lottie animations.
1.8.0 - 02.10.2026
Added
- The passport step now automatically detects whether the passport is a new or old type. The detected type is sent to the backend in the document upload request as the
passport_typefield (new,old, orunknown). No additional configuration is required on the integration side.
Changed
- Redesigned the capture screen in the ID front, ID back, and passport steps: the static template images were removed, and the area where the document should be placed is now shown as a document frame over a semi-transparent background.
- Face detection in the liveness step now waits for the user's face to become stable before capturing an image, reducing blurry captures caused by moving frames.
- Upgraded the
IdVerificationdependency to version1.0.6. After upgrading, running File > Packages > Reset Package Caches in Xcode is recommended.
Fixed
- Fixed the device screen dimming and auto-locking during the flow. The SDK now keeps the screen awake for the duration of the flow and restores the setting when the flow ends.
1.6.14 - 15.09.2026
Added
- Added the KPS step: an Identity Sharing System verification with no user interface, in which the SDK performs the backend query directly and moves to the next step based on the result. Used via
.setStepType(.kps). - Added per-step NFC text configuration:
successfulReadText,scanDescription, andretryDescriptioncan be customized withStepBuilder.setNFCTextConfig(_:). - Added device security check:
setSecurityCheckEnabled(true)enables jailbreak, simulator, debugger, and hooking detection. Every run emits aSECURITY_CHECK_PASSEDorSECURITY_WARNINGevent; on compromised devices the flow is stopped with a fail screen. Messages can be customized withsetSecurityErrorMessage. - Success screen texts are now customizable:
setCompletedScreenTexts(_:)andCompletedScreenTexts(titleText,descriptionText,buttonText). - Lighting warnings are now configurable:
setOverexposureWarning(_:)andsetLowLightWarning(_:)together withWarningConfig(.enabled(message:)/.disabled). The default value is.disabled. - Expanded the
UIConfigtheme tokens.ColorsConfiggainedprimaryColor,onPrimaryColor,surfaceColor,onSurfaceColor,backgroundColor,errorColor,successColor,textPrimaryColor,textSecondaryColor, andlineButtonTextColor;ShapesConfiggainedcardCornerRadius,imageFrameCornerRadius, andbottomSheetCornerRadius;TypographyConfiggainedpromptFontSizeandpromptFontWeight. - Added
startButtonTextandstopButtonTexttoTextConfigfor the video record screen. - Added per-step button text and close button control:
setApproveButtonText,setRetakeButtonText, andsetCancelButtonIsActiveonStepBuilder. Per-step values override the global texts provided throughUIConfig.textConfig. - Added the
roomNameparameter toenterKYC, used as the appointment identifier in video call requests. - Documented certificate pinning support:
setPinnedCertificate(from:orEmbeddedFile:isPEM:). - Documented every
LogStateevent delivered throughonEvent, together with its raw value. - Documented the
KYCManager.onErrorclosure as an alternative to the delegate, and thetitle,message, andextraDetailfields readable fromTeydexError. - Added an informational note about package variants and Reset Package Caches to the installation section.
- Place of birth is now read in the NFC step.
Changed
- Breaking change: the case names of the
TeydexErrorsub-enums moved toUPPER_SNAKE_CASE. For example:.cameraPermissionDenied→.CAMERA_PERMISSION_DENIED,.deviceNotHaveNfc→.DEVICE_NOT_HAVE_NFC,.nfcDisabled→.NFC_NOT_ENABLED,.deviceInitFailed→.CAMERA_CONFIGURATION_FAILED,.externalAuthFailed→.CARD_AUTH_FAILED. Integrations passing dictionaries to methods such assetCameraErrorMessageandsetNFCErrorMessageneed to be updated. - The
enterKYC(clientToken:...)signature is marked deprecated; useenterKYC(from:...), which takes the screen the flow is started from, instead. - Added new error families:
TeydexError.PermissionError,TeydexError.SecurityError,TeydexError.NetworkError, andTeydexError.VideoRecordError. ThesetPermissionErrorMessage,setSecurityErrorMessage,setNetworkErrorMessage, andsetVideoRecordErrorMessagemethods are available for these families. - Added the
FACE_DETECTION_FAILEDandAPP_WENT_BACKGROUNDcases to theCameraSourceErrorfamily.
Fixed
- Fixed the dark screen problem in video calls.
- Fixed the freeze that occurred on unsuccessful video calls.
- Fixed a crash in the liveness step.
- Fixed the recording preview not being shown in the video record step.
- Fixed the audio problem in the video record step and updated the default timeout duration.
- Improved image compression behavior.
1.4.6 - 13.05.2026
Added
- Added the VideoRecord step: a voice-verified video step in which the user creates a video recording by reading the on-screen text aloud. Used via
.setStepType(.videoRecord); configurable withsetStartButtonText,setStopButtonText,setApproveButtonText,setRetakeButtonText, andsetVideoRecordDuration.
Changed
- The signature of
KYCProcessResult.failedandcancelled(returned viaonProcessFinished) changed:step: KYCStep?is nowstepName: String?, and thefailedcase'sreason: TeydexErroris nowreason: String. Integrations relying on these types need to be updated.