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',
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',
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 anActivityIndicator
when loading earlier messagesrenderLoading
(Function) - Render a loading view when initializingrenderLoadEarlier
(Function) - Custom "Load earlier messages" buttonrenderAvatar
(Function) - Custom message avatar; set tonull
to not render any avatar for the messageonPressAvatar
(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 defaultrenderMessageImage
lightboxProps
(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 defaultactionSheet
will 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 is44
listViewProps
(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
You need to have facebook watchman installed
cd example
yarn
yarn start
yarn run sync
in another terminal window (doesn't matter where)
If you have any issues, you can clear your watches using watchman watch-del-all
and try again.
Feel free to ask me question on Twitter @JanRomaniak!