Référence

Référence : @zean-chat/react-native

Le composant ZeanChat et le hook useZean, pour les apps Expo et React Native.

Mis à jour le 28 octobre 2026

Les exemples affichent app_your_app_key. Ouvrez ce guide depuis Paramètres de l’App > Développeurs > Démarrage pour y voir la clé de votre App.

Lorsque les Réponses IA sont activées pour l’App, le chat identifie les réponses de l’IA et propose « Parler à un membre ». Aucun paramètre SDK ni secret IA supplémentaire n’est nécessaire. Les clés du fournisseur restent sur le serveur.

Affichez ZeanChat une seule fois, à la racine de l’app, et ouvrez le chat avec useZean(). Voir Installer le chat dans une app React Native.

Dépendances

  • react 19 ou plus, et react-native 0.78 ou plus.
  • Un stockage déjà dans l’application : AsyncStorage, MMKV ou Expo SQLite. Le chat le trouve seul. Sans stockage, la conversation est oubliée à la fermeture de l’application.
  • Facultatif : expo-image-picker ou react-native-image-picker, pour envoyer des photos. Sans l’un des deux, le chat n’a pas de bouton photo.
  • Le SDK n’apporte aucun module natif : il marche avec Expo, React Native CLI et n’importe quelle navigation.

Exports

NomTypeDescription
ZeanChat(props: ZeanChatProps) => ReactNodeLe chat, dans un Modal au-dessus de vos écrans : en feuille sur iPhone, en plein écran sur Android. Il s’ouvre avec open(), sans bouton flottant.
useZean()() => ZeanControlsOuvre et ferme le chat, et suit le nombre de réponses non lues. Marche dans n’importe quel composant.
openFromNotification()(data: unknown) => booleanOuvre le chat quand la notification touchée vient d’une réponse d’un membre, et renvoie true ; renvoie false pour toute autre notification. Marche avant que ZeanChat soit affiché, quand le toucher lance l’app. Voir Envoyer des notifications push.
isZeanNotification()(data: unknown) => booleanSi les données d’une notification sont le push.data d’un événement message.member, sans ouvrir le chat. Accepte aussi ce push.data en texte JSON, ou dans data.
ZeanChatPropsinterfaceLes props de ZeanChat.
ZeanControlsinterfaceCe que renvoie useZean().
ZeanStorageZeanKeyValueStorage | ZeanMMKVCe que storage accepte, quand vous choisissez le stockage.
ZeanKeyValueStorageinterfaceUn stockage avec getItem et setItem : AsyncStorage, Expo SQLite.
ZeanMMKVinterfaceUne instance MMKV, passée telle quelle.
ZeanColorScheme'light' | 'dark'Un thème du chat.
ZeanUserinterfaceLa personne connectée, plus bas.
ZeanAttributesRecord<string, ZeanAttributeValue>Les attributs du Contact : { city: "Douala", orders: 12 }.
ZeanAttributeValuestring | number | booleanLa valeur d’un attribut.
ZeanLocale'fr' | 'en'Une langue du chat.

Props de ZeanChat

NomTypeDescription
appKeystringObligatoire. La clé publique de l’App, dans Paramètres de l’App > Développeurs > Démarrage.
storageZeanStorageFacultatif. Là où le chat garde le lien de l’appareil avec la conversation, les messages pas encore envoyés et les 100 derniers messages, montrés dès l’ouverture. Sans lui : le MMKV, l’AsyncStorage ou l’Expo SQLite de votre application, trouvé par le chat. Lu une fois, au démarrage.
userZeanUserFacultatif. Tant qu’une personne est connectée : { id, name, email }. Laissez-le de côté quand personne ne l’est : une personne qui était connectée est déconnectée. Laissé de côté pendant que votre application charge encore la personne, il ne déconnecte personne. Les mêmes valeurs à chaque rendu ne changent rien. Voir Identifier vos Contacts.
attributesZeanAttributesFacultatif. Ce que vous savez de la personne, montré sur la fiche du Contact. Envoyé de nouveau à chaque changement. Voir Attributs personnalisés.
locale'fr' | 'en'Facultatif. La langue du chat. Sans elle : celle du téléphone si le chat la parle, sinon la langue par défaut de l’App.
colorSchemeZeanColorSchemeFacultatif. Le thème, light ou dark. Sans lui : celui du téléphone.
maxPhotosnumberFacultatif. Les photos que la personne envoie dans un message, de 1 à 6. Sans lui : 4.
JSX
import { ZeanChat } from "@zean-chat/react-native";export default function App() {  return (    <>      {/* Vos écrans */}      <ZeanChat        appKey="app_your_app_key"        locale="fr"        colorScheme="light"        user={user ? { id: user.id, name: user.name, email: user.email } : undefined}      />    </>  );}

useZean()

NomTypeDescription
open()() => voidOuvre le chat.
close()() => voidFerme le chat.
toggle()() => voidOuvre le chat s’il est fermé, le ferme sinon.
identify()(user: ZeanUser) => voidLa personne s’est connectée. Le premier appareil qui donne son ID rejoint sa Conversation tout de suite ; un autre lui demande d’abord un code envoyé par email. Voir Identifier vos Contacts.
signOut()() => voidLa personne s’est déconnectée : le chat repart de zéro, anonyme.
setAttributes()(attributes: ZeanAttributes) => voidAjoute ces attributs à ceux déjà envoyés. Les valeurs refusées sont signalées dans la console. Voir Attributs personnalisés.
setPushToken()(token: string | null) => voidDonne à Zean le jeton push de l’appareil : Expo, FCM ou APNs. null l’oublie. Redonné seul après une déconnexion. Votre serveur le reçoit dans push.tokens de chaque événement message.member. Voir Envoyer des notifications push.
unreadCountnumberLe nombre de réponses que le Contact n’a pas lues, mis à jour à chaque changement.

ZeanUser

NomTypeDescription
idstring | numberObligatoire. Votre propre ID pour la personne, en texte ou en nombre, 200 caractères au plus. Le même ID sur votre site et dans votre application mobile donne une seule personne.
namestringFacultatif. Son nom, sur sa fiche Contact.
emailstringFacultatif. Le code qui ajoute un autre appareil part à cette adresse : sans elle, un deuxième appareil ne peut jamais rejoindre le Contact.
phonestringFacultatif. Son téléphone, sur sa fiche Contact.
languagestringFacultatif. Sa langue, n’importe laquelle, en code comme pt ou pt-BR. Sans elle, celle de son appareil est gardée. Elle ne change pas la langue du chat.

ZeanKeyValueStorage

NomTypeDescription
getItem()(key: string) => string | null | Promise<string | null>Lit une valeur, ou null quand il n’y en a pas.
setItem()(key: string, value: string) => void | Promise<void>Écrit une valeur.

ZeanMMKV

NomTypeDescription
getString()(key: string) => string | undefinedLit une valeur, rien quand il n’y en a pas.
set()(key: string, value: string) => voidÉcrit une valeur.

storage sert rarement : le chat trouve le MMKV, l’AsyncStorage ou l’Expo SQLite de votre application. Pour en choisir un, passez-le tel quel : AsyncStorage, Storage d’expo-sqlite/kv-store ou une instance MMKV, toute version. Tout autre objet avec getItem et setItem convient aussi.