![Três etapas para instalar o widget em um app React Native: criar a caixa de entrada de site e copiar o token e a URL, instalar o plugin e configurar o componente ChatWootWidget.](/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBbVlRIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3ffae8e5121d80c531ae34839c9a97baad73e4e3/1730213347-como-instalar-chat-ao-vivo-em-um-aplicativo-react-native.png)

Se você tem um aplicativo React Native, pode adicionar o widget de chat ao vivo do Chatwoot e conversar com seus visitantes em tempo real. Isso pode ser feito em três etapas simples usando o plugin do Chatwoot.

### Passo 1. Crie uma Caixa de Entrada de Website no Chatwoot

O widget precisa de uma Caixa de Entrada de Website para funcionar. No Chatwoot, acesse **Configurações → Caixas de Entrada → Adicionar caixa de entrada**, escolha o canal **Website** e conclua a criação da caixa.

Depois de criada, abra a caixa em **Configurações → Caixas de Entrada**, selecione o canal de Website e vá até a aba **Configuração** para copiar o **Token do Site** e a **URL da instalação** — você vai usar esses dois valores no Passo 3.

### Passo 2. Adicione o plugin ao seu projeto

Adicione o [widget oficial para React Native](https://github.com/chatwoot/chatwoot-react-native-widget) ao projeto.

```sh
yarn add @chatwoot/react-native-widget
```

ou

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

Essa biblioteca depende de `react-native-webview` e `@react-native-async-storage/async-storage`. Siga as instruções de instalação indicadas no repositório e nas documentações dessas dependências.

#### Instalação no iOS

Em projetos com React Native **0.60 ou superior**, execute também a instalação dos pods do iOS:

```sh
cd ios && pod install
```

### Passo 3. Configure o uso do plugin

Substitua `websiteToken` e `baseUrl` pelos valores que você copiou no Passo 1.

```jsx
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: '<hash-generated-on-server>',
  };
  const customAttributes = { accountId: 1, pricingPlan: 'paid', status: 'active' };
  const websiteToken = 'WEBSITE_TOKEN';
  const baseUrl = 'CHATWOOT_INSTALLATION_URL';
  const locale = 'pt_BR';

  return (
    <SafeAreaView style={styles.container}>
      <View>
        <TouchableOpacity style={styles.button} onPress={() => toggleWidget(true)}>
          <Text style={styles.buttonText}>Abrir 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;
```

Se você identificar usuários com `identifier`, gere o `identifier_hash` no seu servidor e nunca coloque a chave HMAC no aplicativo. Veja [Como habilitar a validação de identidade](1730216029-como-habilitar-a-validacao-de-identidade-no-chatwoot).

Pronto! Ao abrir o widget no aplicativo, você já poderá conversar com seus visitantes em tempo real pelo Chatwoot.