Skip to main content
Version: 1.9.0

Changelog

1.9.0 - 20.10.2026​

minBackendVersion

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 single Lottie.framework. Lottie is not part of the SDK's public API, and no extra configuration is required on the integration side.
Changed
  • The IdVerification dependency was upgraded to 1.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, SwiftyTesseract and libtesseract are no longer added to the project, and ocrb.traineddata is 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 -withLivekit and -withVideocall.
  • In the LiveKit variant (-withLivekit), the client-sdk-swift package dependency was removed and replaced by webrtc-xcframework (exact: 150.7871.2) and livekit-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.idGuideRuPassport and Asset.Images.passport were removed from the public Asset enum. Integrations that access these assets directly need to be updated.
Notes
  • If your app also uses lottie-spm, a one-time Class _TtC11_LottieStub10LottieStub is implemented in both … warning may appear at launch. This class is an empty helper target of lottie-spm and is never used; the warning is harmless and does not affect Lottie animations.

1.8.0 - 02.10.2026​

minBackendVersion

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_type field (new, old, or unknown). 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 IdVerification dependency to version 1.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​

minBackendVersion

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, and retryDescription can be customized with StepBuilder.setNFCTextConfig(_:).
  • Added device security check: setSecurityCheckEnabled(true) enables jailbreak, simulator, debugger, and hooking detection. Every run emits a SECURITY_CHECK_PASSED or SECURITY_WARNING event; on compromised devices the flow is stopped with a fail screen. Messages can be customized with setSecurityErrorMessage.
  • Success screen texts are now customizable: setCompletedScreenTexts(_:) and CompletedScreenTexts (titleText, descriptionText, buttonText).
  • Lighting warnings are now configurable: setOverexposureWarning(_:) and setLowLightWarning(_:) together with WarningConfig (.enabled(message:) / .disabled). The default value is .disabled.
  • Expanded the UIConfig theme tokens. ColorsConfig gained primaryColor, onPrimaryColor, surfaceColor, onSurfaceColor, backgroundColor, errorColor, successColor, textPrimaryColor, textSecondaryColor, and lineButtonTextColor; ShapesConfig gained cardCornerRadius, imageFrameCornerRadius, and bottomSheetCornerRadius; TypographyConfig gained promptFontSize and promptFontWeight.
  • Added startButtonText and stopButtonText to TextConfig for the video record screen.
  • Added per-step button text and close button control: setApproveButtonText, setRetakeButtonText, and setCancelButtonIsActive on StepBuilder. Per-step values override the global texts provided through UIConfig.textConfig.
  • Added the roomName parameter to enterKYC, used as the appointment identifier in video call requests.
  • Documented certificate pinning support: setPinnedCertificate(from:orEmbeddedFile:isPEM:).
  • Documented every LogState event delivered through onEvent, together with its raw value.
  • Documented the KYCManager.onError closure as an alternative to the delegate, and the title, message, and extraDetail fields readable from TeydexError.
  • 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 TeydexError sub-enums moved to UPPER_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 as setCameraErrorMessage and setNFCErrorMessage need to be updated.
  • The enterKYC(clientToken:...) signature is marked deprecated; use enterKYC(from:...), which takes the screen the flow is started from, instead.
  • Added new error families: TeydexError.PermissionError, TeydexError.SecurityError, TeydexError.NetworkError, and TeydexError.VideoRecordError. The setPermissionErrorMessage, setSecurityErrorMessage, setNetworkErrorMessage, and setVideoRecordErrorMessage methods are available for these families.
  • Added the FACE_DETECTION_FAILED and APP_WENT_BACKGROUND cases to the CameraSourceError family.
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​

minBackendVersion

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 with setStartButtonText, setStopButtonText, setApproveButtonText, setRetakeButtonText, and setVideoRecordDuration.
Changed
  • The signature of KYCProcessResult.failed and cancelled (returned via onProcessFinished) changed: step: KYCStep? is now stepName: String?, and the failed case's reason: TeydexError is now reason: String. Integrations relying on these types need to be updated.
Fixed