Table of contents

Release Notes for iOS SDK - 3.x

3.6.2000 (09/22/2026)

The version number jumps from 3.4.1300 to 3.6.2000 to stay aligned with the Dynamsoft Capture Vision base the SDK ships against. There were no public 3.5.x or 3.6.1000 releases.

The minimum supported iOS version is now 16.0, raised from 13.0, as required by the Core ML models the scanner ships. Apps on an earlier deployment target must raise it to iOS 16.0 or later to adopt this release.

New

  • Per-field MRZ validation: MRZData.getFieldValidationStatus(_:) returns a field’s check-digit result as a ValidationStatus of .none, .succeeded, or .failed. It takes the same field names as the MRZData properties; the composites dateOfBirth, dateOfExpire, and mrzText report their worst component.
    • Behavior change: scans failing check-digit validation are no longer discarded. Values are returned with their status, so you can accept them, re-scan, or request correction.
  • Camera permission handling: MRZScannerViewController now gates the camera on AVCaptureDevice authorization and never opens it without access. When unavailable it offers Open Settings, then reports the outcome.
    • New ErrorCode (DSMRZErrorCode in Objective-C): cameraPermissionDenied (1001), resolvable through Settings, and cameraPermissionRestricted (1002), withheld by device policy. Both are reported by errorCode with .exception. The bundle owns codes 1000–1999; Capture Vision codes are all <= 0.
    • New isCameraPermissionPromptEnabled (default: true) suppresses the alert for integrators presenting their own UI. Denials are still reported.
  • Scanning progress indicator: Shown while the scanner is actively processing frames, prompting the user to hold the device steady.

  • Flip document prompt: For TD1 and TD2 IDs with the portrait on the opposite side, the scanner now prompts a flip after the MRZ is captured.

Fixes & Improvements

  • Upgraded the Dynamsoft Capture Vision base to 3.6.2000, addressing a known CVE and adding crash fixes. An MRZ rotated 180° can now be read.
  • Constrained the scan region to the guide frame; previously a document held outside the guide could be accepted.
  • Fixed capture staying clipped to an invisible box when isGuideFrameVisible = false. The whole preview is now scanned, and the spinner and flip prompt remain visible.
  • Fixed small documents going undetected once the scan region covered the whole preview.
  • Fixed the guide frame fading to white before the result view appeared; the green is now held through the handover.
  • Fixed image assets failing to load when DSMRZScannerViewController is subclassed from Objective-C. Swift integrators were unaffected.
  • Reduced memory retained after dismissal; the last frame’s full-resolution image buffers are now released on teardown.
  • The DynamsoftMRZScannerBundle.xcframework is now published unsigned, so archive builds no longer require access to the signing team that produced it.

3.4.1300 (04/27/2026)

Fixes & Improvements

  • Fixed an issue where the portrait extraction task failed to signal completion on TD2 documents, stalling the transition to the result view despite successful portrait detection.

3.4.1200 (04/02/2026)

New

  • Image results: MRZScanResult now returns captured images alongside the parsed MRZ data. Three types of images can be retrieved from the result:
    • Document image: A cropped and perspective-corrected image of the document, available via getDocumentImage(_ side: DocumentSide). Returned by default.
    • Original image: The raw full-frame camera image captured at the moment of scanning, available via getOriginalImage(_ side: DocumentSide). Disabled by default.
    • Portrait image: The detected portrait extracted from the document, available via getPortraitImage(). Returned by default.
    • For two-sided ID cards, images for both sides are accessible by passing DocumentSide.mrz or DocumentSide.opposite to getDocumentImage() and getOriginalImage().
  • New DocumentSide enumeration: Added DSDocumentSide (DocumentSide in Swift) with values DSDocumentSideMrz / .mrz (the side containing the MRZ) and DSDocumentSideOpposite / .opposite (the reverse side) to identify which side of a document an image belongs to.

  • Image return configuration: Added three new MRZScannerConfig properties to control which images are included in the scan result:
    • returnDocumentImage (default: true)
    • returnOriginalImage (default: false)
    • returnPortraitImage (default: true)
  • Additional MRZ data fields: MRZData now exposes the following additional parsed fields:
    • issuingStateRaw — the raw issuing state value as encoded in the MRZ, before standardization.
    • nationalityRaw — the raw nationality value as encoded in the MRZ, before standardization.
    • optionalData1 — the first optional data field (nullable).
    • optionalData2 — the second optional data field (nullable).
    • personalNumber — the personal number field, typically present on TD3 passport documents (nullable).
  • New UI button visibility controls: Added three new MRZScannerConfig properties to control the visibility of toggle buttons in the scanning UI:
    • isBeepButtonVisible — shows or hides the beep sound toggle button (default: true).
    • isVibrateButtonVisible — shows or hides the vibration toggle button (default: true).
    • isFormatSelectorVisible — shows or hides the document format selector at the bottom of the scanning UI (default: true).

Changed

  • MRZScanResult.data is now nullable: The data property on MRZScanResult has been changed from a non-optional type to a nullable type (nullable DSMRZData* / MRZData? in Swift). Code that accesses result.data without a nil check must be updated. See the upgrade guide for migration details.

  • errorMessage renamed to errorString: The errorMessage property on MRZScanResult has been renamed to errorString. Update any references in your code. See the upgrade guide for migration details.

3.2.5000 (12/18/2025)

Fixes & Improvements

  • Resolved a libPNG CVE issue by updating the C++ dependencies to use the latest libPNG CVE.

3.2.3000 (11/05/2025)

Fixes & Improvements

  • Resolved an issue where scanning could take longer than expected.
  • Fixed a potential crash that could occur in certain scenarios.

3.2.1000 (10/16/2025)

  • 🚀 High-Speed and Precise MRZ Region Detection: Revolutionary neural network MRZLocalization model delivers 42.7% faster processing with enhanced region detection accuracy for passport and ID workflows

3.0.5200 (08/18/2025)

Fixes & Improvements

  • Fixed an xcframework signature issue.

3.0.5100 (08/05/2025)

Fixes & Improvements

  • Small fixes and tweaks.

3.0.5000 (07/29/2025)

Fixes & Improvements

  • Default Camera Changed: To address short-distance focusing issues on Pro Max iPhones, the default camera has been switched to BackDualWideAuto, enabling automatic switching between the wide and ultra-wide cameras.
  • Fixed various minor bugs and improved overall stability.

3.0.0 (05/15/2025)

Fixes & Improvements

  • Improved the read-rate and the accuracy of MRZ text recognition.

This page is compatible for: