> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/android/changelog.md).

# Changelog

## Release notes

## 7.19.0

### Release date

* 08/14/2026

### Updates

* Bumped `compileSdk` and `targetSdk` to API level 36 (Android 16).
* UI layout and accessibility improvements on Document Detector and Face Liveness screens.
* Navigation improvements on Document Detector (back gesture handling).

### Fixes

**Face Liveness:** Fixed an issue in the Payface flow where a failed face validation could still be reported as success. The SDK now correctly treats validation failures and shows the appropriate message to the user.

**Document Detector:** Fixed capture and upload issues on tablets and devices in landscape mode, including a brief incorrect image orientation flash in the preview, auto-capture failures with misaligned final photos, and minor UI adjustments to layout margins and the close button.

## 7.17.0

### Release date

* 08/03/2026

### Fixes

**Face Liveness:**  Fixes an `UninitializedPropertyAccessException` crash in the Face Liveness module when the `context` (`lateinit`) has not been initialized yet&#x20;

**Document Detector:** Fixes the Document Detector case where the app returns after process death (e.g. gallery/Drive or background) and remounts the flow without in-memory context, leaving an orphan UI (dead Continue button).

## 7.15.0

### Release date

* 07/20/2026

{% hint style="warning" %}
**Breaking change —Fingerprint dependency** The `common-fingerprint` module is no longer a mandatory transitive dependency for Face Liveness. To use fingerprint features alongside Face Liveness, you must explicitly add the `implementation("io.caf.sdk:fingerprint")` artifact to your dependencies. If omitted, Face Liveness will proceed normally without fingerprinting
{% endhint %}

### Updates

* **Fingerprint SDK Upgrade**: The underlying FingerprintJS Pro SDK has been updated from version 2.7.0 to 2.15.0.

## 7.14.0

### Release date

* 05/25/2026

### Fixes

**Face Liveness:**  a liveness issue that caused an infinite loading screen when an initialization error occurred.

Smart Auth: CalledFromWrongThreadException

## 7.13.0

### Release date

* 05/08/2026

### Updates

* Updated liveness provider: PayFace to version 1.19.2.

### Fixes

**Face Liveness:** Resolved an issue where the PayFace liveness provider failed on the first attempt, working only on the second try.

## 7.12.0

### Release date

* 04/27/2026

### Updates

* Caf Security Module: Internal performance optimizations and enhanced stability for security telemetry and data integrity checks.

### Fixes

**Face Liveness:** Resolved an issue where the Success Screen failed to render after a valid liveness attempt.

## CafSDK v7.11.0

### Release date

* 04/13/2026

### Fixes

* **Instructions Screen:** Fixed a bug where custom remote images (via URL) on the instruction screen of both Document Detector and Face Liveness were being painted with the primaryColor, even though no color filter should be applied.

## CafSDK v7.10.0

### Release date

* 03/30/2026

