Chative.IO Widget for React Native
Chative.IO Widget is a React Native component that provides an easy-to-use chat widget for your mobile applications. It allows you to integrate a customizable chat interface with minimal setup.
- Customizable chat interface
- Easy to show/hide programmatically
- Supports custom header components
- Supports filling user information into live chat. (v0.5 or higher)
- Adjustable insets for different device sizes
- TypeScript support
npm install @chative.io/react-native-widget # or yarn add @chative.io/react-native-widget
This library depends on react-native-webview and async-storage. Please follow the instructions provided in the docs.
Here's a basic example of how to use the ChativeWidget in your React Native application:
import React, { useRef } from 'react'; import { Button, View } from 'react-native'; import ChativeWidget from '@chative.io/react-native-widget'; export default function App() { const widgetRef = useRef(null); const handleOpenChat = () => { widgetRef.current?.show(); }; const handleCloseChat = () => { // widgetRef.current?.hide(); }; const user = { user_id: 'UNIQUE_USER_ID', user: { email: 'acme@example.com', // Your user's email address first_name: 'John', last_name: 'Doe', phone: '+1234567890', custom_field: 'CUSTOMER_FIELD_VALUE' // Replace key and value with your custom field }, } return ( <View style={{ flex: 1 }}> <Button title="Open Chat" onPress={handleOpenChat} /> <ChativeWidget ref={widgetRef} channelId="your-channel-id" user={user} // v0.5 or higher onClosed={() => console.log('Widget closed')} onLoaded={() => console.log('Widget loaded')} onNewMessage={(message) => console.log('New message:', message)} onError={(message) => console.log('Error', message)} /> </View> ); }
Prop | Type | Required | Description |
---|---|---|---|
channelId | string | Yes | The ID of the chat channel |
user | ChativeWidgetUser | No | Information about the user, used for booting into live chat. |
headerComponent | ReactElement | No | Custom header component |
containerStyle | ViewStyle | No | Custom style for the container |
insetTop | number | No | Top inset (default: 50 for iOS, 20 for Android) |
insetBottom | number | No | Bottom inset (default: 50 for iOS, 20 for Android) |
onClosed | () => void | No | Callback when the widget is closed |
onLoaded | () => void | No | Callback when the widget is loaded |
onNewMessage | () => void | No | Callback when a new message is received |
onError | (error:string) => void | No | Callback function triggered when an error occurs. |
The following methods are available via the ref:
show()
: Display the chat widgethide()
: Hide the chat widgetreload()
: Reload the widget
You can customize the appearance of the widget by providing a custom header component and container style:
<ChativeWidget ref={widgetRef} channelId="your-channel-id" headerComponent={<YourCustomHeader />} containerStyle={{ backgroundColor: 'lightgray' }} />
This module includes TypeScript declarations. You can import types like this:
import ChativeWidget, { ChativeWidgetRef, ChativeWidgetUser } from '@chative.io/react-native-widget';
Field | Type | Required | Description |
---|---|---|---|
user_id | string | Yes | A unique identifier for the user. This is used to track the user's session in the chat. |
user.email | string | No | The user's email address. Optional, but recommended for better user identification. |
user.first_name | string | No | The user's first name. Optional, useful for personalized interactions. |
user.last_name | string | No | The user's last name. Optional, useful for personalized interactions. |
user.phone | string | No | The user's phone number. Optional, can be used for follow-up contact. |
user.[key: string]: any | any | No | Any additional information about the user, represented as key-value pairs. This can be used for custom data. |
If you encounter any issues or have questions, please file an issue on the GitHub repository.