BlackBerry Dynamics SDK for React Native version 14.0

The BlackBerry Dynamics SDK for React Native can be downloaded from BlackBerry Developer Downloads. Development guidance is contained in the README file of the download package.

New in this release

Feature

Description

Changes to supported React Native versions

This release adds support for React Native 0.76.x and 0.77.x.

React Native 0.74.x is deprecated and will be removed in an upcoming release.

This release removes support for React Native 0.71.x, 0.72.x, and 0.73.x.

Support for 16 KB page sizes

Android has announced that, starting November 1, 2025, all new and updated apps targeting Android 15 and later must support 16 KB page sizes. For more information, see Android Developers: Support 16 KB page sizes and Android Developers Bog: Get your apps ready for 16 KB page size devices.

This release of the BlackBerry Dynamics SDK for React Native is compatible with the 16 KB page size requirement. It is recommended that you run a mock submission of custom BlackBerry Dynamics apps to Google Play to identify any additional dependencies that you need to resolve to meet the 16 KB page size requirement.

You must use React Native 0.77.x to support 16 KB page sizes.

Changes for data leakage prevention (DLP) for Android

Previously, for Android, <Text /> and <TextInput /> components were secured using the BlackBerry-Dynamics-for-React-Native-Text and BlackBerry-Dynamics-for-React-Native-TextInput UI components.

In this release, those UI components have been removed and a new method is required to secure <Text /> and <TextInput />. For instructions, see the DLP for Android row in the Features section below.

Support

Feature

Description

Development requirements

  • Windows 11 (Android only)
  • Windows 10 (Android only)
  • macOS X

React Native supported versions

  • 0.77.x
  • 0.76.x
  • 0.75.x

React Native version 0.74.x is deprecated and support will be removed in an upcoming release.

The supported versions of React Native require Java 17.

Support for 16 KB page sizes on Android requires React Native 0.77.x (or a later version when supported).

BlackBerry Dynamics SDK supported versions

  • BlackBerry Dynamics SDK for Android version 13.2, 13.0.
  • BlackBerry Dynamics SDK for iOS version 14.0, 13.1, 13.0.
  • The BlackBerry Dynamics SDK for React Native supports the BlackBerry Dynamics SDK for iOS version dynamic framework only. The iOS SDK static framework is no longer supported.

Node.js

Version 20.19.4 or later

iOS requirements

  • Xcode 15 or later
  • BlackBerry Dynamics SDK for iOS 14.0: iOS 18 or later
  • BlackBerry Dynamics SDK for iOS 13.1: iOS 17 or later
  • BlackBerry Dynamics SDK for iOS 13.0: iOS 16 or later

Android requirements

  • Java 17
  • BlackBerry Dynamics SDK for Android 13.2: Android OS 12 or later, API 31 or later
  • BlackBerry Dynamics SDK for Android 13.0: Android OS 11 or later, API 30 or later

Features

Feature

Description

Integration with BlackBerry Dynamics

Integration of the BlackBerry Dynamics SDK for iOS and Android into the React Native application is supported by the addition of the BlackBerry-Dynamics-for-React-Native-Base module. You can also integrate a locally downloaded version of BlackBerry Dynamics SDK for iOS into your BlackBerry Dynamics React Native app.

Secure connectivity

  • On iOS, XMLHttpRequest, fetch, and WebSocket are secured by the BlackBerry Dynamics runtime when you add the BlackBerry-Dynamics-for-React-Native-Base module.
  • On Android, XMLHttpRequest, fetch, and WebSocket are secured by the BlackBerry-Dynamics-for-React-Native-Networking module.
  • <WebView /> is secured in scope of the BlackBerry-Dynamics-for-React-Native-WebView UI component.

Secure storage

  • AsyncStorage is secured in the BlackBerry-Dynamics-for-React-Native-Async-Storage module.
  • SQLite is secured in the BlackBerry-Dynamics-for-React-Native-SQLite-Storage module.

Data leakage prevention (DLP) for iOS

The <Text /> component, <TextInput /> component, and Clipboard API are secured by integrating BlackBerry Dynamics.

