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 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.
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.