Guide du dépôt du SDK React Native
À propos du SDK React Native Braze
Le SDK React Native Braze connecte vos applications iOS et Android à Braze : profils utilisateur, surfaces de communication, analytique et feature flags. Il encapsule le SDK Swift Braze natif et le SDK Android Braze natif derrière une API JavaScript.
L’initialisation est pilotée par JavaScript : vous configurez la configuration native (notifications push, journalisation, délégués) dans les ressources Android et dans AppDelegate sur iOS, puis vous appelez Braze.initialize(apiKey, endpoint) depuis JavaScript pour démarrer le SDK. Cela vous donne un contrôle total sur le moment où le SDK s’initialise et avec quels identifiants. Après l’initialisation, appelez les autres méthodes du SDK (par exemple changeUser, logCustomEvent) selon vos besoins.
Ce que vous pouvez faire
- Gestion des utilisateurs : Identifier les utilisateurs, définir les champs de profil, les attributs personnalisés, les alias et les groupes d’abonnement
- Messages in-app : Interface utilisateur Braze par défaut ou gestion personnalisée via des abonnements et des API de journalisation
- Content Cards : Flux par défaut, ou récupération des cartes pour créer votre propre interface utilisateur
- Bannières : Bannières HTML basées sur des emplacements, y compris
BrazeBannerView - Notifications push : Demandes d’autorisation, enregistrement de jetons, écouteurs de payloads (voir Notifications push)
- Feature flags : Actualisation, lecture des propriétés, journalisation des impressions
- Analytique : Événements personnalisés, achats, envoi immédiat
- Contrôles du SDK : Activer/désactiver le SDK, effacer les données locales, signatures d’authentification du SDK
Conditions préalables
- Compte Braze avec une clé API d’application et un endpoint SDK
- Environnement de développement React Native (configuration de l’environnement React Native)
- iOS : Xcode, CocoaPods (
cd ios && pod install) - Android : Android Studio / Gradle ; plugin Kotlin Gradle tel que requis par votre modèle React Native
- Notifications push (si utilisées) : configuration FCM (Android) et APNs (iOS) conformément à la documentation sur les notifications push
Pour localiser les identifiants dans le tableau de bord, consultez l’aperçu de l’intégration.
Installation
1
2
3
npm install @braze/react-native-sdk
# or:
# yarn add @braze/react-native-sdk
Démarrage rapide
Cette section présente la configuration minimale requise pour initialiser le SDK Braze React Native.
- Installez le package npm dans Installation.
- Effectuez la configuration native pour Android et iOS (configuration, permissions, notifications push si nécessaire).
- Initialisez le SDK depuis JavaScript et commencez à l’utiliser :
1
2
3
4
5
6
7
8
9
import Braze from "@braze/react-native-sdk";
// Initialize the SDK — call early in your app lifecycle (e.g. in a useEffect).
// The API key and endpoint are passed from JavaScript; native configuration
// (push, logging, etc.) is applied automatically from your native setup.
Braze.initialize("<YOUR_API_KEY>", "<YOUR_SDK_ENDPOINT>");
Braze.changeUser("user-123");
Braze.logCustomEvent("button_clicked", { screen: "home" });
Les typages TypeScript sont inclus dans le package (src/index.d.ts sur GitHub).
Appeler Braze.initialize à nouveau avec des identifiants différents détruit l’instance en cours et en crée une nouvelle, permettant une réinitialisation en cours de session.
Configuration native
Source de vérité : Les écrans pas à pas, les modifications Gradle/CocoaPods et la liste complète des clés XML Android se trouvent dans le guide développeur Braze React Native. Les extraits Android et iOS de cette section sont des exemples minimaux.
Android
- Ajoutez le plugin Kotlin Gradle dans votre fichier racine
build.gradlesi votre modèle ne l’inclut pas déjà (les versions dépendent de votre version React Native). - Ajoutez un fichier de ressources
braze.xmldansres/valuesavec votre configuration. Activez l’initialisation différée afin que le SDK attende l’appel deBraze.initialize()depuis JavaScript avant de démarrer. Les autres valeurs de configuration (notifications push, délai d’expiration de session, etc.) sont toujours lues depuis ce fichier et appliquées au moment de l’initialisation. - Vérifiez que les permissions de base telles que
INTERNETetACCESS_NETWORK_STATEsont présentes dansAndroidManifest.xml. - Pour les notifications push, effectuez l’intégration FCM ainsi que la configuration de l’ID d’expéditeur / des indicateurs d’enregistrement spécifiques à Braze décrits dans la documentation.
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Enable delayed initialization so the SDK starts when
Braze.initialize() is called from JavaScript. -->
<bool name="com_braze_enable_delayed_initialization">true</bool>
<!-- Additional native configuration (applied at initialization time) -->
<bool name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">YOUR_SENDER_ID</string>
</resources>

