MIGRATION GUIDE.md

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.

Migration to 5.44.0

Face Capture validation flags — defaults changed from false to true

When the dashboard configuration omits validateLenses, validateFaceMask, validateClosedEyes, or validateHeadCover, the SDK now defaults them to true. If you relied on these being off, set them explicitly to false in your dashboard configuration — otherwise the corresponding checks will start running and may reject captures that previously passed.

IncdTheme.logo — now also applied to V2 screens

V2 screens now respect IncdTheme.logo, using it before falling back to the host app's incdOnboardingLogo asset and then the SDK default (V1 already worked this way). If you previously set IncdTheme.logo for V1 and a separate incdOnboardingLogo asset expecting V2 to show the asset, V2 will now show IncdTheme.logo on both. Leave IncdOnboarding.logo unset to keep V2 on the asset.

Migration to 5.43.0

IncdFlowError and GeolocationError — new cases

The reworked Geolocation failure UX adds new enum cases. Update any exhaustive switch over IncdFlowError or GeolocationError:

Migration to 5.42.0

Migration to 5.41.0

CURP Validation Module — Localization Key Changes

The CURP Validation module has been redesigned to use the Incode Design System V2. As part of this update:

If you override CURP-related strings in your Localizable.strings, update the keys above. Unused keys can be safely removed.

ID Document Chooser — idType Behavior Change

The visibility of the ID Document Chooser screen is now controlled only by the "Show document chooser screen" flag on the Dashboard or showIdTypeChooser in addIdScan.

Setting idType alone no longer hides the chooser and will be ignored.

If you use startOnboarding / startOnboardingSection and previously relied on idType to suppress the chooser, add an explicit showIdTypeChooser: false:

// Before (implicit suppression via idType — no longer works)
addIdScan(idType: .id)

// After (explicit)
addIdScan(idType: .id, showIdTypeChooser: false)

V2 Theme Color Palette — Positive and Negative Token Renames

The JSON/code keys used for positive and negative semantic colors in IncdTheme's V2 color palette have been renamed. If you customize the color palette via JSON or code, update the following keys:

Old key New key
negative500 negative400
negative600 negative500
positive600 positive500
positive800 positive950

For the full updated palette reference, see About Colors in the Customization Guide v2.

Migration to 5.40.0

Migration to 5.39.0

Migration to 5.38.0

Migration to 5.37.0

End-to-end-encryption (E2EE) no longer requires a separate "-e2ee" SDK variant and has also dropped the dependency on the OpenSSL framework. The separate "-e2ee" SDK variant has been deprecated.

Migration to 5.34.0

The brightnessThreshold parameter has been removed in the following methods:

Migration to 5.30.0

Migration to 5.21.0

Migration to 5.19.0

Migration to 5.18.0

Starting from version 5.18.0, IncdOnboarding utilizes Lottie vector animations in JSON format for displaying tutorials. If you have been using your own tutorials in .mp4 format, you will need to provide the corresponding animations in JSON format. For more information on setting up your own tutorials, please visit the following page Change tutorial videos

Migration to 5.16.0

