- Removes the usage of Objective-C modules when importing the Braze Swift SDK for improved compatibility with Objective-C++.
- When importing
BrazeKit
orBrazeLocation
, you must use the#import <Module/Module-Swift.h>
syntax:@import BrazeKit;
→#import <BrazeKit/BrazeKit-Swift.h>
@import BrazeLocation;
→#import <BrazeLocation/BrazeLocation-Swift.h>
- When importing
- Fixes compatibility issues with newer versions of React Native introduced in 2.0.0.
- Fixes an issue where callbacks were not being executed for some user attribute methods.
- The Braze React Native SDK npm package has moved from
react-native-appboy-sdk
to@braze/react-native-sdk
. - Renames
AppboyReactBridge
andAppboyReactUtils
toBrazeReactBridge
andBrazeReactUtils
, respectively. - Updates the native iOS bridge to use the new Swift SDK version 5.9.1.
- During migration, update your project with the following changes in your iOS integration:
- To initialize Braze, follow these integration steps to create a
configuration
object. Then, add this code to complete the setup:let braze = BrazePlugin.initBraze(configuration)
- To continue using
SDWebImage
as a dependency, add this line to your project's/ios/Podfile
:pod 'SDWebImage', :modular_headers => true
- Then, follow these setup instructions.
- For sample code to help with the migration, reference our sample app and
AppDelegate.m
file. - If you are integrating this SDK with an application that uses only Objective-C, create an empty Swift file to ensure that all the relevant Swift runtime libraries are linked. Reference this file from our sample app.
- To initialize Braze, follow these integration steps to create a
- The following methods for News Feed are now no-ops on iOS:
Braze.launchNewsFeed()
Braze.getCardCountForCategories()
Braze.getUnreadCardCountForCategories()
- Updates the native Android bridge to Braze Android SDK 24.2.0.
- Adds the following APIs to more easily interface with the News Feed product. Thanks @swissmanu for your contribution!
Braze.getNewsFeedCards()
Braze.logNewsFeedCardClicked()
Braze.logNewsFeedCardImpression()
- Removed
setFacebookData()
. - Removed
setTwitterData()
.
- Updated the native Android bridge to Braze Android SDK 23.3.0.
- Exposes
isControl
field forContentCard
. - Removed
kotlinVersion
gradle template variable. To override the Kotlin version used, please use a Gradle dependencyresolutionStrategy
.
- Updated the native Android bridge to Braze Android SDK 23.2.1.
- Updated the native iOS bridge to Braze iOS SDK 4.5.1.
- Updated the
React
podspec dependency toReact-Core
.
- Renamed the
kotlin_version
gradle template variable tokotlinVersion
. - Updated the native Android bridge to Braze Android SDK 23.2.0.
- Fixed an issue that caused a NativeEventEmitter warning message to appear.
- Fixed an issue introduced in 1.38.0 where
setEmail
did not work as expected on Android.
- Updated the native Android bridge to Braze Android SDK 23.0.1.
- Updated the native iOS bridge to Braze iOS SDK 4.5.0.
- The Braze React Native Android SDK now requires Kotlin directly for compilation. An example is included below:
buildscript { ext.kotlin_version = '1.6.0' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
- Introduced
Braze.Events.PUSH_NOTIFICATION_EVENT
which can be used to listen for Braze Push Notification events on Android. See example below:Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, function(data) { console.log(`Push Notification event of type ${data.push_event_type} seen. Title ${data.title}\n and deeplink ${data.deeplink}`); console.log(JSON.stringify(data, undefined, 2)); });
- Added
Braze.requestPushPermission()
to request a permissions prompt for push notifications.
- The Braze React Native SDK now exports its default object as an ES Module. If you currently import the SDK using
require()
, you will need to now import it as a standard ES Module (e.g.import Braze from "react-native-appboy-sdk"
).
- Introduced
Braze.subscribeToInAppMessage()
which publishes an event to the Javascript layer when an in-app message is triggered and allows you to choose whether or not to use the default Braze UI to display in-app messages.
- Updated the native Android bridge to Braze Android SDK 21.0.0.
- Updated the native iOS bridge to Braze iOS SDK 4.4.4.
- Removed
setAvatarImageUrl()
. - Removed
logContentCardsDisplayed
. This method was not part of the recommended Content Cards integration and can be safely removed.
- Fixed an issue where
setMetadata
did not have a method implementation for Android.
- Updated the native iOS bridge to Braze iOS SDK 4.4.2.
- Drops support for iOS 9 and 10.
- Fixed an issue where
getInitialUrl
would not resolve when there is no initial URL.
- Updated the native Android bridge to Braze Android SDK 18.0.1.
- Fixed an issue with Content Card types. Thanks @jtparret!
- Improved logging around
getInitialUrl
.
- Fixed an issue introduced in 1.33.0 that caused a build error on iOS.
- Updated the native Android bridge to Braze Android SDK 16.0.0.
- Updated the native iOS bridge to Braze iOS SDK 4.3.4.
- Added
ReactAppboy.addToSubscriptionGroup()
andReactAppboy.removeFromSubscriptionGroup()
to manage SMS/Email Subscription Groups. - Custom events and purchases now support nested properties. In addition to integers, floats, booleans, dates, or strings, a JSON object can be provided containing dictionaries of arrays or nested dictionaries. All properties combined can be up to 50 KB in total length.
- Updated the native Android bridge to Braze Android SDK 15.0.0.
- Updated the native iOS bridge to Braze iOS SDK 4.3.2.
- Updated the native iOS bridge to Braze iOS SDK 4.3.1.
- Added support for new SDK Authentication feature to the Javascript layer. See
setSdkAuthenticationSignature
on theAppboy
interface, as well as the optionalsignature
parameter onReactAppboy.changeUser
.
- Updated the native iOS bridge to Braze iOS SDK 4.3.0, which fixes a crashing issue with Content Cards when using the default UI.
- Updated the native Android bridge to Braze Android SDK 14.0.1.
- This release contains a known issue with the Content Cards default UI on iOS, where showing a "Classic" type card with an image causes a crash. If you are using the default Content Cards UI, do not upgrade to this version.
- Fixed issue introduced in 1.29.0 where calling
ReactAppboy.changeUser
would cause an error on Android.
- This release contains a known issue with the Content Cards default UI on iOS, where showing a "Classic" type card with an image causes a crash. If you are using the default Content Cards UI, do not upgrade to this version.
- Updated the native Android bridge to Braze Android SDK 14.0.0.
- Updated the native iOS bridge to Braze iOS SDK 4.2.0.
- Updated the native iOS bridge to Braze iOS SDK 4.0.2.
- Updated the native Android bridge to Braze Android SDK 13.1.2, which contains support for Android 12.
- Added support for
ReactAppboy.setGoogleAdvertisingId()
to set the Google Advertising ID and associated ad-tracking enabled field for Android devices. This is a no-op on iOS.
- Fixed an issue where calling
getInstallTrackingId()
while the SDK was disabled would cause a crash on iOS.
- Updated the native iOS bridge to Braze iOS SDK 3.33.1.
- Updated the native Android bridge to Braze Android SDK 13.0.0.
- Added support for receiving iOS push action button deep links in
ReactAppboy.getInitialURL()
. If you are usingReactAppboy.getInitialURL()
and implement iOS push action button categories, add the following code to the beginning of youruserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
:[[AppboyReactUtils sharedInstance] populateInitialUrlForCategories:response.notification.request.content.userInfo];
- Updated the native iOS bridge to Braze iOS SDK 3.31.2.
- Updated the native Android bridge to Braze Android SDK 12.0.0.
- Updated the native iOS bridge to Braze iOS SDK 3.29.1, which adds improved support for in-app message display on iPhone 12 models.
- Updated the native Android bridge to Braze Android SDK 11.0.0.
- Updated the native iOS bridge to Braze iOS SDK 3.28.0.
- Updated the native Android bridge to Braze Android SDK 10.1.0. Please read the Braze Android SDK changelog for details.
- Updated the native iOS bridge to Braze iOS SDK 3.27.0. This release adds support for iOS 14 and requires XCode 12. Please read the Braze iOS SDK changelog for details.
- Updated the native Android bridge to Braze Android SDK 8.1.0, which contains support for Android 11.
- Updated the native iOS bridge to Braze iOS SDK 3.26.1, which contains preliminary support for iOS 14.
- Updated the native Android bridge to Braze Android SDK 8.0.1.
- Updated the native iOS bridge to Braze iOS SDK 3.26.0.
- Added support for working with in-app messages in the JavaScript layer. In-App Messages can be instantiated using the
BrazeInAppMessage
class. The resulting object can be passed into the analytics methods:logInAppMessageClicked
,logInAppMessageImpression
, andlogInAppMessageButtonClicked
(along with the button index). See the README for additional implementation details or theAppboyProject
sample app for an integration example.
- Improved Typescript definitions for
setCustomUserAttribute
andincrementCustomUserAttribute
.- Thanks @janczizikow!
- Fixed incorrect TypeScript definition for
ContentCard
.- Thanks @Hannes-Sandahl-Mpya!
- Updated the native Android bridge to Braze Android SDK 7.0.0.
- Added
ReactAppboy.requestGeofences()
to request a Braze Geofences update for a manually provided GPS coordinate. Automatic Braze Geofence requests must be disabled to properly use this method.
- Updated the native Android bridge to Braze Android SDK 5.0.0.
- Updated the native iOS bridge to Braze iOS SDK 3.21.3.
- Updated the native Android bridge to Braze Android SDK 3.8.0.
- Fixed an issue where
ReactContext.getJSModule()
could be called before the native module was initialized.- Thanks @tszajna0!
- Updated the native iOS bridge to Braze iOS SDK 3.20.4.
- Removed a support library reference in
AppboyReactBridge.java
that caused Androidx compatibility issues.
- Added
SDWebImage
andHeaders
pod directories to theAppboyReactBridge
project's Header Search Paths. Thanks @tomauty and @mlazari for your contributions! See braze-inc#70 and braze-inc#69.
- Updated the native Android bridge to Braze Android SDK 3.7.1.
Important: This patch updates the Braze iOS SDK Dependency from 3.20.1 to 3.20.2, which contains important bugfixes. Integrators should upgrade to this patch version. Please see the Braze iOS SDK Changelog for more information.
- Updated the native iOS bridge to Braze iOS SDK 3.20.2.
Important: This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.
- Updated the native iOS bridge to Braze iOS SDK 3.20.1.
Important: This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.
- Updated the native iOS bridge to Braze iOS SDK 3.20.0.
- Important: Braze iOS SDK 3.20.0 contains updated push token registration methods. We recommend upgrading to these methods as soon as possible to ensure a smooth transition as devices upgrade to iOS 13. In
application:didRegisterForRemoteNotificationsWithDeviceToken:
, replace
[[Appboy sharedInstance] registerPushToken:
[NSString stringWithFormat:@"%@", deviceToken]];
with
[[Appboy sharedInstance] registerDeviceToken:deviceToken];
ReactAppboy.registerPushToken()
was renamed toReactAppboy.registerAndroidPushToken()
and is now a no-op on iOS. On iOS, push tokens must now be registered through native methods.
Important This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.
- Updated the native iOS bridge to Braze iOS SDK 3.19.0.
- Updated the native Android bridge to Braze Android SDK 3.7.0.
- Note: This Braze React SDK release updates to Braze Android SDK and Braze iOS SDK dependencies which no longer enable automatic Braze location collection by default. Please consult their respective changelogs for information on how to continue to enable automatic Braze location collection, as well as further information on breaking changes.
- Removes the Feedback feature.
submitFeedback()
andlaunchFeedback()
have been removed from theAppboy
interface.
- Added the ability to more easily create custom UIs for Content Cards from within the React Native layer by providing access to card data and analytics methods in Javascript.
- Added
ReactAppboy.getContentCards
for getting locally cached content cards data.- To request a Content Cards update, use
ReactAppboy.requestContentCardsRefresh()
.
- To request a Content Cards update, use
- Added
ReactAppboy.logContentCardsDisplayed
for manually logging an impression for the content card feed. - Added
ReactAppboy.logContentCardClicked
for manually logging a click to Braze for a particular card. - Added
ReactAppboy.logContentCardImpression
for manually logging an impression to Braze for a particular card. - Added
ReactAppboy.logContentCardDismissed
for manually logging a dismissal to Braze for a particular card. - Added
ReactAppboy.addListener
for subscribing toReactAppboy.Events.CONTENT_CARDS_UPDATED
events.- After a successful update, use
getContentCards
to retrieve updated cards. -
ReactAppboy.addListener(ReactAppboy.Events.CONTENT_CARDS_UPDATED, async function() { let cards = await ReactAppboy.getContentCards(); console.log('Content Cards Updated.', cards); })
- After a successful update, use
- See braze-inc#58. Thanks @alexmbp!
- Added
- Updated the native iOS bridge to Braze iOS SDK 3.17.0.
- Removed the
NewsFeedLaunchOptions
enum. Using these arguments withlaunchNewsFeed()
had been a no-op since version 1.7.0.
- Updated the native Android bridge to Braze Android SDK 3.5.0.
- Fixed an issue where logging custom events or purchases without event properties would cause crashes on Android, for example
logCustomEvent("event")
.
- Added additional TypeScript definitions.
- Updated the native iOS bridge to Braze iOS SDK 3.15.0.
- This release of the iOS SDK added support for SDWebImage version 5.0.
- Note that upgrading to SDWebImage 5.0 also removed the FLAnimatedImage transitive dependency.
- Updated the native Android bridge to Braze Android SDK 3.3.0.
- Added
ReactAppboy.launchContentCards()
for launching the content cards UI.
- Added Typescript definitions for the
Appboy
interface.- Thanks @ahanriat and @josin for your contributions! See braze-inc#57 and braze-inc#38.
- Note that certain less-used parts of the API were excluded. Please file an issue if you would like specific method(s) added.
- Updated the native Android bridge to Braze Android SDK 3.2.0.
- Added
AppboyFirebaseMessagingService
to directly use the Firebase messaging eventcom.google.firebase.MESSAGING_EVENT
. This is now the recommended way to integrate Firebase push with Braze. TheAppboyFcmReceiver
should be removed from yourAndroidManifest
and replaced with the following:<service android:name="com.appboy.AppboyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
- Also note that any
c2dm
related permissions should be removed from your manifest as Braze does not require any extra permissions forAppboyFirebaseMessagingService
to work correctly.
- Also note that any
- Added
- Updated the native iOS bridge to Braze iOS SDK 3.14.0.
- Dropped support for iOS 8.
- Added support for sending JavaScript
Date()
type custom event and purchase properties through theAppboy
interface.
- Updated the native Android bridge to Braze Android SDK 3.1.0.
- Added
addAlias(aliasName, aliasLabel)
to theAppboy
interface to allow aliasing users.- Thanks @alexmbp!
- Updated
build.gradle
to useproject.ext
config if available.
- Updated the native iOS bridge to Braze iOS SDK 3.11.0.
- Updated the native Android bridge to Braze Android SDK 3.0.1.
- Updated the Android wrapper to use
api
andimplementation
syntax in it'sbuild.gradle
instead ofcompile
. As part of this work, the Android Gradle plugin version was updated to3.2.1
.
- Added
setUserAttributionData()
to theAppboy
interface to allow setting the attribution data for the current user. - Added
getInstallTrackingId()
to theAppboy
interface to allow getting the install tracking id. This method is equivalent to callingAppboy.getInstallTrackingId()
on Android and returns the IDFV on iOS. - Added
setLanguage()
to theAppboy
interface to allow setting a language for the current user. - Added
hideCurrentInAppMessage()
to theAppboy
interface to allow hiding of the currently displayed in-app message.
- Fixed an issue where the Android wrapper would include an older version of React Native in test APK builds.
- Updated our sample projects to use React Native
0.56
.
- Updated the native iOS bridge to Braze iOS SDK 3.8.4.
- Updated the native Android bridge to Braze Android SDK 2.7.0.
- Important: Note that in Braze Android SDK 2.7.0,
AppboyGcmReceiver
was renamed toAppboyFcmReceiver
. This receiver is intended to be used for Firebase integrations. Please update theAppboyGcmReceiver
declaration in yourAndroidManifest.xml
to referenceAppboyFcmReceiver
and remove thecom.google.android.c2dm.intent.REGISTRATION
intent filter action.
- Important: Note that in Braze Android SDK 2.7.0,
- Updated the native iOS bridge to Braze iOS SDK 3.8.3.
- Added
setLocationCustomAttribute()
to theAppboy
interface to allow setting of custom location attributes.
- Added
requestLocationInitialization()
to theAppboy
interface. Calling this method is the equivalent of callingAppboyLocationService.requestInitialization()
on the native Braze Android SDK. The method is a no-op on iOS.
- Fixed an issue introduced in
1.7.0
where callinglaunchNewsFeed()
would cause crashes in the Android bridge.
- Updated the podspec to point to Braze iOS SDK version 3.5.1.
- Updated the native iOS bridge to Braze iOS SDK 3.5.1.
- Updated the native Android bridge to Appboy Android SDK 2.4.0.
- Added
Other
,Unknown
,Not Applicable
, andPrefer not to Say
options for user gender. - Updated the
AppboyProject
sample app to use FCM instead of GCM. - Added toasts to provide feedback for user actions in the
AppboyProject
sample app. - Implemented
requiresMainQueueSetup
inAppboyReactBridge.m
to prevent warnings in React Native 0.49+.- See braze-inc#39. Thanks @danieldecsi!
- Passing launch options into
launchNewsFeed()
is now a no-op.
- Updated the native iOS bridge to Braze iOS SDK 3.3.3.
- Updated the native Android bridge to Braze Android SDK 2.2.5.
- Added support for wiping all customer data created by the Braze SDK via
Appboy.wipeData()
.- Note that on iOS,
wipeData()
will disable the SDK for the remainder of the app run. For more information, see our iOS SDK's documentation fordisableSDK
.
- Note that on iOS,
- Added
Appboy.disableSDK()
to disable the Braze SDK immediately. - Added
Appboy.enableSDK()
to re-enable the SDK after a call toAppboy.disableSDK()
.- Note that on iOS,
enableSDK()
will not enable the SDK immediately. For more information, see our iOS SDK's documentation forrequestEnableSDKOnNextAppRun
.
- Note that on iOS,
- Removed
allowBackup
from the pluginAndroidManifest.xml
.- See braze-inc#34. Thanks @SMJ93!
- Fixed a race condition between SDK flavor reporting and sharedInstance initialization on iOS.
- Fixed a bug that caused opted-in subscription states to not be reflected on the user profile.
- Updated the native iOS bridge to Braze iOS SDK 3.0.0 or later.
- Updated the native Android bridge to Braze Android SDK 2.2.4.
- Changed success callbacks on
submitFeedback()
on Android to always returntrue
assubmitFeedback()
was changed to returnvoid
in the native SDK.
- Added support for apps that use use_frameworks in Podfile.
- See https://github.com/Appboy/appboy-react-sdk/commit/6db78a5bbeb31457f8a1dcf988a3265d8db9a437 and braze-inc#29. Thanks @jimmy-devine and @sljuka.
- Updated the native iOS bridge to Braze iOS SDK 2.31.0 or later.
- Updated the native Android bridge to Braze Android SDK 2.1.4.
- Added
ReactAppboy.registerPushToken()
for registering push tokens with Braze.- See braze-inc#13. Thanks @dcvz!
- Added the local
react-native-appboy-sdk
Podspec for integrating the React Native iOS bridge via Cocoapods.- See braze-inc#15. Thanks @pietropizzi!
- Updates the native iOS bridge to use Braze iOS SDK 2.29.0, which drops support for iOS 7.
- Updates the native Android bridge to use Braze Android SDK 2.0.0.
- Adds
ReactAppboy.requestImmediateDataFlush()
for requesting an immediate flush of any data waiting to be sent to Braze's servers. - Adds
ReactAppboy.requestFeedRefresh()
for requesting a refresh of the News Feed.- See braze-inc#12. Thanks @stief510!
- Added the ability to pass an optional dictionary of News Feed launch options to
launchNewsFeed()
. SeeNewsFeedLaunchOptions
for supported keys.- For more information on currently supported
NewsFeedLaunchOptions
keys, see the card width and card margin properties on ABKFeedViewController. - See braze-inc#10. Thanks @mihalychk!
- For more information on currently supported
- Updates the native iOS bridge to be compatible with React Native v0.40.0.
- Updates the AppboyProject sample project to React Native v0.41.1.
- Update Required — Fixes a bug in the iOS bridge where custom attribute dates were converted incorrectly, causing incorrect date data to be sent to Braze. As a result of the fix,
setDateCustomUserAttribute()
in the iOS React bridge may now only be called with a double.- Note: The default Javascript Braze interface has not changed, so for most integrations this just requires updating the SDK, unless you were manually calling our iOS bridge outside of our recommended integration.
- See braze-inc#7
- Update Required — Updates iOS push handling in the AppboyProject sample project to be compatible with iOS 10. For more information, refer to the CHANGELOG for Braze iOS SDK v2.24.0.
- Adds callbacks to the native bindings to provide function call results to React Native.
- Exposes
ReactAppboy.getCardCountForCategories()
andReactAppboy.getUnreadCardCountForCategories()
for retrieving News Feed card counts.- See braze-inc#1
- Adds
ReactAppboy.getInitialURL()
for handling deep links when an iOS application is launched from the suspended state by clicking on a push notification with a deep link. SeecomponentDidMount()
inAppboyProject.js
for a sample implementation. - Exposes
ReactAppboy.setTwitterData()
andReactAppboy.setFacebookData()
for Twitter and Facebook integration.- See braze-inc#4
- Targets Braze Android SDK version 1.15.3 and Braze iOS SDK version 2.24.2.
- Updates the AppboyProject sample application to React Native v0.33.0.
- Updates the AppboyProject sample project to integrate session handling and in-app message manager registration using an AppboyLifecycleCallbackListener, as introduced in Braze Android SDK v1.15.0.
- Removes
AppboyBroadcastReceiver.java
from the AppboyProject sample project, as Braze Android SDK v1.15.0 removes the need for a customAppboyBroadcastReceiver
for Braze push notifications.
- Renames Android module to conform to rnpm standard.
- Refactors Android module to have the source directly under the
android
folder.
- Initial release. Targets Braze Android SDK version 1.12.0 and Braze iOS SDK Version 1.18.4.