** La clé API et l’endpoint ne sont plus définis dans braze.xml — ils sont transmis depuis JavaScript via Braze.initialize(apiKey, endpoint).
iOS
1
cd ios && pod install
Utilisez BrazeReactInitializer.configure dans votre AppDelegate pour enregistrer la configuration native. Les closures que vous fournissez sont stockées et appliquées ultérieurement lorsque Braze.initialize(apiKey, endpoint) est appelé depuis JavaScript.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import BrazeKit
import braze_react_native_sdk
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
// Register native configuration for when JS calls Braze.initialize().
BrazeReactInitializer.configure { config in
config.logger.level = .info
config.push.automation = true
} postInitialization: { braze in
AppDelegate.braze = braze
}
// ... React Native setup
return true
}
}
- Closure
configure: reçoit un objetBraze.Configurationet vous permet de définir les propriétés de configuration natives (journalisation, notifications push, sessions, etc.). La clé API et l’endpoint sont fournis depuis JavaScript — vous ne les définissez pas ici. - Closure
postInitialization(facultatif) : reçoit l’instanceBrazeactive après sa création, pour les opérations nécessitant l’instance (par exemple, stocker une référence, définir des délégués).

** BrazeReactInitializer.configure est une API conçue pour Swift qui remplace l’ancien BrazeReactBridge.initBraze(_:), désormais obsolète. Elle résout également un problème de résolution de type Swift avec Braze.Configuration dans le pont Objective-C.
Référence de configuration
En React Native, la configuration est native : Android lit res/values/braze.xml, et iOS utilise des closures enregistrées via BrazeReactInitializer.configure. Les deux sont appliquées lorsque Braze.initialize(apiKey, endpoint) est appelé depuis JavaScript.
Android (braze.xml)
Les valeurs par défaut se trouvent dans le XML ; BrazeConfig.Builder peut les remplacer au démarrage. La liste complète des clés et types est disponible dans le guide d’intégration du SDK Android et dans BrazeConfigurationProvider (chaque propriété Kotlin correspond à des ressources documentées com_braze_*).
Entrées couramment utilisées :
| Clé | Type de ressource | Description |
|---|---|---|
com_braze_enable_delayed_initialization |
bool |
Obligatoire. Définissez sur true pour que le SDK attende l’appel de Braze.initialize() depuis JavaScript. |
com_braze_api_key |
string |
Non nécessaire lors de l’utilisation de Braze.initialize() depuis JavaScript (les identifiants sont transmis depuis JS). Uniquement requis pour l’initialisation native traditionnelle. |
com_braze_custom_endpoint |
string |
Non nécessaire lors de l’utilisation de Braze.initialize() depuis JavaScript. Uniquement requis pour l’initialisation native traditionnelle. |
com_braze_server_target |
string |
Sélecteur optionnel de cluster / environnement (par exemple, pour certaines builds internes ou de staging). Préférez com_braze_custom_endpoint en production, sauf indication contraire de votre intégration Braze. |
com_braze_firebase_cloud_messaging_registration_enabled |
bool |
Lorsque défini sur true, Braze s’enregistre pour FCM (configuration push classique). |
com_braze_firebase_cloud_messaging_sender_id |
string |
ID d’expéditeur FCM lorsque l’enregistrement automatique est activé. |
com_braze_handle_push_deep_links_automatically |
bool |
Permet à Braze d’ouvrir automatiquement les deep links push. |
com_braze_trigger_action_minimum_time_interval_seconds |
integer |
Nombre minimum de secondes entre les actions de déclenchement de messages in-app. |
| Autres | divers | Clés supplémentaires non listées ici (délai d’expiration de session, géorepérages, localisation, paramètres par défaut des notifications, listes d’autorisation d’appareils, initialisation différée, authentification SDK, etc.). Consultez BrazeConfigurationProvider et le guide d’intégration du SDK Android. |
iOS (Braze.Configuration)
Définissez les propriétés de configuration native dans la closure configure transmise à BrazeReactInitializer.configure. La closure reçoit une instance de Braze.Configuration — la clé API et l’endpoint sont définis automatiquement à partir de l’appel JavaScript Braze.initialize. Détails complets : Braze.Configuration et les types imbriqués api, push, logger, location.
| Domaine | Membres (représentatifs) | Notes |
|---|---|---|
| Identifiants | api.key, api.endpoint |
Définis automatiquement à partir de Braze.initialize(apiKey, endpoint) en JavaScript. Ne les définissez pas dans la closure configure. |
| Journalisation | logger.level |
La journalisation verbeuse est réservée au développement ; réduisez le bruit en production. |
| Notifications push | push.automation, push.appGroup, … |
L’automatisation simplifie l’enregistrement ; appGroup est nécessaire pour Push Stories / les extensions lorsqu’elles sont utilisées. |
| Messages in-app | triggerMinimumTimeInterval |
Par défaut 30 secondes entre les déclenchements. |
| Sessions | sessionTimeout |
Durée d’inactivité avant une nouvelle session (voir la documentation Braze sur les sessions). |
| Confidentialité / données | api.trackingPropertyAllowList, devicePropertyAllowList, api.sdkAuthentication |
À aligner avec le manifeste de confidentialité et les paramètres du produit d’authentification SDK. |
| Réseau | api.requestPolicy, api.flushInterval |
Politique de relance des requêtes et fréquence d’envoi. |
| Abonnement push | optInWhenPushAuthorized |
Lorsque défini sur true, l’abonnement peut passer à « accepté » après que l’utilisateur a autorisé les notifications. |
| Messages in-app et changements d’utilisateur | preventInAppMessageDisplayForDifferentUser |
Réduit les incohérences de messages in-app si l’identifiant utilisateur change. |
| Autres | forwardUniversalLinks, ephemeralEvents, useUUIDAsDeviceId, … |
Consultez la documentation Swift pour le comportement complet. |
Le pont React Native définit les métadonnées api.sdkFlavor / SDK spécifiques à React lors de l’initialisation ; ne les remplacez pas sauf instruction contraire de la documentation Braze.
API JavaScript / TypeScript
L’exportation par défaut du package est la classe Braze avec des méthodes statiques (par exemple Braze.changeUser, Braze.logPurchase). Les constantes telles que Braze.Events, Braze.Genders et Braze.NotificationSubscriptionTypes sont rattachées à la même exportation.
Fonctionnalités principales
Gestion des utilisateurs
1
2
3
4
5
6
7
import Braze from "@braze/react-native-sdk";
Braze.changeUser("user-123");
Braze.setEmail("[email protected]");
Braze.setCustomUserAttribute("plan", "premium");
Braze.addAlias("external_id", "marketing_id");
Braze.addToSubscriptionGroup("NEWSLETTER_GROUP_UUID");
Authentification SDK optionnelle : transmettez une signature comme deuxième argument à changeUser, ou appelez Braze.setSdkAuthenticationSignature(signature) lorsque cette option est activée dans le tableau de bord.
Messages in-app
- Avec l’interface utilisateur par défaut de Braze, suivez la documentation sur les messages in-app ; en général, vous n’avez pas besoin d’appeler
subscribeToInAppMessagesimplement pour afficher l’interface par défaut. - Pour une gestion personnalisée, abonnez-vous avec
useBrazeUI: false, puis enregistrez les impressions/clics selon vos besoins :
1
2
3
4
5
Braze.subscribeToInAppMessage(false, (event) => {
const msg = event.inAppMessage;
// Render your own UI from msg.message, msg.buttons, etc.
Braze.logInAppMessageImpression(msg);
});
Content Cards
1
2
3
4
5
6
const cards = await Braze.getCachedContentCards();
Braze.requestContentCardsRefresh();
Braze.launchContentCards(); // default Braze UI
Braze.logContentCardImpression(cardId);
Braze.logContentCardClicked(cardId);
Écoutez les mises à jour avec Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, ...).
Bannières
1
2
3
4
5
6
7
import Braze from "@braze/react-native-sdk";
Braze.requestBannersRefresh(["homepage_banner"]);
const banner = await Braze.getBanner("homepage_banner");
// Or use the native Banner view:
// <Braze.BrazeBannerView placementId="homepage_banner" />
Notifications push
1
2
3
4
5
6
7
Braze.requestPushPermission({
alert: true,
badge: true,
sound: true,
});
// Token registration is usually handled natively; see docs for your setup.
Braze.registerPushToken(token);
getInitialPushPayload: à utiliser lorsque l’application s’ouvre depuis une notification pour éviter les conditions de concurrence liées auLinkingde RN. Nécessite des hooks natifs (BrazeReactUtilssur iOS,BrazeReactUtils.populateInitialPushPayloadFromIntentsur Android) comme décrit dans les commentaires de la documentation TypeScript et l’application d’exemple.Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, ...)est disponible uniquement sur Android selon les typages publics.
Feature flags
1
2
3
4
5
6
const flag = await Braze.getFeatureFlag("new_checkout");
if (flag?.enabled) {
const rollout = flag.getNumberProperty("rollout_percentage") ?? 0;
}
Braze.refreshFeatureFlags();
Braze.logFeatureFlagImpression("new_checkout");
Analyses et achats
1
2
3
Braze.logCustomEvent("purchase_completed", { sku: "sku-1" });
Braze.logPurchase("sku-1", "29.99", "USD", 1, { source: "cart" });
Braze.requestImmediateDataFlush();
Remarque : logPurchase prend le prix sous forme de chaîne de caractères (voir les typages).
Gestion des données et état du SDK
changeUser indique uniquement à Braze quel identifiant utilisateur doit recevoir la nouvelle activité. Cette méthode ne vide pas les données SDK mises en cache sur l’appareil. Il n’existe pas d’API distincte pour la « déconnexion » : si vous avez besoin d’une déconnexion classique (vider l’état local de Braze afin que le profil, les messages et les jetons mis en cache de l’utilisateur précédent disparaissent de cette installation), vous utiliserez généralement wipeData(). Il s’agit d’une réinitialisation locale complète.
1
2
3
Braze.wipeData();
Braze.disableSDK();
Braze.enableSDK();
wipeData() — Efface les données locales de Braze pour cette installation (état utilisateur/session/cartes mis en cache, association du jeton push, etc.). Utilisez cette méthode pour un comportement de type déconnexion lorsque vous ne devez pas laisser l’état Braze de l’utilisateur précédent sur l’appareil, ainsi que pour les scénarios « supprimer mes données sur cet appareil », les réinitialisations QA sans réinstallation, ou les flux stricts de confidentialité. changeUser seul n’effectue pas ce nettoyage : il définit uniquement quel identifiant utilisateur reçoit les nouveaux événements. Sur iOS, le comportement peut différer d’Android (par exemple, interaction avec l’état de désactivation du SDK) ; consultez la documentation native de Braze si vous utilisez cette méthode en production.
disableSDK() — Arrête le fonctionnement du SDK (aucune collecte ni transmission de données selon la configuration). Utilisez cette méthode pour les bascules de désactivation par l’utilisateur, les modes restreints (conformité, paramètres enfants), ou le débogage sans supprimer la dépendance.
enableSDK() — Réactive le SDK après un appel à disableSDK(). Sur iOS, la réactivation peut ne pas prendre effet avant le prochain lancement de l’application ; vérifiez dans la documentation Braze Swift/iOS avant de compter sur une réactivation immédiate.
Événements
Abonnez-vous avec Braze.addListener(event, callback). L’appel renvoie un objet d’abonnement ; appelez .remove() dessus pour arrêter l’écoute.
Mise en place d’un écouteur :
1
2
3
4
5
6
7
8
import Braze from "@braze/react-native-sdk";
const subscription = Braze.addListener(
Braze.Events.CONTENT_CARDS_UPDATED,
(update) => {
console.log("Content cards:", update.cards);
}
);
Suppression de l’écouteur :
1
subscription.remove();
Dans un composant React, stockez l’abonnement et appelez .remove() dans votre nettoyage (par exemple, le retour d’un useEffect) :
1
2
3
4
5
6
useEffect(() => {
const sub = Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, (update) => {
setCards(update.cards);
});
return () => sub.remove();
}, []);
| Constante d’événement | Payload (résumé) |
|---|---|
Braze.Events.CONTENT_CARDS_UPDATED |
Dernières content cards |
Braze.Events.BANNER_CARDS_UPDATED |
Dernières bannières |
Braze.Events.FEATURE_FLAGS_UPDATED |
Tableau de feature flags |
Braze.Events.IN_APP_MESSAGE_RECEIVED |
Événement de message in-app |
Braze.Events.SDK_AUTHENTICATION_ERROR |
Détails de l’erreur d’authentification SDK |
Braze.Events.PUSH_NOTIFICATION_EVENT |
Payload de notification push (Android uniquement) |
Notes d’intégration
- Expo : utilisez le plugin Braze Expo pour éviter autant que possible la configuration native manuelle.
- New Architecture / Turbo Modules : pris en charge dans les versions récentes du plugin ; suivez le guide développeur et les exemples de configuration
AppDelegate/ Gradle si vous effectuez la migration. - Confidentialité (iOS) : des méthodes telles que
updateTrackingPropertyAllowListprennent en charge la configuration liée au manifeste de confidentialité ; consultez le manifeste de confidentialité Swift.
- Jest : simulez les modules natifs react-native ou le module Braze Turbo (consultez __tests__/jest.setup.js dans ce dépôt pour des exemples de configuration).
Prise en charge des versions

