This page covers the .NET MAUI migration from SDK 5.17.x to SDK 6.0.0-beta11.
GeniusScanSDK.ScanFlow package now wraps the SDK 6 native minimums: iOS 15 or later and Android API 23 or later.barcodes result key.ScanFlowException, including user cancellation.GeniusScanSDK.ScanFlow version 6.0.0-beta11.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>
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"].
The barcode scan result dictionary now uses barcodes.
Before:
var codes = (IEnumerable<object>)result["readableCodes"];
After:
var codes = (IEnumerable<object>)result["barcodes"];
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.
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.
Start with a free trial license to test the SDK, or contact us directly for a custom quote tailored to your needs.
© 2026 The Grizzly Labs. All rights reserved.