Data leakage prevention (DLP) for Android

After you add the base module, use the following command to secure <Text /> and <TextInput /> components; this should be the last command you run before you build the app (using yarn to add or remove a package afterwards will override the changes made by this command):

yarn integrate-dlp-android

After you run the command, you receive a prompt to confirm the requirement to build the React Native library for Android from source instead of the default way. Confirm with yes to continue and integrate DLP. Note that rebuilding from source may increase the build time to approximately 20 minutes, and requires 25 to 30 GB of free space on the system.

Previously, the <Text /> and <TextInput /> components were secured using the BlackBerry-Dynamics-for-React-Native-Text and BlackBerry-Dynamics-for-React-Native-TextInput UI components. These UI components were removed in BlackBerry Dynamics SDK for React Native version 14.0.

The BlackBerry-Dynamics-for-React-Native-Clipboard module secures the Clipboard API.

Inter-Container Communication (ICC)

ICC (also known as AppKinetics) provides service discovery, service consumption, and service providing capabilities for BlackBerry Dynamics React Native apps and allows secure communication with other BlackBerry Dynamics apps. To implement some ICC capabilities in BlackBerry Dynamics React Native apps, use the BlackBerry-Dynamics-for-React-Native-AppKinetics module.

Support for Yarn package manager

  • To add a BlackBerry Dynamics React Native module, run following command: $ yarn add <path_to_module>
  • To remove a BlackBerry Dynamics React Native module, run following command: $ yarn remove <path_to_module>

For more information, see the readme file for each module.

Importing a prepopulated SQLite database

You can use any of the methods detailed here to import a prepopulated SQLite database: Importing a prepopulated database. The third method is supported for Android only.

Integration of the BlackBerry Dynamics Launcher

As of SDK version 13.0, the BlackBerry Dynamics Launcher is integrated automatically with the BlackBerry Dynamics SDK for React Native and does not need to be integrated separately. When you add the BlackBerry-Dynamics-for-React-Native-Base module, the BlackBerry Dynamics Launcher is integrated automatically and shown in apps by default.

You can use the BlackBerry-Dynamics-for-React-Native-Launcher module to hide or show the BlackBerry Dynamics Launcher:
  • For iOS, add the following property in <app>/ios/<app-name>/Info.plist:
    • Hide the Launcher: GDDisableAutomaticLauncherManagement = YES
    • Show the Launcher: GDDisableAutomaticLauncherManagement = NO
  • For Android, add the following property in <app>/android/app/src/main/assets/com.blackberry.dynamics.settings.json:
    • Hide the Launcher: "AutomaticLauncherManagement": "false"
    • Show the Launcher: "AutomaticLauncherManagement": "true"

As of the BlackBerry Dynamics SDK for React Native 13.0, the BlackBerry-Dynamics-for-React-Native-Launcher module should be used only with BlackBerry Dynamics SDK for Android 13.0 or later and the BlackBerry Dynamics SDK for iOS 13.0 or later.

Package contents

Feature

Description

Modules

  • BlackBerry-Dynamics-for-React-Native-Base automatically integrates the BlackBerry Dynamics SDK for iOS and Android into the React Native application.
  • BlackBerry-Dynamics-for-React-Native-Networking secures XMLHttpRequest and fetch APIs on Android. For more information, see React Native: Networking.
  • BlackBerry-Dynamics-for-React-Native-SQLite-Storage secures SQLite database usage, based on the react-native-sqlite-storage third-party module.
  • BlackBerry-Dynamics-for-React-Native-Async-Storage secures built-in AsyncStorage.
  • BlackBerry-Dynamics-for-React-Native-Clipboard secures the built-in Clipboard API.
  • BlackBerry-Dynamics-for-React-Native-AppKinetics provides the ability to use BlackBerry Dynamics app-based services within a BlackBerry Dynamics React Native app to securely communicate with other BlackBerry Dynamics apps in a process called Inter-Container Communication (ICC) or AppKinetics; also provides service discovery, service consumption, and service providing capabilities.
  • BlackBerry-Dynamics-for-React-Native-FileSystem secures the API for the react-native-fs module; the JavaScript API of this module is the same, but files and directories are now stored and managed within the BlackBerry Dynamics secure container.
  • BlackBerry-Dynamics-for-React-Native-Launcher allows you to programmatically hide or show the BlackBerry Dynamics Launcher in your BlackBerry Dynamics React Native apps. The BlackBerry Dynamics Launcher is integrated automatically and displayed by default when you add the BlackBerry-Dynamics-for-React-Native-Base module.
  • BlackBerry-Dynamics-for-React-Native-Application allows you to access information that is globally available to any BlackBerry Dynamics app.
  • BlackBerry-Dynamics-for-React-Native-Camera secures the API for react-native-vision-camera. The JavaScript API of this React Native module is the same, but captured media files (photos, recorded videos) are now stored in the BlackBerry Dynamics secure container.