{% hint style="warning" %}
**Breaking change — Face Liveness dependencies:** `caffaceliveness-lite`, `caffaceliveness-core`, `caffaceliveness-ui-lite`, and `caffaceliveness-ui-core` are replaced by **`caffaceliveness`** (shared base), optional **`caffaceliveness-ui`** (Caf UI + customization hooks), and **`caffaceliveness-providers-*`**. You must add the BoM **7.10.0**+ and **at least one** **`caffaceliveness-providers-*`** artifact—**`caffaceliveness` and a provider module are both required** for Face Liveness. See [Step 2 - Include the CafSDK dependency](#step-2-include-the-cafsdk-dependency) and [Migrating from legacy Face Liveness artifacts](#migrating-from-legacy-face-liveness-artifacts-up-to-v790).
{% endhint %}

### Updates

* **Liveness Hub:** **`caffaceliveness`** is the shared base and **`caffaceliveness-providers-*`** artifacts supply CAF’s pre-built vendor integrations—you must declare **at least one** provider dependency. **`caffaceliveness-ui`** is **optional** and adds **Caf’s Face Liveness UI** plus **customization** hooks (replacing the old `caffaceliveness-ui-lite` / `caffaceliveness-ui-core` split).
* **Explicit providers:** Add the artifacts that match your product configuration, for example:
  * `caffaceliveness-providers-iproov-lite` — iProov with Protobuf JavaLite
  * `caffaceliveness-providers-iproov-full` — iProov with Protobuf Java
  * `caffaceliveness-providers-payface` — PayFace (Fortface)
  * `caffaceliveness-providers-facetec` — FaceTec 2D
* **Migration:** Follow the dependency mapping table under [Migrating from legacy Face Liveness artifacts](#migrating-from-legacy-face-liveness-artifacts-up-to-v790) when upgrading from **7.9.0** or earlier.

#### Migrating from legacy Face Liveness artifacts (up to v7.9.0) <a href="#migrating-from-legacy-face-liveness-artifacts-up-to-v790" id="migrating-from-legacy-face-liveness-artifacts-up-to-v790"></a>

If you previously used `caffaceliveness-lite`, `caffaceliveness-core`, or the matching `-ui-lite` / `-ui-core` artifacts, update as follows:

| Previous (up to v7.9.0)                                    | From v7.10.0                                                | Notes                                                                                                                                                   |
| ---------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `implementation(platform("io.caf.sdk:caf-sdk-bom:7.9.0"))` | `implementation(platform("io.caf.sdk:caf-sdk-bom:7.10.0"))` | Bump the BoM so versions align with the new modules.                                                                                                    |
| `caffaceliveness-lite` or `caffaceliveness-core`           | `caffaceliveness`                                           | Single base module replaces both **lite** and **core**; the old split at this layer is removed.                                                         |
| *(providers were implicit inside the old artifact)*        | `caffaceliveness-providers-<provider>`                      | **Required:** declare at least one provider artifact for the liveness vendors you use (for example `iproov-lite`, `iproov-full`, `payface`, `facetec`). |
| `caffaceliveness-ui-lite` or `caffaceliveness-ui-core`     | `caffaceliveness-ui`                                        | **Optional** UI module: Caf’s screens + customization; pair with the same provider setup your runtime needs.                                            |

## CafSDK v7.9.1

### Release date

* 05/25/2026

### Fix:

* Smart Auth: CalledFromWrongThreadException

## CafSDK v7.9.0

### Release date

* 03/02/2026

### Improvements

* **Version Alignment:** Internal product libraries have been standardized to match the CafSDK versioning (v7.9.0). This ensures better compatibility and simplifies dependency management.

### Fixes

* **Security Return:** New error codes added for the security section:
  * 500 (device blocked due to debug mode; validation can be disabled),
  * 600 (fraudulent signatures/tampering),
  * 601 (rooted devices),
  * 602 (validation error),
  * 699 (unknown security error)

## CafSDK v7.8.0

### Release date

* 02/09/2026

{% hint style="warning" %}
Versions earlier than 7.8.0 will result iProov Liveness to become inoperable as of March 12, 2026. To ensure proper functionality and service continuity, please use version 7.8.0 or later.
{% endhint %}

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.8.0:
  * CafFaceLiveness: Updated from 4.4.0 to 4.6.0
  * CafFaceLivenessUI: Updated from 2.4.0 to 2.5.0
  * Dependency update: Updated iProov version from 10.2.0 to 11.1.0 in Android.
  * Dependency update: Updated iProov version from 12.2.1 to 13.1.0 in iOS.
* **Added Fortface Maven repository**: Added Fortface Maven repository to the project.
  * New dependency available: `PayFace`
  * Customizable camera behavior through `CafPayFaceConfig` (timeouts, stabilization times, UI resources)
  * Add maven repository to the project:

    ```kotlin
    maven {
      url = uri("https://cdn-fortface-sdk.fortface.com.br")
      credentials(HttpHeaderCredentials::class) {
        name = "X-Sdk"
        value = "CAF"
      }
      authentication {
        create<HttpHeaderAuthentication>("header")
      }
    }
    ```
* **New failure types**: Added new failure to CafFailureType for better failure handling:
  * `BACKGROUND_ISSUE`
  * `DEVICE_ISSUE`
  * `EYEWEAR`
  * `FACE_NOT_FOUND`
  * `FRAMES_BLURRY`
  * `MOTION_ISSUE`
  * `LIGHTING_ISSUES`
  * `REJECTED`
  * `SYSTEM_ERROR`
  * `TIMEOUT`
  * `USER_NOT_FOUND`
  * `DEVICE_RESTART`
  * `PROCESSING_FAULT`

## CafSDK v7.7.0

### Release date

* 02/02/2026

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.7.0:
  * `CafFaceLiveness` updated from 4.3.8 to 4.4.0
  * `CafFaceLivenessUI` updated from 2.3.8 to 2.4.0
  * `CafDocumentDetector` updated from 10.4.1 to 10.5.0
  * `CafDocumentDetectorUI` updated from 2.3.3 to 2.4.0
* **New CafSecurity module**: Added a new module with security validations.
  * New configuration flag: `enableSecurityModule` in `CafSdkConfiguration` with default value `true`
* **Metrics and analytics**: Improvements to metrics collection and analytics in all SDKs.

### Fixes

* **FaceLiveness**
  * Fixed sessions creation erros.
  * Fixed color tint on remote images in the Instructions screen.

## CafSDK v7.6.0

### Release date

* 01/28/2026

### Fixes

* **Fixed Fingerprint conflicts**: Resolved Fingerprint conflicts with AdBlockers or public DNS.

## CafSDK v7.5.9

### Release date

* 01/12/2026

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.5.9:
  * `CafFaceLiveness` updated from 4.3.3 to 4.3.8
  * `CafFaceLivenessUI` updated from 2.3.3 to 2.3.8
  * `CafDocumentDetector` updated from 10.4.0 to 10.4.1
  * `CafDocumentDetectorUI` updated from 2.3.2 to 2.3.3
* **New Face Liveness Provider**: Added support for PayFace (Fortface) provider as an optional Face Liveness solution.
  * New dependency available: `PayFace`
  * Customizable camera behavior through `CafPayFaceConfig` (timeouts, stabilization times, UI resources)
  * Add maven repository to the project:

    ```kotlin
    maven {
        url = uri("https://cdn-fortface-sdk.fortface.com.br")
        credentials(HttpHeaderCredentials::class) {
            name = "X-Sdk"
            value = "CAF"
        }
        authentication {
            create<HttpHeaderAuthentication>("header")
        }
    }
    ```

> **Note:** Contact our support team to ensure that the clientId being used is configured to use PayFace.

### Fixes

* **Fixed crashes in Document Detector module**: Resolved multiple crashes related to activity lifecycle management, including initialization, pause, and resume states.
* **Fixed crashes related to camera lifecycle**: Improved camera resource management and thread lifecycle to prevent crashes during SDK shutdown and state transitions.
* **Fixed crashes in UI components**: Resolved theme compatibility issues and fragment transaction exceptions to ensure proper UI behavior.
* **Fixed crashes in network requests**: Corrected response body handling to prevent errors when reading network responses.
* **Fixed crashes in data access**: Improved cursor initialization and validation before accessing database data.
* **Fixed ANR in Document Controller**: Optimized document controller instance checks to prevent application not responding issues.
* **Internal improvements and corrections**: Additional stability enhancements and bug fixes.

## CafSDK v7.5.2

### Release date

* 11/27/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.5.2:
  * `CafFaceLiveness` updated from 4.3.0 to 4.3.2
  * `CafFaceLivenessUI` updated from 2.3.0 to 2.3.2
  * `DocumentDetector` updated from 10.3.0 to 10.3.2
  * `DocumentDetectorUI` updated from 2.3.0 to 2.3.2

### Fixes

* **Fixed crash when used empty `flow` in `CafDocumentDetectorConfig`**: This issue was causing the SDK to close immediately during opening the document capture flow. Now the SDK will emit a new error event `CafErrorType.LIBRARY_EXCEPTION` with the message "Empty document options".
* **Fixed error when use `loadSession` in Document Detector module**: This issue was causing the SDK to close immediately during opening the document capture flow. Now the sdk will not emit a error `SEQUENCE_INVALID`.

## CafSDK v7.5.0

### Release date

* 11/17/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.5.0:
  * `CafFaceLiveness` updated from 4.2.0 to 4.3.0
  * `CafFaceLivenessUI` updated from 2.2.0 to 2.3.0
  * `DocumentDetector` updated from 10.2.0 to 10.3.0
  * `DocumentDetectorUI` updated from 2.2.0 to 2.3.0

### New Features

#### Document Detector / Document Detector UI

* **Manual capture mode as default**: Manual capture mode from the start is now set as the default, due to difficulties in capture using automatic mode.
* **Analytics logs**: Added detailed analytics logs to monitor document capture and upload details. These logs record messages, capture modes, fallback time, and sensors.

#### CafFaceLiveness / CafFaceLivenessUI

* **Opening time improvement**: Improved Face Liveness SDK opening time through pre-loading of the user session, using a new method [loadSession()](#session-pre-loading-optional), which can be used by clients to achieve faster SDK and camera initialization.

### Fixes

#### Document Detector / Document Detector UI

* **Fixed crash "Image is already closed"**: This issue was causing the SDK to close immediately during document capture.
* **Fixed crash when used empty `flow` in `CafDocumentDetectorConfig`**: This issue was causing the SDK to close immediately during opening the document capture flow. Now the SDK will emit a new error event `CafErrorType.LIBRARY_EXCEPTION` with the message "Empty document options".
* **Improved error messaging**: Improved error messaging for incorrect document type detection to provide more accurate feedback during document validation.
* **Fallback on capture mode**: Improved state management for capture mode transitions to ensure consistent and reliable behavior when manual and automatic capture modes interact.
* **Layout**: Improved readability with increased line spacing and updated margins for more consistent layout and visual balance.
* **UI Improvements**: Prevented text overflow in the document detector by enabling truncation for long titles and step names and adjusting spacing.
* **Light sensor deactivation**: The light sensor has been disabled during the capture flow. Previously, the SDK used the device's light sensor to display the "Environment too dark" message, blocking capture until the sensor detected good lighting.
* **Messages deactivation during manual capture**: Messages during manual capture have been disabled to avoid friction during the capture flow.

***

## CafSDK v7.4.0

### Release date

* 11/05/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.4.0:
  * `CafFaceLiveness` updated from 4.1.0 to 4.2.0
  * `CafFaceLivenessUI` updated from 2.1.0 to 2.2.0

### New Features

* \*\* New `CafErrorType` enum: `FACE_AUTHENTICATION` to handle face authentication errors.

## CafSDK v7.3.0

### Release date

* 10/27/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.3.0:
  * `DocumentDetector` updated from 10.1.0 to 10.2.0
  * `DocumentDetectorUI` updated from 2.1.0 to 2.2.0

### Fixes

* **DocumentDetector**: Fixed issue where the screen would freeze when capturing passport documents, improving user experience and capture reliability.
* **Inconsistent behavior in manual capture**: Resolved inconsistencies in manual document capture flow, ensuring more predictable and reliable capture behavior.
* **Feedback message inconsistencies**: Fixed inconsistent feedback messages for cases involving files exceeding the allowed size limit.
* **Popup closure behavior**: Improved popup dismissal behavior to properly handle Android back button presses and outside clicks, ensuring consistent UI interaction patterns.

## CafSDK v7.2.0

### Release date

* 10/20/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.2.0:
  * `CafFaceLivenessIproovVersion` updated from 5.0.0 to 5.0.1

### Fixes

* **Improves `CafFaceLivenessIproovVersion`**: Resolved compatibility exceptions when using Smart Auth alongside Face Liveness iProov library.

## CafSDK v7.1.0

### Release date

* 10/15/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 7.1.0:
  * `CafFaceLiveness` updated from 4.0.0 to 4.1.0
  * `CafFaceLivenessUI` updated from 2.0.0 to 2.1.0
  * `DocumentDetector` updated from 9.15.5 to 10.1.0
  * `DocumentDetectorUI` updated from 2.0.0 to 2.1.0

### Fixes

* **Improves `CafSdkEvent`**: Improved error reporting across face liveness flows: clearer network/server distinctions, precise camera permission handling.
* **DocumentDetector**: stopped auto-enabling document preview when not explicitly configured.

## CafSDK v6.5.10

### Release date

* 10/01/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 6.5.10:
  * `DocumentDetectorUI` updated from 1.8.3 to 1.8.4

### Fixes

* **DocumentDetectorUI**: Fixed document flow when using RGFront or CNHFront documents.

## CafSDK v6.5.9

### Release date

* 09/26/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 6.5.9:
  * `DocumentDetectorUI` updated from 1.8.2 to 1.8.3

### Fixes

* **DocumentDetectorUI**: Fixed crash when using RGFull or CNHFull documents.

## CafSDK v6.5.8

### Release date

* 09/25/2025

### Updates

* **Dependency Updates**: Upgraded component versions to maintain consistency with CAF SDK BOM version 6.5.8:
  * `cafFaceLivenessIproovVersion` updated from 4.4.3 to 4.4.4
  * `cafFaceAuthenticatorVersion` updated from 5.3.2 to 5.3.3
  * `Document Detector` updated from 9.15.4 to 9.15.5

### Fixes

* **Critical Crash Resolution**: Fixed View\.post() NullPointerException
  * This error caused the SDK to terminate unexpectedly when switching between upload and camera flows.
* **SDK Stability**: Prevented unexpected SDK termination when alternating between different capture flows
  * Enhanced flow management to ensure smooth transitions between upload and camera modes.
* **Document Detector Module**: Updated LiteRT library from version 1.0.1 to 1.4.0
  * Fixed UNALIGNED (212) error on x86\_64/emulators related to 16kb page size support

## CafSDK v6.5.7

### Fixes

* **CafFaceLiveness**: Improved camera permission error reporting with distinct error classification for better debugging
* **Error Handling**: Enhanced server error message clarity by extracting and surfacing raw error payloads
* **Android 14+ Compatibility**: Updated loading screen closing behavior to ensure proper functionality on Android 14 and later versions

***

## CafSDK v6.5.6

### New Features

* New `CafDocumentDetectorDocumentSelectionScreen` property:

  * `groupLabels` to enable customization of document type titles and descriptions.

  **Code Example**

```kotlin
val documentSelectionScreen = CafDocumentDetectorDocumentSelectionScreen(
                    documents = listOf(
                        CafDocument.RGFull()
                    ),
                    groupLabels =
                        CafDocumentGroupLabels(
                            rg = CafDocumentLabel("Custom RG Title", "Custom RG Description")
                        ),
                    title = "CAF SDK - Title",
                    description = "CAF SDK - Description"
                )
```

### Updates

* Updated dependencies:
  * Internal improvements and corrections.

***

## CafSDK v6.5.4

### Updates

* Updated dependencies:
  * Internal improvements and corrections.

***

## CafSDK v6.5.3

### Updates

* Updated dependencies:
  * Internal improvements and corrections.

***

## CafSDK v6.5.2

### Updates

* Updated dependencies:
  * Added support for 16kb page sizes.
  * **Migration to LiteRT**: Updated from TensorFlow Lite to Google's LiteRT (Lite Runtime) following Google's AI Edge initiative. The APIs remain the same, ensuring seamless compatibility while benefiting from improved performance and ongoing development support.

***

## CafSDK v6.5.1

### Updates

* Updated dependencies:
  * Improved analytics initialization.
  * Internal improvements and corrections.

***

## CafSDK v6.4.2

### Updates

* Updated dependencies:
  * Bumped compileSdk/targetSdk version to API level 35 (Android 15).
  * Improved analytics initialization.
  * Internal improvements and corrections.

***

## CafSDK v6.4.0

### New Features

* New `CafSdkConfiguration` property:
  * `enableTransitionScreens` to enable or disable the transition screens between modules.
* Improvements for hybrid support (React Native).

***

## CafSDK v6.3.0

### New Features

* **Enhanced Document Flow Logic:** When digital documents (RG Digital or CNH Digital) are present in the flow, the SDK now automatically:
  * Forces upload mode to be enabled.
  * Skips the photo source selection screen.
  * Goes directly to the upload flow for a streamlined user experience.

### Updates

* **Upload Settings Default Changed:** `CafDocumentDetectorConfig.instructionsEnabled` now defaults to `true` instead of `false`
* **Document Selection Logic:** Enhanced logic for RG and CNH document selection:
  * When both front/back and full documents are available, the SDK intelligently selects front and back documents in the correct order.
  * Digital document options are prioritized and displayed first in selection screens.
* **Enhanced Dialog Customization:** Added new color configuration properties to customize dialog and popup appearances:
  * `dialogBackgroundColor`: Customize the background color of dialogs and popups (defaults to dynamic color based on interface style: `#1C1C1E` for dark mode, `#FFFFFF` for light mode)
  * `dialogBorderColor`: Customize the border color of dialogs and popups (defaults to `#E5E5E7`)

### Code Example

```kotlin
const colorConfig = CafColorConfiguration(
    primaryColor: "#FF0000",
    secondaryColor: "#FFFFFF",
    contentColor: "#000000",
    backgroundColor: "#FFFFFF",
    mediumColor: "#CCCCCC",
    dialogBackgroundColor: "#FFFFFF", // New
    dialogBorderColor: "#E5E5E7"      // New
)
```

### Fixes

* **Document Ordering**: Fixed document capture, which was requesting the capture of the open document after capturing the front and back of the document.
* **Manual Capture**: Fixed manual capture flag in all scenarios.

## CafSDK v6.2.1

### Updates

* Updated dependencies:
  * Document Detector version 9.12.1
  * Internal improvements and corrections.

### Fix

* Fixed crash in Document Detector upload flow.

## CafSDK v6.2.0

### Updates

* Updated dependencies:
  * Document Detector version 9.12.0
  * Improvements in retry messages in the constructor.
  * Removal of unnecessary limits for retries.

### Fix

* Fixed upload customization in Document Detector.
* Adjusted delays between retry messages.

## CafSDK v6.1.2

### Updates

* Updated dependencies:
  * Document Detector version 9.10.0
  * Internal improvements and corrections.

### Features

* Customization of upload messages, including adjustable texts and colors.

## CafSDK v6.0.2

### Updates

* Internal improvements and corrections.

## CafSDK v6.0.1

### Updates

* Internal improvements and corrections.

## CafSDK v6.0.0

### New Features

* New `maxRetryAttempts` method for `CafFaceLivenessConfig` to set the maximum number of retry attempts for face liveness validation.
* **Failure Event Handling:** Added detailed `Failure` case to `CafUnifiedEvent` with server response, failure type and description.
* **Error Event Handling:** Added detailed `Error` case to `CafUnifiedEvent` with server response, error type and description.

### Updates

* Improved error handling differentiation:
  * Use `CafFailureType` enum type for SDK module-specific operational failures.
  * Use `CafErrorType` enum type for general execution errors.

### Breaking Changes

1. **CafUnifiedEvent** Added detailed failure case to CafUnifiedEvent with server response, failure type and description.

### Migration Guide

1. Update to v6.0.0.
2. Update `CafUnifiedEvent.Error` event

```kotlin
Error(response: String, type: CafErrorType, description: String)  // Replaces old String-based error
```

3. Update `CafUnifiedEvent.Failure` event

```kotlin
Failure(response: String, type: CafFailureType, description: String)
```

## CafSDK v5.0.0

### New Features

1. **Update `CafFaceLivenessConfig`:**
   * New `executeFaceAuth` parameter added to define whether face authentication should be performed.
   * New `CafReverseProxyConfig` parameter to configure reverse proxy.

### Breaking Changes

1. **`CafFaceLivenessConfig` Changes:**
   * Removed `authBaseUrl`, `livenessBaseUrl`, `certificates` property. Use within `CafReverseProxyConfig` instead.
2. **CafUnifiedEvent** Added detailed failure case to CafUnifiedEvent with server response, failure type and description.

## CafSDK v4.1.0

### New Features

1. Improvements for hybrid support (React Native)

## CafSDK v4.0.1

### New Features

1. **Update `CafDocumentDetectorConfig`:**
   * If you were using `MessageSettings`, create a `CafMessageCustomization` object, set its properties, and add it to the `ddCustomizations` array.

### Migration Guide

1. Update to v4.0.1.
2. **Update `CafDocumentDetectorConfig`:**
   * If you were using `messageSettings`, create a `CafMessageCustomization` object, set its properties, and add it to the `ddCustomizations` array.

## CafSDK v4.0.0

### New Features

* **Improved Analytics**
* **Document Detector UI Customization:**
  * Introduced `CafDDCustomization` contract and concrete types (`CafPreviewCustomization`, `CafDDUploadCustomization`, `MessageSettings`) to allow overriding default texts and images on specific Document Detector screens (e.g., preview, upload popup, in-flow messages). This is configured via the new `ddCustomizations` property in `CafDocumentDetectorConfig`.
  * `CafDocument` now includes `customMessage` and `customOkButtonTitle` properties to customize the instruction popup for each step.
* **Theming Update:**
  * Document Detector specific color properties inherits its theme from the global `CafColorConfiguration` set in `CafSDKConfiguration`, ensuring a more consistent look and feel.

### Breaking Changes

1. **`CafDocumentDetectorConfig` Changes:**
   * Removed `messageSettings` property. Use within `ddCustomizations` instead.
   * Removed `previewTitle`, `previewSubtitle`, etc., Use `CafPreviewCustomization` within `ddCustomizations` property instead

### Migration Guide

1. Update to v4.0.0+.
2. **Update `CafDocumentDetectorConfig`:**
   * If you were using `previewTitle`, `previewSubtitle`, etc., create a `CafPreviewCustomization` object, set its properties, and add it to the `ddCustomizations` array in `CafDocumentDetectorConfig`.
   * If you were using `messageSettings`, add it to the `ddCustomizations` array.
3. **Update `CafDocument`:**
   * If you need to customize the instruction popup message or OK button text for a specific step, use the newly created properties.
4. **Review Theming:**
   * Ensure your global `CafColorConfiguration` (in `CafSDKConfiguration`) is set up as desired, as Document Detector UI elements will now primarily use these colors.

### CafSDK v3.0.0

**Major Changes**

* **Unified Response API:** `CafUnifiedResponse` now exposes only `signedResponse: String` (no more `Map<String, Any>` result).
* **Breaking Changes:**
  1. `CafUnifiedResponse` initializer signature changed: no `result` parameter.
  2. Property `result` removed; replace all uses with `signedResponse`.
* **Updated Retry on document upload:** in slower connections or interrupted uploads, the documentDetector flow integrated a retry option for document upload

### Migration Guide

1. Update to v3.0.0+.
2. Change handler:

   ```
   is CafUnifiedEvent.Success -> {
        event.response.forEach {
            log("[SUCCESS] moduleName: ${it.moduleName}")
            log("[SUCCESS] signedResponse: ${it.signedResponse}")
        }
    }
   ```
3. **Remove** `response.result`
   * All references to the `Map<String: Any>` result map should use response.`signedResponse` instead.
4. Document Detector Flows
   * If you relied on the old result Map, migrate to parsing your JWT from `signedResponse`.

## CafSDK v2.0.0

### New Features

* **Batch Results Flag:** `CafSDKConfiguration(waitForAllServices = true)` now aggregates all module responses into a single `Success(response: List<CafUnifiedResponse>)`.
* **Unified `CafUnifiedEvent.Success` Update:** `CafUnifiedEvent.Success` now always carries an array of responses.
* Improviments into UI screens.
* Added support for uploading documents with the DocumentDetector UI module.

### Breaking Changes

* Signature of `CafUnifiedEvent.Success` changed to `Success(response: List<CafUnifiedResponse>)`.

### Migration Guide

1. Update to v2.0.0+.
2. Change handler to expect an array:

   ```
   is CafUnifiedEvent.Success -> {
        event.response.forEach {
            log("[SUCCESS] moduleName: ${it.moduleName}")
            log("[SUCCESS] result: ${it.result}")
        }
    }
   ```

## CafSDK v1.4.0

### New Features

* **Introducing `CafSDKProvider`:** A unified entry point for integrating Face Liveness and Document Detector modules with a single configuration.
* **Builder Pattern:** Simplified initialization using `CafSDKProvider.Builder` for modular, type-safe setup.
* **Unified Configuration:** Configure both modules using `CafSDKConfiguration`, including execution order (`presentationOrder`) and UI theming (`CafColorConfiguration`).
* **Cross-Module Consistency:** Shared authentication, environment, and logging across modules.

### Documentation Updates

* Revised guides for integration.
* Added detailed examples for `CafFaceLivenessConfig` and `CafDocumentDetectorConfig`.

### Configuration Enhancements

#### Face Liveness

* Customize instructions (`CafInstructionsConfiguration`).
* Configure reverse proxy endpoints (`authBaseUrl`, `livenessBaseUrl`).

#### Document Detector

* Define multi-step capture flows (`CafDocumentDetectorStep`).
* UI customization (`CafDocumentDetectorLayout`, `CafMessageSettings`).
* Proxy support (`CafProxySettings`).

### Breaking Changes

* **New integration Module:** `CafSDK`

### Migration Guide

1. Replace standalone module initializers with `CafSDKProvider`
2. Use `CafDocumentDetectorStep(stepType:)` instead of legacy constructors.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/android/changelog.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
