Migration guide

IncdOnboarding migration guide

Migration to 5.45.0

Model loading API — extended signatures and auto-unload by default

IncdOnboardingManager.shared.loadModels and IncdOnboardingManager.shared.loadModelsSynchronously now take two additional parameters:

Existing call sites that rely on the previous defaults continue to compile without changes, but the runtime behavior is now different: models that previously stayed in memory between onboardings are released by default. If you want the prior behavior, opt out explicitly.

Old way:

IncdOnboardingManager.shared.loadModels {
  // models loaded
}

IncdOnboardingManager.shared.loadModelsSynchronously()

New way (equivalent, models still released after each onboarding):

IncdOnboardingManager.shared.loadModels(
  modelGroup: .all,
  autoUnload: true
) {
  // models loaded
}

IncdOnboardingManager.shared.loadModelsSynchronously(
  modelGroup: .all,
  autoUnload: true
)

New way (preserve previous behavior — keep models resident across sessions):

IncdOnboardingManager.shared.loadModels(autoUnload: false) {
  // ...
}

// release explicitly when you're done with the SDK
IncdOnboardingManager.shared.unloadModels()

Deepsight configuration — unified DeepsightConfiguration for Face Capture and Face Authentication

Selfie / Face Capture and Face Authentication now express Deepsight capture through a single DeepsightConfiguration, matching the Dashboard flow/workflow model:

Selfie scan

The addSelfieScan overload that took requireDepthData / videoLivenessRecording is deprecated (not removed). Use the new overload that takes a DeepsightConfiguration:

Old way (deprecated):

config.addSelfieScan(
  requireDepthData: true,
  videoLivenessRecording: true
)

New way:

config.addSelfieScan(
  deepsight: DeepsightConfiguration(
    enabled: true,
    modality: .singleFrameWithDepthAndVideo,
    motion: true
  )
)

Mapping from the deprecated parameters:

Deprecated parameters New DeepsightModality
videoLivenessRecording: false .singleFrameWithDepth (depth captured, preserving previous behavior)
videoLivenessRecording: true .singleFrameWithDepthAndVideo

Notes:

Face authentication

FaceAuthenticationConfiguration now accepts a DeepsightConfiguration:

let config = FaceAuthenticationConfiguration(
  deepsight: DeepsightConfiguration(modality: .singleFrameWithDepthAndVideo, motion: true)
)

When a flow/workflow is fetched from the Dashboard, Deepsight is configured automatically from the backend (ds, deepsightLiveness, and motion); no SDK changes are required for flow/workflow-driven onboarding.

NFC Scan Module — Redesign to Design System V2

The NFC Scan module has been migrated to the Incode Design System V2. The public addNfcScan(...) API and NFCScanResult are unchanged; integration code does not need to be touched. User-visible flow changes:

Several incdOnboarding.nfc.* strings had their casing/copy updated, and new keys were added for V2-only screens. See LOCALIZATION_GUIDE.md for the full key list. No key renames or removals — overrides in your Localizable.strings continue to work.

disableJailbreakDetection removed

The public IncdOnboardingManager.shared.disableJailbreakDetection property has been removed and has no replacement. If you set it anywhere, remove those calls; the code will not compile until you do.

Old way:

IncdOnboardingManager.shared.disableJailbreakDetection = true

New way: remove the call.