UI components

BlackBerry-Dynamics-for-React-Native-WebView secures the built-in <WebView /> UI component to securely load public and enterprise resources within a WebView.

Sample apps

  • BasicNetworking provides examples of using fetch and XMLHttpRequest in different scenarios. This app covers different HTTP request types (GET, POST, PUT, DELETE, and so on), authentication types (basic auth, Digest, NTLM), and includes the ability to send different data types to the server and receive responses for different data types.
  • ClipboardTestApp demonstrates how to use the Clipboard API for data leakage prevention (DLP). It is possible to change the DLP policy on UEM and see how it affects the clipboard within the app. If DLP is enabled, clipboard data cannot be copied from a BlackBerry Dynamics app to a non-BlackBerry Dynamics app, and vice-versa.
  • DLP demonstrates how to use the <Text /> and <TextInput /> UI components together with the UEM DLP policy option. If DLP is on, it is not possible to perform cut-copy-paste operations to transfer data from BlackBerry Dynamics to non-BlackBerry Dynamics applications, and vice-versa.
  • SQLite demonstrates how to use a secure SQLite DB instance in a React Native app.
  • UnitTest runs Jasmine unit tests for fetch, XMLHttpRequest, Clipboard, AsyncStorage, SQLite, and AppKinetics in a React Native application.
  • WebViewBrowser demonstrates how to use the <WebView /> component in a React Native application.
  • FileSystem demonstrates how to use a secure FileSystem instance in a React Native app, how to manage files and directories, and how to upload and download files.
  • WebSocketClient and WebSocketServer demonstrate how to establish a connection to a WebSocket server using "ws://" or "wss://" protocols, how to send or receive text or binary data over a WebSocket connection, and how to close a WebSocket connection.
  • AppKinetics demonstrates how to use AppKinetics, or secure Inter-Container Communication (ICC), including sending and receiving files using ICC and creating secure email with BlackBerry Work or the native email client (if permitted).
  • Policy demonstrates how to retrieve a collection of app-specific configuration and policy settings. The retrieval of these settings happens during the method call or whenever settings are changed.
  • Camera demonstrates the use of the BlackBerry-Dynamics-for-React-Native-Camera module to store photos and recorded videos in the BlackBerry Dynamics secure container, and demonstrates how to send media files to other BlackBerry Dynamics apps using Inter-Container Communication.

Known issues

Image content may not be visible on the iOS clipboard sample app. (GD-63121)

Flipper cannot be used with the BlackBerry Dynamics SDK for React Native in the debug configuration because it disables some BlackBerry Dynamics secure networking functionality. Flipper is disabled by default on iOS and Android. If your BlackBerry Dynamics SDK for React Native app does not use the secure connectivity feature (BlackBerry-Dynamics-for-React-Native-Networking module), you can enable Flipper by uncommenting the following:
  • On iOS: Uncomment the use_flipper!() line in Podfile.
  • On Android: Uncomment the initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); line in MainApplication.java for React Native versions less than 71, or uncomment the ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); line in MainApplication.java for React Native versions 71 and later.

When both default and secure SQLite libraries are linked to an iOS project, it can cause conflicts and unpredictable behavior.

Workaround: Remove the sqlite3 dependency in */node_modules/reactnative- webrtc/react-native-webrtc.podspec, and then run pod install again.