Skip to main content

Branding

By default the SDK applies the branding configured in the dashboard (Configuración → Marca), the same model the web flow uses: five seed colors, an optional logo, a typography preset and per-element overrides. Anything you don’t override is derived from the seeds exactly like the web flow, and a dark background color flips the derivation so dark brands work without a dark-mode flag. Choose the source with brandingMode:
Typography presets (inter, roboto, lato, …) resolve to a font only if your app bundles that font. Otherwise the SDK falls back to the system font.

Color mode

colorMode sets light or dark: .system (default), .light, .dark on iOS; SYSTEM, LIGHT, DARK on Android. showsThemeToggle: true adds a light/dark switch to the header.

Language

The flow runs in English, Spanish or Portuguese, following the workflow’s language settings:
  • If the workflow pins one language, the flow always uses it.
  • Otherwise the SDK uses the device language when the workflow allows it, and falls back to the first allowed language.
By default the header shows a language picker when the workflow allows more than one language. showsLanguageSwitcher: false hides it; true shows it, and on a workflow that pins a language it offers all three.

Header, exit and attribution

Both platforms take the same switches:
  • The SDK draws one header with the tenant logo (or the workflow name), the step counter, a progress bar and the optional switchers. It never shows the Legal Talent logo.
  • showsHeader: false hides it when your app provides its own navigation bar.
  • onExit adds a close button with a confirmation dialog.
  • showsAttribution: false hides the “Powered by Legal Talent” footer. White-label tenants never show it.
  • iOS only: autoDismissOnComplete: true dismisses the flow (SwiftUI dismiss()) as soon as it finishes, instead of leaving the final page on screen. Use it when you present the flow modally and don’t dismiss it yourself in onComplete.

Screen capture

Available from v0.3.0. By default the flow keeps documents, selfies, codes and chip data out of screenshots, screen recordings and the app switcher thumbnail:
  • Android sets FLAG_SECURE on the Activity window while the flow is on screen, and on your dialog’s window too when you show the flow inside one. It clears the flag when the flow leaves, and leaves alone a window that was already secure. Every window the SDK opens on top, such as the guided document camera, pickers, dialogs and menus, is secured explicitly. System screens the flow hands over to (the file and photo pickers) follow the system’s rules.
  • iOS cannot block screenshots. The SDK covers the flow with a “screen recording detected” screen while the display is being recorded or mirrored, and with a blank cover from the moment the app goes to the background, so the App Switcher shows the cover instead of the last screen. The cover also hides the camera, photo and picker screens the SDK presents. It does not appear when the app merely goes inactive (permission alert, NFC sheet, Control Center).
The standalone NfcCaptureView is protected the same way on both platforms. Pass allowsScreenCapture: true to turn this off, for example in QA tooling or when producing a screencast.

Entry gate and terms

Every flow opens on an entry gate: a brand banner, the flow name, a preview of the steps, and consent to the terms and privacy policy. The SDK uses this pause to prefetch on-device models so capture steps open instantly. White-label tenants link their own terms. On iOS you can also pass privacyPolicyURL, termsOfServiceURL, or tosOptions when your tenant uses a terms-of-service system.

Document capture

documentCaptureOptions tunes the document steps: Presets: .standard, .cameraOnly, .automaticCameraOnly, .guidedCameraOnlyForIdentityDocuments.
The workflow’s identity document policy always wins: capture_mode: live_only hides the pickers and upload_only hides the camera, regardless of these options.

Selfie capture

The selfie step always uses the front camera with framing checks and auto-capture; there is no gallery path. selfieCaptureOptions takes the same presets on both platforms:
  • standard: runs a passive on-device anti-spoof check and attaches its evidence to the step.
  • cameraOnlyNoAntiSpoof: same capture UX without the model, for low-end devices or when your backend runs its own presentation-attack detection.

Liveness screens

The face-liveness detector is rendered by AWS Amplify: its oval, live prompts and spinner use Amplify’s own colors and cannot be themed. The SDK brands everything around it (intro, frame, errors). Amplify’s strings can be localized. On iOS, copy the en.lproj, es.lproj and pt.lproj folders from liveness-strings/ in the SDK repository into your app target and list es and pt as localizations. If you already have a Localizable.strings, merge the amplify_ui_liveness_* keys instead. The detector follows the device language, not the flow’s. If you have a dedicated Cognito Identity Pool, pass it with livenessConfiguration; otherwise the SDK uses the default pool for the environment.