Skip to main content

Integrate Chatwoot with React Native app

Add Chatwoot live chat widget to react native app and talk to your visitors in real time. Chatwoot helps you to chat with your visitors and provide exceptional support in real time. To use Chatwoot in your react native app, follow the steps described below.

1. Create a website inbox in Chatwoot#

Refer to Website Channel document.

2. Add the plugin to your project#

yarn add @chatwoot/react-native-widget

or

npm install --save @chatwoot/react-native-widget --save

This library depends on react-native-webview and async-storage. Please follow the instructions provided in the docs.

iOS Installation#

If you're using React Native versions > 60.0, it's relatively straightforward.

cd ios && pod install

3. How to use#

Replace websiteToken and baseUrl with approriate values.

import React, { useState } from 'react';import { StyleSheet, View, SafeAreaView, TouchableOpacity, Text } from 'react-native';import ChatWootWidget from '@chatwoot/react-native-widget';
const App = () => {  const [showWidget, toggleWidget] = useState(false);  const user = {    identifier: 'john@gmail.com',    name: 'John Samuel',    avatar_url: '',    email: 'john@gmail.com',    identifier_hash: '',  };  const customAttributes = { accountId: 1, pricingPlan: 'paid', status: 'active' };  const websiteToken = 'WEBSITE_TOKEN';  const baseUrl = 'CHATWOOT_INSTALLATION_URL';  const locale = 'en';
  return (    <SafeAreaView style={styles.container}>      <View>        <TouchableOpacity style={styles.button} onPress={() => toggleWidget(true)}>          <Text style={styles.buttonText}>Open widget</Text>        </TouchableOpacity>      </View>      {        showWidget&&          <ChatWootWidget            websiteToken={websiteToken}            locale={locale}            baseUrl={baseUrl}            closeModal={() => toggleWidget(false)}            isModalVisible={showWidget}            user={user}            customAttributes={customAttributes}          />      }
    </SafeAreaView>  );};
const styles = StyleSheet.create({  container: {    flex: 1,    justifyContent: 'center',    alignItems: 'center',  },
  button: {    height: 48,    marginTop: 32,    paddingTop: 8,    paddingBottom: 8,    backgroundColor: '#1F93FF',    borderRadius: 8,    borderWidth: 1,    borderColor: '#fff',    justifyContent: 'center',  },  buttonText: {    color: '#fff',    textAlign: 'center',    paddingLeft: 10,    fontWeight: '600',    fontSize: 16,    paddingRight: 10,  },});
export default App;

Horray! You're done!

The whole example can be found here.

Props#

NameDefaultTypeDescription
baseUrl-StringChatwoot Installation URL
websiteToken-StringWebsite Channel Token
localeenStringLocale to be used in the widget. Chatwoot support 25+ language. See Langauge Config to see the supported ISO 639-1 codes
isModalVisiblefalseBooleanFlag used to set the display of the widget modal
closeModal-FunctionHandler method for the callback when the modal is closed
user{}ObjectPass the information about the user like email, name and avatar_url
customAttributes{}ObjectIf you want to set additional information about user, pass the key value pair here