@smileid/usesmileid_vision_document
v12.1.1
Published
Apple Vision document detection implementation for the UseSmileID React Native (Expo) SDK.
Readme
@smileid/usesmileid_vision_document
UseSmileID v12 — Apple Vision document provider for React Native (Expo Modules).
iOS-only. Thin shim around the existing Swift Package
UseSmileIDVisionDocument.
Architecture
The native side runs the entire document-scan pipeline (analyzer +
validator + transitioner + state machine). This package contributes a
Swift Expo Module that constructs UseSmileIDDocumentSession(DocumentDetectorAnalyzer())
and a TS wrapper that bridges the four contract methods (configure /
analyze / reset / close) with Zod-validated wire payloads.
No ML logic is reimplemented in this package — it's a pure passthrough.
Installation
pnpm add @smileid/usesmileid_vision_document react-native-vision-camera@^4This package's pod depends on VisionCamera: without it pod install fails
with Unable to find a specification for VisionCamera depended upon by
UseSmileIDVisionDocumentExpo. Pin v4 — the SDK is built against the v4
API, and a bare expo install react-native-vision-camera resolves a v5.
The Smile ID native SDK is declared as an SPM dependency in
expo-module.config.json. Expo Modules autolinking surfaces it to
the iOS target — partners do not need to add anything to their
Podfile beyond the standard use_expo_modules! invocation.
Config plugin options
| Option | Values | Default |
| ------------------------- | ------------------------ | -------- |
| iosSignatureAggregation | "keep" | "disabled" | "keep" |
Several targets have to reference the same signed Smile ID XCFramework, and an
iOS release archive collects framework signatures into one directory keyed by
filename — so "keep" adds a build phase that leaves exactly one staged copy of
each signature while the archive is assembled.
"disabled" instead turns off Xcode's signature aggregation for the app target.
Reach for it only if an Xcode version we have not seen still fails to archive:
it drops the recorded signatures of every framework in the archive, including
your own and other vendors'.
{
"plugins": [
[
"@smileid/usesmileid_vision_document",
{ "iosSignatureAggregation": "disabled" }
]
]
}Usage
import { useSmileIDVisionDocument } from "@smileid/usesmileid_vision_document";
await useSmileIDVisionDocument.configure({ timeoutMs: 15_000 });
const result = await useSmileIDVisionDocument.analyze(bytes, rotation);
await useSmileIDVisionDocument.close();Cross-platform peers
| Platform | Provider package | Native dep |
| ---------------- | ------------------------------------- | -------------------------------- |
| iOS | @smileid/usesmileid_vision_document | UseSmileIDVisionDocument (SPM) |
| Android | @smileid/usesmileid_mlkit_document | com.usesmileid:mlkit-document |
| Android (no GMS) | @smileid/usesmileid_huawei_document | com.usesmileid:huawei-document |
Testing
pnpm --filter @smileid/usesmileid_vision_document test