Plugin
- Added support for React-Native New Architecture Turbo Module. This requires React-Native 0.71+ when running with new architecture enabled, as Codegen and Turbo Module are fully supported. Batch is still backwards compatible with legacy Native Modules.
Push
- Removed deprecated API
registerForRemoteNotifications
. Please userequestNotificationAuthorization
to request permission when needed, andrequestToken
at each app launch.
Expo
- Fixed an issue where Batch could miss the first activity start.
Expo
- Fixed an issue on iOS where the
RNBatch
import was not added during the Expo pre-build.
This is a major release, please see our migration guide for more info on how to update your current Batch implementation.
Plugin
- Updated Batch to 2.0. For more information see the ios and android changelog .
- Batch requires iOS 13.0 or higher.
- Batch requires a
minSdk
level of 21 or higher.
iOS
- The Batch React-Native plugin now automatically registers its own
UNUserNotificationCenterDelegate
and forwards it to the previous one if it exists. This means you no longer need to add[BatchUNUserNotificationCenterDelegate registerAsDelegate]
in yourAppDelegate
, please delete it. It can be disabled by callingBatchBridgeNotificationCenterDelegate.automaticallyRegister = false
before[RNBatch start]
.
Core
- Added method
isOptedOut
to checks whether Batch has been opted out from or not. - Added method
updateAutomaticDataCollection
to fine-tune the data you authorize to be tracked by Batch.
User
- Removed method
trackTransaction
with no equivalent. - Removed method
BatchUser.editor
and the related classBatchUserEditor
, you should now useBatchProfile.editor
which return an instance ofBatchProfileAttributeEditor
. - Added method
clearInstallationData
which allows you to remove the installation data without modifying the current profile.
Event
This version introduced two new types of attribute that can be attached to an event : Array and Object.
- Removed
trackEvent
APIs from the user module. You should now useBatchProfile.trackEvent
. BatchEventData
has been renamed intoBatchEventAttributes
.- Removed
addTag
API fromBatchEventData
You should now use the$tags
key withput
method. - Removed parameter
label
fromtrackEvent
API. You should now use the$label
key inBatchEventAttributes
with theput(string, string)
method. - Added support for values of type: Array and Object to the
put
method.
Profile
Introduced BatchProfile
, a new module that enables interacting with profiles. Its functionality replaces most of BatchUser used to do.
- Added
identify
API as replacement ofBatchUser.editor().setIdentifier
. - Added
editor
method to get a new instance of aBatchProfileAttributeEditor
as replacement ofBatchUserEditor
. - Added
trackEvent
API as replacement of theBatchUser.trackEvent
methods. - Added
trackLocation
API as replacement of theBatchUser.trackLocation
method.
Expo
- Added configuration field
enableDefaultOptOut
to control whether Batch is opted out from by default. (default: false) - Added configuration fields
enableProfileCustomIDMigration
andenableProfileCustomDataMigration
to control whether Batch should trigger the profile migrations (default: true).
Plugin
- Updated Batch 1.21.
- Batch requires iOS 12.0 or higher.
- Batch now compiles with and targets SDK 34 (Android 14).
- Added support for react-native 0.73+
- Added support for Expo 50.
- Fixed an issue on iOS where
refreshToken
was not running on main thread.
User
- Removed automatic collection of the advertising id. You need to collect it from your side and pass it to Batch via the added
BatchUser.editor().setAttributionIdentifier(id)
method. - Added
setEmail
method toBatchUserEditor
. This requires to have a user identifier registered or to call thesetIdentifier
method on the editor instance beforehand. - Added
setEmailMarketingSubscriptionState
method toBatchUserEditor
.
Inbox
- Added
hasLandingMessage
property toIInboxNotification
. - Added
displayNotificationLandingMessage
method toBatchInboxFetcher
.
Plugin
- Fixed an issue on Android where
open
push message events queued on cold start were sent before we could register a listener.
Plugin
- Fixed an issue where listening for
open
push message events wasn't working on cold start.
Plugin
- Plugin now compiles with and targets SDK 33 (Android 13).
Push
- Added a new API:
BatchPush.requestNotificationAuthorization()
. This allows you to request for the new notification permission introduced in Android 13. See the documentation for more info.
Plugin
- Fixed autolinking on react-native 0.69+ and Expo 46
Plugin
- Updated Batch 1.19. Batch requires Xcode 13.3.1 and iOS 10.0 or higher.
- Updated how Batch is imported to support React-Native v0.68 wich now uses Objective-C++.
- Added support for Expo 45
User
- Added getters for
identifier
,language
,region
,attributes
andtagCollections
inBatchUser
. - Added a fix where you couldn't use
setLanguage
orsetRegion
with a nil value on iOS.
- Add support for expo 44
- Add ios expo plugin
- Add check for active catalyst instance on react context
- Add support for Expo plugins for Android (no changes for regular usage)
Batch SDK version
- Migrated to Batch SDK v1.18
- For iOS:
- [BREAKING] Make sure to update your Podfile Batch SDK version
- [BREAKING] Batch requires Xcode 13 or higher
- For iOS:
Events
- Added URL type in event data with
putURL
. - Added Date type in event data with
putDate
.
Attributes
- Added URL type in custom attributes with
setURLAttribute
.
Messaging
- Added
BatchMessaging.addListener
to listen for messaging notifications events. See documentation.
Push
-
Added
BatchPush.addListener
to listen for push notifications events. See documentation to see platform differences. -
iOS: Deprecated
BatchPush.registerForRemoteNotifications
by splitting it into two methods:BatchPush.refreshToken
, which should be called on every app start after opt-in if you're opted out by default.BatchPush.requestNotificationAuthorization
, which should be called whenever you want to ask the user the permission to display notifications.
-
iOS: Added
requestProvisionalNotificationAuthorization
to request a provisional authorization on iOS 11 and higher.
Bug Fixes
- Fix
isUnread
property of a Batch inbox notification : it was previously always undefined, now it is correctly set. - Fix crash in
trackTransaction
when it was called without data as second parameter.
Batch SDK version
- Migrated to Batch SDK v1.17
- For iOS:
- [BREAKING] Make sure to update your Podfile Batch SDK version
- [BREAKING] Batch requires Xcode 12 and iOS 10.0 or higher
- [BREAKING] Make sure to follow again the Extra steps on iOS, a new section has been added about the
BatchUNUserNotificationCenterDelegate
(if you haven't implemented a delegate yet)
- For Android:
- [BREAKING] Make sure to have up-to-date android build tools (see Android blog)
- For iOS:
- [Android] You can now update the Batch SDK manually with the rootProject ext property
batchSdkVersion
. On iOS this was already possible (you set the version in your Podfile)
Mobile landings / In-App messages
- Added
BatchMessaging.setFontOverride()
so that you can change the font of messaging views (eg. In-app campaigns landings) - Added
disableDoNotDisturbAndShowPendingMessage
for quicker setup and to minimize any race condition between disabling do not disturb and showing the pending message - Do not disturb (for mobile landings/in app messages) can now be enabled natively on Android and iOS. 99% of the time on a regular React Native app, you should enable it. See README) to see why and how to handle the new behavior (call
disableDoNotDisturbAndShowPendingMessage
when ready, or disable do not disturb manually).- [BREAKING]
Batch.start
is now useless so it has been removed. You must remove any call toBatch.start
in your javascript code. - [BREAKING] [iOS] the optional argument to
[RNBatch start]
native method is now useless so it has been removed. You must replace any[RNBatch start:false]
to[RNBatch start]
- [BREAKING]
DX improvements
- Chaining Batch User editor is now optional
- Added
Batch.showDebugView()
so that you can easily debug your Batch installation
Inbox
- [BREAKING] [Inbox] Rewrote inbox API to expose every native SDK Inbox methods such as
markNotificationAsRead
. You can now implement an infinite loading list of notifications with this API. (see migration examples)
Bug Fixes
- [Android] Fix resume count
- This removes an error in the logs when receiving a push while in background and potentially fixes issues related to the app going from background to foreground
- [BREAKING] In order to migrate, make sure to follow the new
README
section on configuring auto-linking
- Fixed a GDPR scenario case where the Batch iOS/Android SDK might not be started
- Added
BatchPush.getInitialURL
to workaround issues on iOS to get the deeplink associated to the notification that opened the app initially.Linking.getInitialURL
can be replaced byBatchPush.getInitialURL
on every platforms. - [iOS] [Inbox] Fixed a crash when a notification's source was unknown
- Exposed promises in critical methods such as
optIn
in order to prevent potential race conditions - [iOS]
showPendingMessage
will now work correctly - [Android] Fixed potential crash in
showPendingMessage
when the activity is not found
Documentation
- Added a guide in the doc for GDPR compliance
- [iOS] Added a guide in the doc for showing notifications on foreground