Web fork of most complete chat UI for React Native (formerly known as Gifted Messenger).
- Fully customizable components
- Composer actions (to attach photos, etc.)
- Load earlier messages
- Copy messages to clipboard
- Touchable links using react-native-parsed-text
- Avatar as user's initials
- Localized dates
- Multiline TextInput
- InputToolbar avoiding keyboard
import { GiftedChat } from 'react-native-gifted-chat';
class Example extends React.Component {
state = {
messages: [],
};
componentWillMount() {
this.setState({
messages: [
{
_id: 1,
text: 'Hello developer',
createdAt: new Date(),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
},
],
});
}
onSend(messages = []) {
this.setState((previousState) => ({
messages: GiftedChat.append(previousState.messages, messages),
}));
}
render() {
return (
<GiftedChat
messages={this.state.messages}
onSend={(messages) => this.onSend(messages)}
user={{
_id: 1,
}}
/>
);
}
}See example/App.js for a working demo!
e.g.
{
_id: 1,
text: 'My message',
createdAt: new Date(Date.UTC(2016, 5, 11, 17, 20, 0)),
user: {
_id: 2,
name: 'React Native',
avatar: 'https://facebook.github.io/react/img/logo_og.png',
},
image: 'https://facebook.github.io/react/img/logo_og.png',
// Any additional custom parameters are passed through
}messages(Array) - Messages to displaymessageIdGenerator(Function) - Generate an id for new messages. Defaults to UUID v4, generated by uuiduser(Object) - User sending the messages:{ _id, name, avatar }onSend(Function) - Callback when sending a messagelocale(String) - Locale to localize the datesisAnimated(Bool) - Animates the view when the keyboard appearsloadEarlier(Bool) - Enables the "Load earlier messages" buttononLoadEarlier(Function) - Callback when loading earlier messagesisLoadingEarlier(Bool) - Display anActivityIndicatorwhen loading earlier messagesrenderLoading(Function) - Render a loading view when initializingrenderLoadEarlier(Function) - Custom "Load earlier messages" buttonrenderAvatar(Function) - Custom message avatar; set tonullto not render any avatar for the messagerenderAllAvatars(Bool) - Allways render the avatar of a message. Default isfalse. Only the first message from of a series by the same user has an avatar.backgroundImage(String) - No background image by default. Display image as background from URLonPressAvatar(Function(user)) - Callback when a message avatar is tappedrenderAvatarOnTop(Bool) - Render the message avatar at the top of consecutive messages, rather than the bottom (default)renderBubble(Function) - Custom message bubbleonLongPress(Function(context,message)) - Callback when a message bubble is long-pressed; default is to show an ActionSheet with "Copy Text" (see example usingshowActionSheetWithOptions())renderMessage(Function) - Custom message containerrenderMessageText(Function) - Custom message textrenderMessageImage(Function) - Custom message imageimageProps(Object) - Extra props to be passed to the<Image>component created by the defaultrenderMessageImagelightboxProps(Object) - Extra props to be passed to theMessageImage's LightboxrenderCustomView(Function) - Custom view inside the bubblerenderDay(Function) - Custom day above a messagerenderTime(Function) - Custom time inside a messagerenderFooter(Function) - Custom fixed bottom view, e.g. "User is typing..."; see example/App.js for an examplerenderInputToolbar(Function) - Custom message composer containerrenderComposer(Function) - Custom text input message composerrenderActions(Function) - Custom action button on the left of the message composerrenderSend(Function) - Custom send buttonrenderAccessory(Function) - Custom second line of actions below the message composeronPressActionButton(Function) - Callback when the Action button is pressed (if set, the defaultactionSheetwill not be used)bottomOffset(Integer) - Distance of the chat from the bottom of the screen (e.g. useful if you display a tab bar)minInputToolbarHeight(Integer) - Minimum height of the input toolbar; default is44listViewProps(Object) - Extra props to be passed to the messages<ListView>; some props can't be overridden, see the code inMessageContainer.render()for detailskeyboardShouldPersistTaps(Enum) - Determines whether the keyboard should stay visible after a tap; see<ScrollView>docsonInputTextChanged(Function) - Callback when the input text changesmaxInputLength(Integer) - Max message composer TextInput length
