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.