This document provides release notes for significant updates to Iterable's React Native SDK.
TIP
For more granular release notes, read the Iterable React Native SDK releases page on GitHub.
In this article
1.3.16
August 31, 2023
Version 1.3.16 of Iterable's React Native SDK supports Iterable's European Data Center.
For more info, see Installing Iterable's React Native SDK.
1.3.9
November 8, 2022
Version 1.3.9 of Iterable's React Native SDK makes it possible for iOS apps to store in-app messages in memory, rather than in an unencrypted local file. (Version 1.3.7 added this same support for Android.)
To store in-app messages in memory on both iOS and Android, set
useInMemoryStorageForInApps
to true
:
const config = new IterableConfig(); // ... other configuration options ... config.useInMemoryStorageForInApps = true; Iterable.initialize('<YOUR_API_KEY>', config);
When users upgrade to a version of your iOS or Android app that uses this version of the SDK (or higher), and they've enabled in-app memory storage, the local file used for in-app message storage (if it already exists) is deleted. However, no data is lost.
Deprecations
This release deprecates androidSdkUseInMemoryStorageForInApps
, which was
introduced in version 1.3.7, and replaces it with useInMemoryStorageForInApps
.
However, for now:
Android apps store in-app messages in memory if
useInMemoryStorageForInApps
istrue
,androidSdkUseInMemoryStorageForInApps
istrue
, or if both aretrue
.iOS apps store in-app messages in memory if
useInMemoryStorageForInApps
istrue
.androidSdkUseInMemoryStorageForInApps
does not affect iOS apps.
When you can, please update your apps to use useInMemoryStorageForInApps
instead of androidSdkUseInMemoryStorageForInApps
.
1.3.7
October 31, 2022
Version 1.3.7 of Iterable's React Native SDK, as a privacy enhancement, includes support for encrypting some data stored at rest.
iOS updates
In iOS apps, Iterable's React Native SDK now encrypts the following fields when storing them at rest:
-
email
— The user's email address. -
userId
— The user's ID. -
authToken
— The JWT used to authenticate the user with Iterable's API. -
lastPushPayload
— The JSON payload that came along with the last push notification received by the app.
(Note that, in iOS apps, Iterable's React Native SDK does not store in-app messages at rest—before or after this update.)
NOTE
Iterable's React Native SDK does, in fact, store in-app messages in an unencrypted local file—for Android and iOS apps. However, version 1.3.9 provides an option to store them in memory, instead.
When a user upgrades to a version of your app that uses this version of the SDK (or higher), the fields shown above are encrypted. No data that's already stored is lost.
For more information about this encryption in iOS, examine the source code for Iterable's iOS SDK (upon which the React Native SDK relies):
Android updates
For Android, this release includes support for encrypting some data at rest, and an option to store in-app messages in memory.
Encrypted data
In Android apps with minSdkVersion
23 or higher (Android 6.0)
Iterable's React Native SDK now encrypts the following fields when storing
them at rest:
-
email
— The user's email address. -
userId
— The user's ID. -
authToken
— The JWT used to authenticate the user with Iterable's API.
(Note that, in Android apps, Iterable's React Native SDK does not store the last push payload at rest—before or after this update.)
For more information about this encryption in Android, examine the source code
for Iterable's Android SDK (upon which the React Native SDK relies):
IterableKeychain
.
Storing in-app messages in memory
This release also allows you to have your Android apps (regardless of minSdkVersion
)
store in-app messages in memory, rather than in an unencrypted local file.
However, an unencrypted local file is still the default option.
To store in-app messages in memory, on IterableConfig
, set
androidSdkUseInMemoryStorageForInApps
to true
(defaults to false
):
const config = new IterableConfig(); // ... other configuration options ... config.androidSdkUseInMemoryStorageForInApps = true; Iterable.initialize('<YOUR_API_KEY>', config);
When users upgrade to a version of your Android app that uses this version of
the SDK (or higher), and you've set this configuration option to true
, the
local file used for in-app message storage (if it already exists) is deleted
However, no data is lost.
Android upgrade instructions
If your app targets API level 23 or higher, this is a standard SDK upgrade, with no special instructions.
If your app targets an API level less than 23, you'll need to make the following changes to your project (which allow your app to build, even though it won't encrypt data):
- In
AndroidManifest.xml
, add<uses-sdk tools:overrideLibrary="androidx.security" />
- In your app's
app/build.gradle
:
- Add
multiDexEnabled true
to thedefault
object, underandroid
. - Add
implementation androidx.multidex:multidex:2.0.1
to thedependencies
.
Objective-C compatibility headers for React Native 0.68+
To help solve build errors that can arise when using Iterable's SDK with React Native 0.68+, which uses Objective-C++, we've created some Objective-C compatibility headers that you can import into your project. For details, read Installing Iterable's React Native SDK — Step 3.3: Import the SDK.
1.3.3
July 12, 2022
This release makes offline events processing available to all Iterable customers who'd like to use it — just ask your customer success manager to enable it for your account. Offline events processing saves a local copy of events triggered in your app while the device is offline (up to 1000 events). When a connection is re-established and your app is in the foreground, the events will be sent to Iterable. For more information, read Offline events processing.
1.3.0
May 3, 2022
Version 1.3.0
of
Iterable's React Native SDK provides a mobile inbox
implementation. To learn more, read Using a Mobile Inbox with Iterable's React Native SDK.
1.2.0
March 10, 2021
Version 1.2.0
of
Iterable's React Native SDK:
-
Now relies on:
- Version 3.4.3 of Iterable’s Android SDK, which includes updates to handle Android 12's notification trampoline restrictions (this fix was originally added in version 3.4.1 of Iterable's Android SDK).
- Version 6.4.1 of Iterable's iOS SDK.
-
Adds an
allowedProtocols
field to theIterableConfig
class.Use this array to declare the specific URL protocols that the SDK can expect to see on incoming links (and that it should therefore handle). Doing this will prevent the SDK from opening links that use unexpected URL protocols.
For example, to allow the SDK to handle
http
,tel
, andcustom
links, set theallowedProtocols
field on yourIterableConfig
object to an array that contains these values:JavaScript
const config = new IterableConfig() config.allowedProtocols = ["http", "tel", "custom"]
IMPORTANT
Iterable's React Native SDK handles
https
,action
,itbl
, anditerable
links, regardless of the contents of this array. However, you must explicitly declare any other types of URL protocols you'd like the SDK to handle (otherwise, the SDK won't open them in the web browser or as deep links).
1.1.3
October 27, 2021
Version 1.1.3
of Iterable's React Native SDK includes support for deep links on Android and
iOS, using React Native's Linking
API.
To learn how to set this up, read Deep Links and Custom Actions with Iterable's React Native SDK.
IMPORTANT
- If you've already set up support for deep links in an iOS app that uses a prior version of Iterable's React Native SDK, that implementation should continue to work (even if you use the instructions linked above for your Android app). However, we recommend using this new method for deep links on both iOS and Android.
- When incorporating a new version of Iterable's React Native SDK into your app, always test before releasing (including deep links), to make sure everying works as expected.
1.1.0
July 1, 2021
Version 1.1.0
of Iterable's React Native SDK includes:
-
Offline events processing
This feature saves a local copy of events triggered in your app while the device is offline (up to 1000 events). When a connection is re-established and your app is in the foreground, the events will be sent to Iterable.
Offline events processing is off by default, and we're rolling it out on a customer-by-customer basis. After you start using this version of the SDK, we'll send you a message before we enable the feature on your account (unfortunately, we can't give you an exact timeline for when this will happen). If you have any questions, talk to your Iterable customer success manager.
To use this feature, you must follow the upgrade instructions.
NOTE
As of July 12, 2022, offline events processing is available to all Iterable customers who would like to use it. To get started, you'll need to:
-
Make sure your mobile app is built with one of the following versions of our SDKs:
Have your customer success manager to enable it for your account (unless you've already been using a beta version of this feature, in which case it will continue to work).
For more information, read Offline events processing
-
-
New properties on the
IterableCommerceItem
classThe
IterableCommerceItem
class (which you can pass to thetrackPurchase
method on theIterable
class) now includes additional properties (all optional):-
sku
(string) - The item's SKU -
description
(string) - A description of the item -
url
(string) - A URL associated with the item -
imageUrl
(string) - A URL that points to an image of the item -
categories
(string) - Categories to associate with the item
-
Upgrade instructions for version 1.1.0
To use this version of the SDK, you'll need to update your native Android
application's Application
class:
-
Add this import:
import com.iterable.iterableapi.IterableApi;
-
At the end of the
onCreate
method, add this line of code:IterableApi.setContext(this);
1.1.0 - Beta
February 12, 2021
Version 1.1.0-beta1
of Iterable's React Native SDK includes:
The features and updates introduced in the 1.0.x releases (for example, JWT-enabled API keys and in-app animations).
-
Beta support for offline events processing (capturing engagement events when a device is offline and sending them to Iterable when a network connection is reestablished) and in-app message prioritization (specifying a priority for an in-app message campaign, to determine its display order for your users). To try these beta features, have your Iterable customer success manager enable them for your project.
NOTE
As of July 12, 2022, offline events processing is available to all Iterable customers who would like to use it. To get started, you'll need to:
-
Make sure your mobile app is built with one of the following versions of our SDKs:
Have your customer success manager to enable it for your account (unless you've already been using a beta version of this feature, in which case it will continue to work).
For more information, read Offline events processing
-
1.0.12
July 14, 2020
This release introduces Iterable's React Native SDK, which can be used to integrate Iterable with your React Native-based iOS and Android apps.
For more information about Iterable's React Native SDK, take a look at:
- The SDK's GitHub repository.
- The support documentation for Iterable's React Native SDK.
If you have questions about Iterable's React Native SDK, contact your Iterable customer success manager.
The following schedule lists the deprecation dates, support windows, and end-of-life dates for various versions of Iterable's React Native SDK. For details about how Iterable supports mobile SDKs, see the SDK Support Policy.
NOTE
Iterable has not yet deprecated any versions of its React Native SDK.
- Iterable's SDK Support Policy
- Iterable's Beta SDK Disclaimer