Skip to main content

SDK Initialization | React Native Barcode Scanner

The Scanbot Barcode Scanner SDK must be initialized before usage.

ScanbotBarcodeSdk.initializeSdk(options: InitializationOptions): Promise<{result: string}>;
InitializationOptions {
* The Scanbot SDK License Key
licenseKey: string;
* If 'true', it enables logging.
* Consider switching logging OFF in production builds for security and performance reasons!
loggingEnabled?: boolean;
* Enables Scanbot SDK Core native logging (default is false; Android only).
enableNativeLogging?: boolean;
* The quality of stored images, from (1 to 100). Defaults to 80.
storageImageQuality?: number;
* The preferred format for stored images.
storageImageFormat?: CameraImageFormat;
* Optional custom storage path.
storageBaseDirectory?: string;
* If set to `false`, GPU Acceleration will be disabled for Barcode Scanner,
* Document Scanner and Generic Document Recognizer (Android only).
* Default is `true`.
allowGpuAcceleration?: boolean;
* If set to `true`, CameraX will be used for the RTU-UI components (Android only).
* Default is `false`.
useCameraX?: boolean;
* Enables/disables XNNPACK acceleration for TensorFlow ML models, which provides
* highly optimized implementations of floating-point neural network operators (Android only).
* Default is `true`.
allowXnnpackAcceleration?: boolean;

License Key

In order to run the Scanbot SDK within your production app, you must purchase and use a valid Scanbot SDK license.

Each license key is valid only for a given app bundle identifier. You will be unable to use any of the SDK features if the license key is corrupted, expired, or invalid in any other way.

Example code for defining and using the license key:

import ScanbotBarcodeSdk from 'react-native-scanbot-barcode-scanner-sdk';

// Please note: this is just an example license key string (it is not a valid license)
const myLicenseKey =
"fXbN2PmyqEAZ+btdkSIS36TuX2j/EE5qxVNcZMXYErbLQ" +
"3OBnE10aOQxYI8L4UKwHiZ63jthvoFwUevttctBk0wVJ7Z" +
"+Psz3/Ry8w7pXvfpB1o+JrnzGGcfwBnRi/5raQ2THDeokR" +
"RB1keky2VBOFYbCfYt3Hqms5txF2z70PE/SBTMTIVuxL7q" +
"1xcHDHclbEBriDtrHw8Pmhh9FqTg/r/4kRN/oEX37QGp+Y" +
"3ogwIBbSmV+Cv+VuwtI31uXY3/GkyN/pSJZspIl+exwQDv" +
"O0O1/R/oAURpfM4ydaWReRJtjW8+b1r9rUgPERguaXfcse" +
"HlnclItgDfBHzUUFJJU/g==\nU2NhbmJvdFNESwppby5zY" +
"2FuYm90LmRlbW8ueGFtYXJpbgoxNDg0NjExMTk5CjcxNjc" +

const options = {
licenseKey: myLicenseKey,
loggingEnabled: true

const result = await ScanbotBarcodeSdk.initializeSdk(options);

Getting a Trial License

The Scanbot SDK will run without a license for one minute per session! To get a free, "no-strings-attached" 7-day trial license, please submit the Trial License Form on our website.

Please kindly note that a trial license can only be used in a development and staging environment. You are not allowed to publish your app to the App Store, Play Store, or any 3rd party Android App Store with a trial license.

Purchase a Production License

To get pricing information and purchase a production license for the Scanbot SDK please request a quote.

App Identifier

Every app has a unique identifier (sometimes also known as "bundle identifier" or "application ID"). Your license will be bound to this identifier. To request a trial license or purchase a production license you have to provide us the bundle identifier of your app.


Free Developer Support

We provide free "no-strings-attached" developer support for the implementation & testing of the Scanbot SDK. If you encounter technical issues with integrating the Scanbot SDK or need advice on choosing the appropriate framework or features, please visit our Support Page.

ScanbotBarcodeSdk.initializeSdk(options): Promise
The Scanbot Barcode Scanner SDK must be initialized before usage. Make sure to run the initialization only once per app lifetime. This should ideally be done at the earliest point in the application's lifecycle. Typically, the App.tsx file is good practice because it ensures that the Scanbot Barcode Scanner SDK is ready for use as soon as the app starts.

Example code for initialization:

import ScanbotBarcodeSdk from 'react-native-scanbot-barcode-scanner-sdk';

async function initializeSdk() {
const options = {
licenseKey: '', // Optional license key (empty for trial mode)
loggingEnabled: true, // Consider switching logging OFF in production builds for security and performance reasons!
storageBaseDirectory: myCustomStoragePath() // Optional custom storage path.
try {
const result = await ScanbotBarcodeSdk.initializeSdk(options);
// initialization succeeded
} catch (err) {
// initialization failed


  useEffect(() => {
}, []);

Updating the License in Production Apps

To renew an expired license or extend a valid license with new Scanbot Barcode Scanner SDK features, you will have to update your app in the App Store or Play Store. The expiration date and the feature list of a license are contained in an encrypted data part of the license key string. This means a renewal or extension of a license will cause a new license key string to be generated.

License Check in Production Apps

If your Scanbot Barcode Scanner SDK license has expired, any call of the Scanbot Barcode Scanner SDK API will result in an error. To prevent this, you should always check for license expiration during the runtime by calling the method ScanbotBarcodeSdk.getLicenseInfo(..). If the result object matches {isLicenseValid: false}, you should disable any usage of the Scanbot Barcode SDK functions or UI components in your app.

We highly recommend implementing a suitable handling of this case in your app!

ScanbotBarcodeSdk.getLicenseInfo(): Promise<boolean>

Use this function to check the current state of the license. The SDK must be initialized.

isLicenseValid: boolean; // true if the license is valid, false if the license is invalid or expired
licenseStatus: string; // license status code
licenseStatusMessage: string; // human-readable description of the license status code

Possible license status codes:

  • "StatusOkay": License is valid
  • "StatusTrial": No license installed, trial mode is active.
  • "StatusFailureExpired": License has expired.
  • "StatusFailureWrongOS": License does not include support for the current OS.
  • "StatusFailureCorrupted": License is invalid or corrupted.
  • "StatusFailureAppIDMismatch": License does not include this app's bundle ID.
  • "StatusFailureNotSet": No license installed.
Example code for checking the license status:
async function() {
const licenseInfo = await ScanbotBarcodeSdk.getLicenseInfo();
if (licenseInfo.isLicenseValid) {
// Making calls to the Scanbot Barcode SDK API is now safe.
// e.g. startBarcodeScanner(..), etc.


When initializing the Scanbot Barcode Scanner SDK you can enable logging of the SDK. By default logging is disabled.

const options = {
licenseKey: myLicenseKey,
loggingEnabled: true

const promise = ScanbotBarcodeSdk.initializeSdk(options);

On Android logs are printed into LogCat as well as saved on the device. You can find them in Environment.getExternalStorageDirectory()/debug_logs/[package_name]. Usually it is /sdcard/debug_logs/[package_name]. The easiest way to check the log outputs on Android is to use the Android Debug Bridge (adb) (e.g. $ adb -s <DEVICE_ID> shell "logcat").

On iOS all logs are printed to the console. Please use Xcode to check the log outputs.

You can also see application logs in the terminal by issuing react-native log-android or react-native log-ios.

Please note: While it may be useful for development, consider switching logging OFF in production builds for security and performance reasons!

Want to scan longer than one minute?

Generate your free "no-strings-attached" Trial License and properly test the Scanbot SDK.

Get your free Trial License

What do you think of this documentation?