.NET MAUI SDK 6 Migration Guide

This page covers the .NET MAUI migration from SDK 5.17.x to SDK 6.0.0-beta11.

What changed in SDK 6

  • The GeniusScanSDK.ScanFlow package now wraps the SDK 6 native minimums: iOS 15 or later and Android API 23 or later.
  • Document scan configuration and results use barcode terminology when extracting codes as structured data.
  • Barcode scan results now use the barcodes result key.
  • Scan-flow errors use aligned SDK 6 string codes and are surfaced through ScanFlowException, including user cancellation.

Requirements

  • Update the NuGet package to GeniusScanSDK.ScanFlow version 6.0.0-beta11.
  • Set Android minimum platform to API 23 or later.
  • Make sure the iOS target satisfies the SDK 6 native requirement: iOS 15 or later.
dotnet add package GeniusScanSDK.ScanFlow --version 6.0.0-beta11

For Android:

<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">23.0</SupportedOSPlatformVersion>

For iOS:

<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>

Document scanning

Keep using ScanFlowService.ScanDocument(...) for document scanning.

If your SDK 5 document scan flow extracted readable codes as structured data, update that configuration and result access to barcode terminology:

// SDK 5
configuration["structuredData"] = new[] { "readableCode" };
configuration["structuredDataReadableCodeTypes"] = new[] { "qr" };

// SDK 6
configuration["structuredData"] = new[] { "barcode" };
configuration["structuredDataBarcodeTypes"] = new[] { "qr" };

In returned scan dictionaries, read the barcode list from structuredData["barcodes"] instead of structuredData["readableCodes"].

Barcode scanning

The barcode scan result dictionary now uses barcodes.

Before:

var codes = (IEnumerable<object>)result["readableCodes"];

After:

var codes = (IEnumerable<object>)result["barcodes"];

Error handling

In SDK 5, .NET integrations surfaced scan-flow failures as generic exceptions on Android and as NSErrorException on iOS. Apps that suppressed document scan cancellation had to use platform-specific checks.

.NET MAUI receives aligned SDK 6 error codes through ScanFlowException.Code: cancellation_error, configuration_error, licensing_error, capture_error, storage_space_error, and internal_error.

Before:

try
{
    var result = await scanFlowService.ScanDocument(configuration);
}
#if IOS
catch (Foundation.NSErrorException exception)
    when (exception.Domain == "com.thegrizzlylabs.gssdk.scanflow.ErrorDomain" && exception.Code == 999)
{
    return;
}
#elif ANDROID
catch (Exception exception)
    when (exception.Message == "Scanning canceled by user")
{
    return;
}
#endif
catch (Exception)
{
    throw;
}

After:

try
{
    var result = await scanFlowService.ScanDocument(configuration);
}
catch (ScanFlowException exception)
{
    if (exception.Code == "cancellation_error")
    {
        return;
    }

    throw;
}

Use the same SDK 6 pattern for barcode scan flow calls.

Final checks

After updating the NuGet package and platform settings, restore packages, then build and run the app for both iOS and Android targets.

Validate the document scan flow, barcode scan flow, barcode result key, user cancellation handling, and one non-cancellation ScanFlowException path. If your app uses OCR, PDF generation, multi-page scanning, or structured data extraction, run those scenarios too.

Ready to get started?

Start with a free trial license to test the SDK, or contact us directly for a custom quote tailored to your needs.

Products

Industries

Case Studies

Integration

Company

© 2026 The Grizzly Labs. All rights reserved.