Old way:

  private var helpButton: HelpButtonConfiguration {

return HelpButtonConfiguration(cornerRadius: 35,
                                   backgroundColor: Colors.background,
                                   textColor: Colors.primary,
                                   iconColor: Colors.primary,
                                   width: 140,
                                   height: 70,
                                   iconTitlePadding: 4,
                                   verticalPadding: 6,
                                   horizontalPadding: 8)

New way:

private var helpButton: ButtonConfiguration {
    let normal = ButtonThemedState(alpha: 1.0,
                                   backgroundColor: .incdBackground,
                                   borderColor: .incdPrimary,
                                   borderWidth: 1.0,
                                   textColor: .incdPrimary,
                                   iconImageName: "incdOnboarding.help.clipped",
                                   iconTintColor: .incdPrimary,
                                   iconPosition: .right,
                                   iconPadding: 8)
    return ButtonConfiguration(states: .init(normal: normal))
  }

Migration to 5.15.0

Note: This function is intended for analytics or informative purposes only, and should not be used as an indication that all events and their effects have been executed and completed.

Old way:

func onEvent(_ event: Event, data: [String: Any])

New way:

 func onEvents(_ eventsWithDetails: [EventWithDetails])

Migration to 5.12.0

Migration to 5.5.0

Migration to 5.x

Start Onboarding

Parameters interviewId, configurationId, onboardingValidationModules, customFields, externalId are removed.

These parameters are now provided via IncdOnboardingSessionConfiguration:

let sessionConfig = IncdOnboardingSessionConfiguration(configurationId: "confId",
                                                                 validationModules: [],
                                                                 customFields: ["customKey": "customData"],
                                                                 interviewId: "interviewId",
                                                                 externalId: "externalId")

IncdOnboardingConfiguration is removed, use IncdOnboardingFlowConfiguration instead to add modules:

let flowConfig = IncdOnboardingFlowConfiguration()
          flowConfig.addIdScan()
          ...

Now you can provide these to the startOnboarding method:

  IncdOnboardingManager.shared.startOnboarding(sessionConfig: sessionConfig, flowConfig: flowConfig, delegate: self)

Setup Onboarding Session

Removed API methods:

Use the setupOnboardingSession instead. All the parameters of createNewOnboаrdingSession and setOnboardingSession methods are now part of IncdOnboardingSessionConfiguration:

let sessionConfig = IncdOnboardingSessionConfiguration(region: "ALL",
                                                       queue: .aristotle,
                                                       configurationId: "confId",
                                                       validationModules: [],
                                                       customFields: ["customKey": "customData"],
                                                       interviewId: "interviewId",
                                                       token: "token",
                                                       externalId: "externalId")

IncdOnboardingManager.shared.setupOnboardingSession(sessionConfig: sessionConfig) { sessionResult in

}

Starting Onboarding Section

let flowConfig = IncdOnboardingFlowConfiguration()
flowConfig.addIdScan()
IncdOnboardingManager.shared.startOnboardingSection(flowConfig: flowConfig, sectionTag: "MyTag", delegate: self)

Migration to 4.7.1

Migration to 4.5.0

Migration to 4.1.0

Migration to 4.0.0

Migration from 1.10.x to 1.11.0

For version 1.11.0 ID and Selfie capture are customized via IncdTheme. If you are using UI customization please visit IncdTheme Guide.

Migration from 1.9.x to 1.10.x

vc: UIViewController parameter is now deprecated in most of calls. Please assign the vc: parameter to IncdOnboardingManager.shared.presentingViewController and remove the vc: parameter from the API.

Example:

1.9.x

IncdOnboardingManager.shared.startOnboarding(vc: self)

1.10.x

IncdOnboardingManager.shared.presentingViewController = self
IncdOnboardingManager.shared.startOnboarding()

Project Migration Guide from 1.9.42 to 1.9.46

Framework is now being delivered as a static IncdOnboarding.xcframework, so that only opencv2 and OpenTok frameworks need to be added to the project alongside main IncdOnboarding.xcframework

Make sure git lfs is installed

Some framework files exceed 100MBs, so Git Large File Storage is needed to be setup. Please find the instrcutions here: https://docs.github.com/en/github/managing-large-files/versioning-large-files/installing-git-large-file-storage

Framework files update

Change Project Settings

  1. Add following to the Other Linker Flags: -l “stdc++” -l “iconv” - framework “VideoToolbox”
  2. IncdOnboarding.xcframework, opencv2.framework and OpenTok.framework should be set to Do not Embed’

Code updates

Error handling has been improved and simplifed, in particular:

1.9.14 -> 1.9.25

Migration steps:

Moving ID auto-capture timeouot configuration to server.

  1. Remove idAutoCaptureTimeout parameter if present anywhere. Timeout can be set on server through REST API.

1.8.x -> 1.9.14

Migration steps:

  1. Remove OpenTok from Cocoapods. If that was your only Pod then you can deintegrate Cocoapods altogether.
  2. Remove the “models” folder from the project and from the file system.
  3. Remove the “models” from the target’s “Build Phases” -> “Copy Bundle Resources” section.

1.6.x -> 1.8.x

Migration steps:

  1. Document type .addressproof has been renamed to .document for scanning documents using addDocumentScan(: DocumentType).
  2. Usage of IncdRegion is deprecated. IncdOnboardingConfiguration init now takes a regionCode: String as a parameter. Before it was IncdRegion.