Ce SDK a été testé avec la version 0.85.3 de React Native.
Le tableau suivant répertorie les versions de React Native prises en charge par version du plugin Braze.
| Plugin Braze | React Native | Nouvelle architecture |
|---|---|---|
| 9.0.0+ | ≥ 0.71 | Oui |
| 6.0.0+ | ≥ 0.68 | Oui (≥ 0.70.0) |
| 2.0.0+ | ≥ 0.68 | Oui |
| ≤ 1.41.0 | ≤ 0.71 | Non |
Respectez également les exigences des SDK natifs :
Plugin Braze Expo
Pour les workflows gérés par Expo, consultez le dépôt du plugin Braze Expo.
Application exemple
BrazeProject dans ce dépôt est une application exemple complète (gestion des utilisateurs, Content Cards, feature flags, bannières, etc.).
1
2
3
cd BrazeProject/
yarn install
npx react-native start
iOS (depuis BrazeProject) :
1
2
cd ios && pod install && cd ..
npx react-native run-ios
Utilisez RCT_NEW_ARCH_ENABLED=0 pod install si vous avez besoin de l’architecture legacy.
Android (depuis BrazeProject) :
1
npx react-native run-android
Débogage et résolution des problèmes
Activez la journalisation Braze dans la configuration native pendant le développement afin que le SDK écrive dans la console système (Xcode / Android Logcat). Cela permet de vérifier l’initialisation, les changements d’utilisateur et la distribution des événements.
- iOS — Dans la closure
configurepassée àBrazeReactInitializer.configure, définissezconfig.logger.level = .debug(ou.info). Réduisez ou désactivez cette option en production pour que les journaux ne soient pas visibles par les utilisateurs. - Android — Utilisez la ressource
com_braze_logger_initial_log_leveldansbraze.xmlou définissez l’équivalent surBrazeConfig.Builder(voir BrazeConfigurationProvider). Utilisez un niveau non verbeux ou supprimez le remplacement avant la mise en production.
Pour une résolution des problèmes plus approfondie (réseau, session ou comportement de Campaign), consultez le guide développeur Braze React Native et la documentation des SDK natifs (Swift · Android).
Ressources supplémentaires
- Guide du développeur Braze — React Native
- Notifications push — React Native
- Dépôt GitHub
- Package npm
Contact
Pour toute question, contactez le support technique de Braze pour obtenir de l’aide.
Pour les détails du dépôt et les exemples de projets, consultez https://github.com/braze-inc/braze-react-native-sdk.