Changelog
Flutter SDK release notes. Track versions, breaking changes, provider updates, and migration notes for Certta, Face Liveness, and Document Detector.
Release notes
[email protected]
Release date
09-2026
Highlights
Certta DevX (first hybrid release): New
CerttaSdkAPI with Document Detector and Face Liveness (core and UI) on Android and iOS.Configure the session once with
configureSdk(CerttaConfiguration), then open each module independently (liveness.open,documentDetector.open,documentDetectorUi.open).The sequential
CafSdk/initializeCafSdkAPI remains available in the same package.
Updates
New public import:
package:caf_sdk/certta_sdk.dart.Per-module event streams (
CerttaLivenessEvent,CerttaDocumentDetectorEvent,CerttaDocumentDetectorUiEvent) andCerttaSdk.logStream.Runtime
updateUserId/updateMobileTokenafter the initial session configuration.CerttaLivenessFailurewith stablecausecodes anddescriptionfor user-facing text.Bridge mapper rejections throw
PlatformExceptionwith codeBRIDGE_EXCEPTION.
See the Installation Guide and Migrating from CafSdk.
[email protected]
Release date
08/14/2026
Highlights
Android 16 compatibility: Updated Flutter plugin to support Android 16 (
compileSdk/targetSdk36), aligning with Google Play requirements for apps targeting recent Android versions.
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.
Updates
Flutter Plugin
compileSdk/targetSdkupdated to 36.
[email protected]
Release date
08-03-2026
Breaking change : The Fingerprint module is now optional and can be configured in caf-modules-config.json via the new fingerprint property (boolean). By default, fingerprint is set to false, meaning you do not need to add this property to the JSON unless you want to use it. To enable the module, you must explicitly add "fingerprint": true. Important: Fingerprint must also be enabled on Backoffice. If it is not enabled on Backoffice, the SDK will never call the fingerprint library and no data will be sent, even if the property is set to true locally.
Highlights
Optional Fingerprint module: Control the inclusion of the fingerprint feature directly from
caf-modules-config.json. It is disabled by default, ensuring you only include the dependency when strictly necessary.
Updates
New
fingerprintboolean field incaf-modules-config.jsonfor Android and iOS.
[email protected]
Release date
07-06-2026
Breaking change: The eventStream now emits a typed Stream<CafResponse> instead of a Stream<dynamic> with raw Map payloads. Update every listener: replace event['eventName'] / event['response'] with the typed fields — event.success, event.error, event.failure, event.log, event.loading, event.loaded, and event.cancelled. See Event Handling for the full migration example.
Highlights
More consistent error reporting: Errors occurring during flow initialization that relate to the SDK's internal integration are now emitted via the
errorevent asBRIDGE_EXCEPTION, so they can be handled the same way as any other SDK error.
Breaking Changes
Typed event stream:
CafSdk.eventStreamis nowStream<CafResponse>. Consumers must access the typed fields ofCafResponse(success,error,failure,log,loading,loaded,cancelled) instead of indexing aMap.Flattened module configuration classes: The per-module
...BuilderConfigurationwrappers were removed. Fields are now passed directly on the module configuration objects, and the UI configurations extend the base configuration instead of nesting it:CafFaceLivenessBuilderConfigurationremoved — pass fields directly onCafFaceLivenessConfiguration.CafDocumentDetectorBuilderConfigurationremoved — pass fields directly onCafDocumentDetectorConfiguration.CafFaceLivenessUIBuilderInstructionScreenConfiguration→CafFaceLivenessUIInstructionScreenConfiguration, and the fieldinstructionScreenConfiguration→instructionScreen.CafDocumentDetectorUIBuilderInstructionScreenConfiguration→CafDocumentDetectorUIInstructionScreenConfiguration, and the fieldinstructionScreenConfiguration→instructionScreen.CafDocumentDetectorUIBuilderDocumentSelectionScreenConfiguration→CafDocumentDetectorUIDocumentSelectionScreenConfiguration, and the fielddocumentSelectionScreenConfiguration→documentSelectionScreen.The SDK-level
CafSdkConfigurationis unchanged and still takesconfiguration: CafSdkBuilderConfiguration(...).
initializeCafSdkreturn type: changed fromFuture<bool?>toFuture<bool>.
Updates
Event name constants: Added the
CafSdkEventNameconstants (CafUnifiedEvent.*) for identifying emitted events.New
CafErrorTypevalues: AddedINVALID_RESPONSE_EXCEPTION,CAMERA_EXCEPTION,FACE_AUTHENTICATION, andBRIDGE_EXCEPTION. Note thatBRIDGE_EXCEPTIONreports errors that occur while initializing or starting the flow; listen for it on theerrorevent and handle it as part of your normal error handling.CafSuccessResponse:signedResponseis now typed asString?(previouslydynamic), andmoduleNameresolution is more resilient to native identifier variations.
Migration Guide — 1.x → 2.0.0
Three things changed for integrators: how you read events, how you build module configurations, and the return type of initializeCafSdk. The SDK-level CafSdkConfiguration (with CafSdkBuilderConfiguration) is unchanged.
1. Read events from the typed stream
2. Remove the module ...BuilderConfiguration wrapper
Pass the fields directly on the module configuration object.
3. Update the UI configurations (wrapper + renamed types and fields)
4. Rename type imports (if you imported the removed types)
CafFaceLivenessBuilderConfiguration
CafFaceLivenessConfiguration
CafDocumentDetectorBuilderConfiguration
CafDocumentDetectorConfiguration
CafFaceLivenessUIBuilderInstructionScreenConfiguration
CafFaceLivenessUIInstructionScreenConfiguration
CafDocumentDetectorUIBuilderInstructionScreenConfiguration
CafDocumentDetectorUIInstructionScreenConfiguration
CafDocumentDetectorUIBuilderDocumentSelectionScreenConfiguration
CafDocumentDetectorUIDocumentSelectionScreenConfiguration
5. Update the initializeCafSdk return type
initializeCafSdk now returns Future<bool> instead of Future<bool?>. Remove any null checks on the awaited result.
[email protected]
Release date
05-25-2026
Updates
Payface Liveness Provider (Android): Update version from
1.18.2to1.19.2.Payface Liveness Provider (iOS): Update version from
1.5.2to1.8.2.
Fixes
FaceLiveness
Infinite loading error occurs when the SDK returns an error.
First initialization not working when using
Payfaceprovider.
[email protected]
Release date
05-08-2026
Fixes
DocumentDetector: Fixed behavior when handling RG (Brazilian National Identity Card) with the digital document option.
[email protected]
Release date
04-13-2026
Breaking change : Face Liveness providers can now be configured in caf-modules-config.json via livenessProviders (string or array). When provided, it must list the chosen provider(s). Do not use iproov-lite and iproov-full together—iproov-full uses a different version of Protobuf, and combining them will cause duplicate class errors at build time. PayFace requires iproov-lite (Protobuf JavaLite); pairing PayFace with iproov-full causes build-time Protobuf conflicts. If omitted, the SDK defaults to iproov-lite on both platforms. An empty or invalid value causes a build error on Android; on iOS, an empty value also falls back to iproov-lite, but an invalid value causes a build failure. See Step 2: Configure Module Selection for details.
Highlights
Configurable Face Liveness providers: Choose
iproov-lite,iproov-full,payface, and/orfacetecfromcaf-modules-config.jsoninstead of relying on implicit native defaults.
Updates
Liveness provider configuration:
New
livenessProvidersfield incaf-modules-config.jsonfor Android and iOS.Documented Protobuf JavaLite vs Protobuf Java mapping for
iproov-litevsiproov-full.Clarified multi-provider setups using an array, and the PayFace + iProov Lite requirement.
iProov Liveness Provider: Documentation and defaults updated to reflect the new provider selection model.
Android ProGuard / R8: If R8 reports missing classes for lint stubs shipped with the SDK, add the following to
proguard-rules.pro(also listed under Code obfuscation):
[email protected]
Release date
02-09-2026
Versions earlier than 1.2.0 will result iProov Liveness to become inoperable as of March 12, 2026. To ensure proper functionality and service continuity, please use version 1.2.0 or later.
Highlights
Updated Liveness Provider: Critical update to the iProov provider version for improved stability
Updates
iProov Liveness Provider: Updated the internal iProov provider version.
[email protected]
Release date
02-09-2026
Highlights
New Security Module: Introduction of
CafSecuritymodule for security validationsPayFace Integration: Added support for PayFace (Fortface) as an optional Face Liveness provider
Stability Improvements: Major crash fixes and stability improvements for the Document Detector module
Features
CafSecurity Module:
Added a new module specifically for security validations
Configuration: Added
enableSecurityModuleflag inCafSdkConfiguration(default value:true)
PayFace (Fortface) Integration:
Optional Face Liveness provider integration
Configuration: New property
payFaceDebugModeinCafFaceLivenessConfigurationto enable debug mode for the PayFace provider
Fixes
DocumentDetector:
Activity Lifecycle: Resolved multiple crashes related to activity lifecycle management (initialization, pause, and resume states)
Camera Lifecycle: Improved camera resource management and thread lifecycle to prevent crashes during SDK shutdown
UI Components: Resolved theme compatibility issues and fragment transaction exceptions
Network Requests: Corrected response body handling to prevent errors when reading network responses
Data Access: Improved cursor initialization and validation before accessing database data
ANR Prevention: Optimized document controller instance checks to prevent "Application Not Responding" issues
General: Internal improvements and stability corrections
FaceLiveness:
Sessions: Fixed session creation errors
UI: Fixed color tint on remote images in the Instructions screen
Updates
Build Configuration:
ProGuard Rules: Added necessary ProGuard rules for PayFace integration
[email protected]
Release date
03-09-2026
Updates
Updated iProov Liveness Provider: Update iProov provider version.
Updated iOS minimum deployment target: Updated to
15.0.
Fixes
DocumentDetector
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.
[email protected]
Release date
10-27-2025
Highlights
First Flutter SDK Release: Complete Flutter implementation of the CAF SDK for identity verification
Unified SDK: Single package containing all CAF modules (Face Liveness and Document Detector) with both core and UI variants
Flutter-Native Integration: Seamless integration with Flutter's widget system and state management
Cross-Platform Support: Full support for both Android and iOS platforms
Type-Safe Configuration: Strongly typed Dart configuration classes for better development experience
Features
Module Configuration System:
caf-modules-config.json: Configuration file in project root to specify which modules to includeAvailable modules:
documentDetector: Enable/disable Document Detector modulefaceLiveness: Enable/disable Face Liveness moduledocumentDetectorUI: Enable/disable Document Detector UI modulefaceLivenessUI: Enable/disable Face Liveness UI module
Example configuration:
Core SDK Features:
CafSdk Class: Main SDK class for initialization and configuration
Event Stream: Real-time event handling through Dart streams
Module Management: Sequential execution of modules with configurable presentation order
Error Handling: Comprehensive error types and failure handling
Configuration Builder: Type-safe configuration using builder pattern
Face Liveness Module:
Core Module:
CafFaceLivenessConfigurationfor programmatic controlUI Module:
CafFaceLivenessUIConfigurationwith customizable instruction screensFeatures: Authentication URLs, certificate pinning, debug mode, retry attempts
Customization: Instruction screens with images, titles, descriptions, and steps
Document Detector Module:
Core Module:
CafDocumentDetectorConfigurationfor programmatic controlUI Module:
CafDocumentDetectorUIConfigurationwith full UI customizationDocument Types: Support for RG, CNH, Passport, RNE, CTPS, and more
Upload Support: File upload with compression, format control, and size limits
Proxy Configuration: Support for proxy servers with authentication
Message Customization: Customizable user messages throughout the flow
Advanced Configuration:
Color Theming: Complete UI color customization through
CafColorConfigurationSecurity Settings: Development flags, debug mode, and security controls
Flow Control: Manual capture, timeouts, retry attempts, and popup controls
Instruction Screens: Customizable instruction screens for both modules
Technical Implementation
Flutter Integration:
Method Channels: Native communication through Flutter's method channel system
Stream-Based Events: Real-time event handling using Dart streams
State Management: Proper lifecycle management with
StatefulWidgetsupportError Handling: Comprehensive error handling with typed exceptions
Platform Support:
Android: Full support with ProGuard/R8 rules and Maven repository configuration
iOS: Complete integration with CocoaPods and native iOS modules
Permissions: Proper permission handling for camera and network access
Performance:
Selective Module Loading: Only load enabled modules to optimize bundle size
Memory Management: Proper resource cleanup and memory management
Network Optimization: Efficient network communication with retry mechanisms
Installation and Setup
Package Installation: Simple installation via
flutter pub add caf_sdkModule Configuration: Easy module selection through JSON configuration file
Platform Setup: Clear instructions for Android and iOS platform configuration
Permission Management: Comprehensive permission setup for both platforms
Documentation
Complete Examples: Full implementation examples for both basic and advanced usage
Configuration Guide: Detailed configuration options for all modules
Event Handling: Comprehensive event handling examples and patterns
Error Reference: Complete error types and failure scenarios documentation
Breaking Changes
First Release: This is the first release of the Flutter SDK, so there are no breaking changes from previous versions.
Known Issues
iOS Simulator: Some features may not work properly in iOS Simulator due to camera limitations
Android Emulator: Camera-dependent features require physical devices for testing
Network Requirements: All modules require internet connectivity for proper operation
Last updated

