Skip to main content

Migration

Version 3.0.0 - Sep 05, 2026

Version 3.0.0 is binary breaking. Rebuild your app against the new package rather than swapping the assembly.

Minimum platform versions

The minimum platform versions have been raised. Adapt your project accordingly if you are still below them:

Minimum
.NET9 (10 is supported as well)
Android6.0 (API level 23)
iOS13.0

Fields became properties

All configuration values are now properties instead of public fields. In almost all cases your code does not need to change, since the syntax for reading and writing them is identical:

var scanConfig = new DocumentScannerConfiguration();
scanConfig.ConfirmPages = true;

You do need to adapt your code if you passed a configuration value by ref or out, or if you accessed it through reflection.

DocutainColor.Light and DocutainColor.Dark are now nullable (Color?). Both of them have to be set for a color to be applied.

Sealed and abstract configuration classes

DocumentScannerConfiguration and PhotoPaymentConfiguration are now sealed, their shared base class BaseScannerConfiguration is now abstract and cannot be instantiated any more. If you derived your own class from one of them, use composition instead, e.g. a factory method that returns a preconfigured DocumentScannerConfiguration.

Uninitialized SDK now throws

Using SDK functionality before DocutainSDK.InitSDK returned true used to fail silently or with an arbitrary platform exception. It now throws a DocutainSdkNotInitializedException.

If you already check the return value of DocutainSDK.InitSDK as described in SDK Initialization, nothing changes for you. See Error Handling for the complete list of exceptions.

Nullable return values

Document.WritePDF, Document.WriteImage and Document.GetImageBytes are now annotated as nullable. They always returned null on error, so this only makes the existing behaviour visible to the compiler. With nullable reference types enabled, you may need to add a null check:

string? pdfFile = Document.WritePDF(destinationPath);
if (pdfFile == null)
{
var error = DocutainSDK.LastError;
}

DocutainSDK.IsInit is now read-only. It was a writable field before, but writing to it never had any effect other than confusing the SDK.

Version 2.0.0 - May 12, 2025

Onboarding

With the new comprehensive onboarding functionality, the customizing of the previous onboarding popup within the scan screen has been moved to the new scanHintPopup class.

Therefore, the following properties have been deprecated and will be removed in a future version. If you are currently using at least one of them, we recommend to migrate to the new onboarding functionality as early as possible, to avoid breaking changes in the future.

DocumentScannerConfiguration

PropertyTypeDescription
OnboardingImageSourcestring?Your custom image for the onboarding dialog that appears when scan is opened for the first time. Its replacement Onboarding.ScanHintPopup.ImageSource takes the image the same way, see Image resources.

TextConfiguration

PropertyTypeDescription
TextOnboardingTitlestringThe text to show in the onboarding popup title that appears when the scan page is opened for the first time.
TextOnboardingMessagestringThe text to show in the onboarding popup message that appears when the scan page is opened for the first time.
TextOnboardingCloseButtonstringThe text to show in the onboarding popup close button that appears when the scan page is opened for the first time.
TextSizeOnboardingTitlefloatThe text size of the onboarding popup title that appears when the scan page is opened for the first time.
TextSizeOnboardingMessagefloatThe text size of the onboarding popup message that appears when the scan page is opened for the first time.