About
SmartCapture Document enables document scanning and processing in your app, supporting both SwiftUI and UIKit. It provides configuration options for scan behavior and exposes results with rich metadata.
Overview
Section titled “Overview”The SDK is designed to be easy to integrate. You configure scanning options, create an SDK instance, present the scanning UI, and listen for results.
Minimum iOS version
Section titled “Minimum iOS version”The current minimum iOS version is 15.0.
Xcode Version
Section titled “Xcode Version”The SDK is built with Xcode 26.1. It has been validated with Xcode 26.3, 26.4, 27.0 and 27.1 beta; earlier Xcode 26 releases are expected to work but were not part of this validation.
Using the SDK alongside SwiftUI with Xcode 27
Section titled “Using the SDK alongside SwiftUI with Xcode 27”Importing SwiftUI and Document in the same file is fully supported, and the SDK’s types are used exactly as in the examples throughout this guide:
import SwiftUIimport Document
let config = DocumentScannerConfig(documentSide: .back, documentType: .passport)let sdk = DocumentSDK(documentScannerConfig: config)There is one exception. The iOS 27 SDK adds a SwiftUI protocol named Document, so in a file that imports SwiftUI the word Document refers to that protocol rather than to this SDK. Prefixing one of our types with the module name therefore does not compile with Xcode 27:
import SwiftUIimport Document
let failure = Document.Failure(message: "Camera unavailable", component: .camera, cause: nil) // Xcode 27: does not compileThe prefix is never required in normal use. It is only needed when your app declares a type with the same name as one of ours, such as its own Failure. In that case declare an alias in a file that does not import SwiftUI and use the alias everywhere else:
// SDKTypes.swift, imports Document onlyimport Document
typealias SDKFailure = Document.FailureXcode 26.4 and later also accept Document::Failure in place of the alias.
Swift Version
Section titled “Swift Version”The SDK is compiled with the Swift 6.2.1 toolchain in Swift 5 language mode, so its module interface reports an effective Swift version of 5.10. Implementors do not need to match this — we do not foresee any issues consuming the SDK from apps built with Swift 6.