- Updated implementation around network recovery for smooth UX #658
- Added support for
MessageDeletedprop on Channel component, for overriding default deleted message component 65861d9 - Refresh channel list when
sortprop updates, on ChannelList 42450fa - Added support for typing indicator in threads 6f518ca
- Added handler for
channel.visibleevent 476c36e
- Added default sizes to Icons in
OverlayReactionListcomponent. 6b4db5f - Miscellaneous fixes around image picker opening and closing 950f746 4845e4e
- Allow re-rerendering of MessageInput component, on changes to
additionalTextInputProps1b95a64 - Fixed Android camera permissions check 5b77516
- Fixed
supportedReactionsprop support onOverlayReactions#594 - Fixed mentions autocomplete functionality for channels with > 100 members e8c93d3
- Fixed theming issue on overlay for sent message (or my message) 7f11364
- Exporting following components and hooks from SDK
- ChannelListLoadingIndicator
- ChannelPreviewMessage
- ChannelPreviewStatus
- ChannelPreviewTitle
- ChannelPreviewUnreadCount
- InputButtons
- useAppStateListener
-
Added inline date separators, which can be customized by adding your own UI component #581
<Channel InlineDateSeparator={({ date }) => { /** Your custom UI */ }} maxTimeBetweenGroupedMessages={40000} // number of ms, after which further messages will be considered part of new group. >
-
Added ability to override default onLongPress, onPress, onPressIn and onDoubleTap handlers using following props on Channel component:
- onLongPressMessage
- onPressMessage
- onPressInMessage
- onDoubleTapMessage
You will have access to payload of that handler as param:
<Channel ... onLongPressMessage={({ actionHandlers: { deleteMessage, // () => Promise<void>; editMessage, // () => void; reply, // () => void; resendMessage, // () => Promise<void>; showMessageOverlay, // () => void; toggleBanUser, // () => Promise<void>; toggleMuteUser, // () => Promise<void>; toggleReaction, // (reactionType: string) => Promise<void>; }, defaultHandler, // () => void event, // any event object corresponding to touchable feedback emitter, // which component trigged this touchable feedback e.g. card, fileAttachment, gallery, message ... etc message // message object on which longPress occured }) => { /** Your custom action */ }} />
-
Following props are no longer accessible on
Inputcomponent (which is used to customize underlying input box). They should be accessed fromMessageInputContext(or corresponding hook -useMessageInputContext)- openAttachmentPicker
- closeAttachmentPicker
- toggleAttachmentPicker
- openCommandsPicker
- openMentionsPicker
- openFilePicker
-
Value
typing(which is list of users who are typing), has been moved fromChannelContextto its own separate context -TypingContextc450719
- #522
initialValuenot being set for inputbox 63b3d79 - Fixed goToMessage functionality (when you press on quotedMessage) in MessageList #580
- Fixed image picker not loading when swapping from keyboard a180ad4
- Minimum required
stream-chatversion is3.5.1. - Following values have been moved from
MessagesContexta separate context -PaginatedMessageListContext- hasMore
- messages
- loadMore
- loadMoreRecent
- loadMoreThread
- loadingMore
- loadingMoreRecent
From this release when app goes to background, websocket connection will be dropped by default. This is necessary to allow push notifications.
We only send push notification, when user doesn't have any active websocket connection (which is established when you call client.connectUser). When your app goes to background, your device will keep the ws connection alive for around 15-20 seconds, and so within this period you won't receive any push notification. Until now, it was upto end user to drop the connection by explicitly calling client.closeConnection() or client.wsConnection.disconnect(), when app goes to background.
But from this release, we have moved this functionality to OOTB.
- If you don't have push system configured for your application, you can disable this functionality by adding a prop on Chat component -
closeConnectionOnBackground={false} - As described earlier, please make sure you are on
stream-chat >= 3.5.1
- Allow use of Channel component with uninitialized channel
- Allow custom config of i18next config
- UI fixes and animation improvements for reactions
NO CODE CHANGE
Fixed version.json during package publishing, which we use to track the version of RN sdk through
client.setUserAgent call
Fixed type definition pointers in package.json
-
🛑 BREAKING: Removed a prop
handleOnPressonInputcomponent. -
Added support for new props on
Inputcomponent, which can be used on Channel component as prop to replace undelying input component (reference)- closeAttachmentPicker (function)
- openAttachmentPicker (function)
- openCommandsPicker (function)
- toggleAttachmentPicker (function)
-
Added support for new prop on
Channelcomponent -InputButtons, to replace the extra buttons on the left on input box #536 -
Added support for
messageActionsprop as callback. Also added support for propmessageActionson Channel component #548 Earlier you could override messageActions prop as following:<Channel messageActions=[ { action: () => { /** Some message action logic */ }; title: "Pin Message"; icon: PinIcon; titleStyle: {}; }, { action: () => { /** Some message action logic */ }; title: "Delete Message"; icon: PinIcon; titleStyle: {}; } ] > {/** MessageList and MessageInput component here */} </Channel>
But now, you can selectly keep certain action and remove some:
/** Lets say you only want to keep threadReply and copyMessage actions */ <Channel messageActions={({ blockUser, copyMessage, deleteMessage, editMessage, flagMessage, muteUser, reply, retry, threadReply, }) => ([ threadReply, copyMessage ])} > {/** MessageList and MessageInput component here */} </Channel>
-
Issue fix: make OverlayReactions customizable through props. c7a83b8
-
Issue fix: Image upload for expo and assets-library 5a2d0e8
-
Issue fix: Compatibility with jest as described in #508 a172c15
Version 3.x is a major revamp of the SDK and comes with many breaking changes. The new implementation takes advantage of React Context along with many popular community libraries such as Reanimated V2 to deliver a superior chat experience. Upgrading will require re-implementing your integration but will yield performance and functional benefits. It is highly recommended you read the Cookbook and examine the SampleApp / TypeScriptMessaging apps before upgrading to understand what is required.
- Modern UX around reaction picker functionality, similar to iMessage
- Inline replies
- "Also send to channel" option on Threads
- In app attachment picker
- Improved avatars for grouped channels.
- Rich image viewers with options to share the image outside the app, or view the image in gallery view.
- "Copy Message" action as part of message actions.
-
In previous versions, we did a lot of prop drilling throughout component trees, which makes it quite hard for end user to decide exactly where to set a particular prop. We have tried to centralize component customization on following three higher order components:
- OverlayProvider
- ChannelList
- Channel
We have prepared a visual guide to help you with component customizations - Guide
-
In v2.x.x, we decided to move away from class based components, towards functional components along with react hooks. React hooks are definitely a big addition to react eco-system, but when not careful it has potential to hammer the performance. We have handled all these issues as part of v3.0.0 using careful revamp around all the contexts and memoizations, which improves the app performance by a great margin.
-
We have decided to abondon styled-components, are decided to have our own implementation
- Removed dot notation for theming applications
- Removed css string notation for styles on theme
- Added displayName to components with bracket notation denoting the theme path e.g.
MessageStatus.displayName = 'MessageStatus{message{status}}';indicates the theme path would be modified viaconst customTheme: DeepPartial<Theme> = { message: { status: { ...customizations } } }. Please check our theme docs for more details.
-
Added peer dependencies for:
- BlurView using one of these
- Expo: expo-blur
- React Native: @react-native-community/blur
- Image Compression using one of these
- Expo: expo-image-manipulator
- React Native: react-native-image-resizer
- FileSystem using one of these
- Expo: expo-file-system
- React Native: react-native-fs
- Share using one of these
- Expo expo-sharing
- React Native: react-native-share
- Image Picking using one of these
- Expo expo-media-library
- React Native: react-native-cameraroll
- react-native-gesture-handler
- react-native-reanimated v2
- react-native-svg
- BlurView using one of these
-
Removed peer dependencies for:
-
Removed seamless-immutable
-
Removed styled-components:
Please find detailed docs about this release in our wiki
-
As of this release, expo is on version 40 which uses a version of React Native with a bug in the Dimensions API that occurs upon reloading an app in the simulator. Version 3.x uses relative sizing widely and depends on this API so issues will be visible in Expo until they update the custom React Native version they ship.
-
[Android] As part of this release, we implemented a new feature - inline replies, similar to whatsapp. Bi-directional scrolling/pagination was necessary for this feature. To keep smooth scrolling experience, we implemented our own solution for react-native. Although, Expo being close-source project, we can't do any such thing for Expo. So inline reply feature is not recommended to use in Expo, since you will not have a good scroll experience on Android, while scrolling down in message list.
Handling the case of standlone Channel component (without ChannelList) on top of fix in v2.2.1 - ba7d744
For push notifications, we usually recommend users to disconnect websocket when app goes to background and reconnect when app comes to foreground. But channel list UI doesn't update properly once the ws is re-connected. This issue has been fixed in this commit 8a35e50
- Switched to
react-native-markdown-packagefor markdown of message text #505
Fixed broken re-send message functionality, upon failure b3c028f
- Fix markdown on message
- Fixes issue with un-necessary queryChannels api call, when filters are provided as inline object 9f4528b
- Fixed infinite re-rendering issue on mentions suggestion box 5fd521a
- Fixed broken mentions autocomplete feature for channels with more than 100 members. #457
- Added a new prop autocompleteSuggestionsLimit on MessageInput - Max number of suggestions to display in list. Defaults to 10.
- Bumping dependency to stream-chat@2.9.0
- Fixed plenty of issues around reload/refresh of channellist upon failures.
- Fixing retry message functionality 7a423f7
- MessageList component
-
Fixing issue - when you cancel 'edit message' flow, input box attachments don't get cleared 425db22
-
Adding reload behaviour on error indicator on messagelist 6047671
- Fixed issue - When you edit a message which has image attachments, images disappear from message - 68c0acb
- Fixed maxFiles value on image picker and file picker taking into account already selected number of attachments - 176f675
Please check Upgrade Docs for upgrading from 0.x.x to 2.x.x
BREAKING CHANGES
- You will need to install https://github.com/LinusU/react-native-get-random-values and add this line
import 'react-native-get-random-values';to yourindex.js - Expo 39 is now the lowest supported version
This library has been moved to full typescript. Please check Typescript doc for details
Channel
- add
additionalKeyboardAvoidingViewPropsprop to allow custom keyboard props
ChannelListMessenger
- remove
setActiveChannelprop
ChannelPreviewMessenger
- renamed the
latestMessageprop tolatestMessagePreview. This name change is more semantic to what the prop does and reduces confusion with thelastMessageprop
MessageContent
- removed
retrySendMessageprop in favor ofretrySendMessagewithinMessagesContext
MessageInput
- remove
parentprop toparent_idas it needs to be just an id string instead of the entire parent object - add
setInputRefprop to actually allow forwarding of the TextInput ref controls
MessageSystem
- add
formatDateprop to allow custom date formatting
ChannelContext
-
We have split the
ChannelContextinto three separate contexts to further modularize the code and reduce renders as items in context change. The following contexts now contain the following values, previously all held within theChannelContext:-
ChannelContext:channeldisabledEmptyStateIndicatorerroreventHistorylastReadloadingLoadingIndicatormarkReadmembersreadsetLastReadtypingwatcherCountwatchers
-
MessagesContextAttachmentclearEditingStateeditingeditMessageemojiDatahasMoreloadingMoreloadMoreMessagemessagesremoveMessageretrySendMessagesendMessagesetEditingStateupdateMessage
-
ThreadContextcloseThreadloadMoreThreadopenThreadthreadthreadHasMorethreadLoadingMorethreadMessages
-
-
All contexts are exported and any values can be accessed through a higher order component (ex:
withMessagesContext) or with one of our custom context hooks (ex: accessMessagesContextbyconst { messages } = useMessagesContext();).
- Fixing keyboard issue during app state change a8aa4ed
- Fixing keyboard glitch functionality for android a7f94b9
- Fixing retry upload functionality e89b87f
-
SuggestionsList (for user-mentions feature in MessageInput) doesn't update the position as per keyboard position. For the time being, we have fixed this by dismissing the suggestions list when keyboard gets dismissed - 0fdff4f
-
Exported IconBadge and IconSquare components, to fix the tutorial f1b6a39
-
Added file size to file attachment 7e653a4
No changes
BREAKING CHANGES
- Replaced the default image picker react-native-image-picker for react-native-image-crop-picker and added
compressImageQualityprop to support image compression out-of-the-box - Added
FileUploadPreviewandImageUploadPreviewprops to support custom overrides to those components
Implementation of internal KeyboardCompatibleView has been changed so as to make animations smoother and fix existing issues with keyboard behavior. Support for following props have been dropped from Channel and KeyboardCompatibleView
- keyboardDismissAnimationDuration
- keyboardOpenAnimationDuration
Following new props have been introduced on Channel component. They are the same props accepted by KeyboardAvoidingView of react-native.
- keyboardBehavior ['height' | 'position' | 'padding']
- keyboardVerticalOffset
-
We converted the ChannelList component from a class to a function and abstracted the event listener logic into custom hooks. The default event handlers can still be overridden by providing custom prop functions to the ChannelList component. Custom logic can be provided for the following events:
onAddedToChanneloverridesnotification.added_to_channeldefaultonChannelDeletedoverrideschannel.deleteddefaultonChannelHiddenoverrideschannel.hiddendefaultonChannelTruncatedoverrideschannel.truncateddefaultonChannelUpdatedoverrideschannel.updateddefaultonMessageNewoverridesnotification.message_newdefaultonRemovedFromChanneloverridesnotification.removed_from_channeldefault
-
All custom event handlers now accept two arguments, with the
thisreference no longer needed in the functional component.- 1st argument:
setChannelsreference to theuseStatehook that sets thechannelsin the React Native FlatList - 2nd argument:
eventobject returned by the StreamChat instance
- 1st argument:
e.g.,
// In following example we will override the default handler for notification.added_to_channel
<ChannelList
filters={}
onAddedToChannel={(setChannels, event) => {
setChannels(channels => {
// Do additional actions on channels array.
return channels;
})
}}
>- On upgrading to this release, ensure events and any custom handling functions (ex:
onAddedToChanneloronMessageNew) are properly processed and update the list UI as expected.
- We fixed a bug for being unable to remove a file from the
MessageInputand made it consistent toImageUploadPreview - We have removed support for the
fileUploadPreview.dismissTexttheme value - We have added support for
fileUploadPreview.dismiss,fileUploadPreview.dismissImage, andfileUploadPreview.imageContainertheme values
- We replaced the default image picker react-native-image-picker for react-native-image-crop-picker and added
compressImageQualityprop to support image compression out-of-the-box - Added
FileUploadPreviewandImageUploadPreviewprops to support custom overrides to those components
- Added
formatDateprop to support custom date formatting
-
We have removed support for the
MessageListcomponent'sonMessageTouchprop. Please use theonPressprop on theMessageSimplecomponent to perform an action on touch of a message. -
We have removed support for the
Messagecomponent'sreadOnlyprop. Please use thedisabledvalue from theChannelContextinstead. -
We renamed the
latestMessageprop on theChannelPreviewMessengercomponent tolatestMessagePreview. This name change is more semantic to what the prop does and reduces confusion with thelastMessageprop. -
We have also dropped support for the following
MessageListprops:dateSeparator(use DateSeparator instead)headerComponent(use HeaderComponent instead)
- We have removed the
thisclass component reference from the prop functions inMessageSimple. For example, if you wish to override the SDK's standard long press behavior on a message, theonLongPressfunction passed in toMessageSimpleno longer takes thethiscomponent reference as it's first argument. The message and the event object become the first and second arguments, respectively.
- The
renderTextfunction utilized in theMessageTextContainercomponent now accepts a single object containingmarkdownRules,markdownStyles, andmessage. Previously each value was a separate function parameter.
NO BREAKING CHANGES
-
Following components have been converted to functional component from class based component.
- Chat
- KeyboardCompatibleView
- SuggestionsProvider
- AutoCompleteInput
- Spinner
-
So far we exported bundled/transpiled version of components from package as single file - dist/index.js, dist/index.es using rollup. But now we are moving away from this approach and instead distributing original source of components since react-native handles bundling/transpiling part anyways. This also makes it easy for end-users to debug components exported from stream-chat-react-native.
-
Fixed exports of MessageStatus, MessageContent, MessageAvatar, MessageTextContainer components #268
-
Moving following components to functional components
- ChannelPreview
- ChannelPreviewMessenger
- Attachment
- Card
- FileAttachment
- EmptyStateIndicator, LoadingIndicator, LoadingErrorIndicator
-
Decoupled actionsheet from MessageInput component 59618ad
We've already been on a v1 release for a while but never updated our versioning. Right now we're in the process of rewriting our components to be more future proof and we started using hooks, hence the v1.0.0 today.
Breaking change: stream-chat-react-native now relies on hooks and will need react-native >= 0.59.0 to work
Rewrite will involve following changes:
- Functional components instead of class based components
- Static typing using typescript
- UI tests
We are going to incrementally implement these changes and will try to keep everything backwards compatible unless really necessary.
- Exporting
AutoCompleteInputcomponent d41d0d5
-
Upgrading @stream-io/react-native-simple-markdown to 1.2.1 d89f012
It fixes the issue with markdown where text like "#stream" was treated as heading, thus disallowing anyone to use hashtags in chat.
-
Internal directory restructuring of components
-
84ded29 Bug fix - Only set active channel in ChannelList component on complete reload, which happens in following cases:
- first load on chat
- changes in filters
- Upgrading
@stream-io/react-native-simple-markdownto 1.2.0. It fixes markdown related issues regarding line breaks - Added a new prop to the MessageInput component -
sendImageAsync. It’s value defaults to false, but when set to true, if the user hits send on a message before an attached image has finished uploading, the message text will be sent immediately and the image will be sent as a follow-up message as soon as a successful response has been received by the CDN 455571d - Fixed typescript for isMyMessage function 7d55134
- Improving MessageInput component, to better handle the case of rapid typing 3fddf06
- Fixing fallback avatar for MentionsItem component 159fcb8
- Fixing
enabledprop on KeyboardCompatibleView
- Fixing broken file upload functionality on android 2cb26e7
- Allow search for special characters in mentions autocomplete a2cb083
- Improvements to autocomplete feature in MessageInput component.
Until now if your channel had more than 100 members, then you couldn't see members (besides first 100) in mentions popup box. This was because queryChannels api only populates 100 members in channel state and mentions feature was based on searching for members in channel state.
From now on, autocomplete input (specifically mentions autocomplete) will be api based search. So that mentions feature will work even for the channels with more than 100 members.
Non breaking changes
-
So far we only had
LoadingErrorIndicator(which can be customized using propLoadingErrorIndicator). This error indicator replaces the entire channel list on screen. So if your 2nd page of list results in error, we used to remove all the already fetched channels and show this full screen error indicator. Instead we have introduced following error indicators, which will be displayed at top of the list in case or error. Please note that if first page of queryChannels api results in error, we will display LoadingErrorIndicator- HeaderErrorIndicator
- HeaderNetworkDownIndicator
-
Introducing following new props to ChannelList component
FooterLoadingIndicator{UI Component} To override default spinner at footer of channel list (introduced in this release)HeaderErrorIndicator{UI Component} To override default HeaderErrorIndicatorHeaderNetworkDownIndicator{UI Component} To override default HeaderNetworkDownIndicator
-
Introduced pull to refresh functionality, to refresh the ChannelList in case of failure.
-
Adding following prop to
LoadingErrorIndicatorretry{func} If you are using customLoadingErrorIndicatorfor your ChannelList component, you can attach this function to CTA button to reload the ChannelList.
-
Added retry mechanism to ChannelList's queryChannels api call. In case of failure, api will be retried 3 times (max) at the interval of 2 seconds.
- Updating
stream-chatto1.10.1in add token refresh functionality - Disable longPress on Image gallery f7aacb5
- Fixing markdown issue ac621f0
-
Fixing crashes in KeyboardCompatibleView and better handling of AppState changes
-
Fixes with message component 2d21b19
- Adding support for prop
additionalTouchablePropsinMessageSimpleto allow adding additional prop to inner TouchableOpacity components - Same (additionalTouchableProps) prop gets forwarded to all inner components which has some touchable feedback attached such as Gallery, FileAttachment, etc
- Adding support for prop
-
Adding
setFlatListReffunction prop to ChannelList and MessageList to get access to ref to inner FlatList component 4c49373 -
Fix for threadMessages in event handler for Channel component - 17f32df
-
Adding margin for very last MessageSystem f4661d6
-
Hiding AttachButton if both
hasImagePickerandhasFilePickerprops are false 7de46b5 -
Fixing custom reactions 5deea55
-
Adding following theme keys 7ae43d4
- messageInput.suggestions.command.args
- messageInput.suggestions.command.description
-
Handling
channel.hiddenevent inChannelListcomponent -
Adding support for function prop
onChannelHideonChannelList -
Avoid breaking markRead api call if channel is disconnected a1cfd96
-
Updating
stream-chatversion to1.7.3 -
Fixing the error:
[Unhandled promise rejection: TypeError: mimeType.startsWith is not a function. (In 'mimeType.startsWith('image/')', 'mimeType.startsWith' is undefined)]451b2a4
All the changes are non-breaking
-
Adding support for custom UI component prop -
InputtoMessageInput. It allows shuffling of UI inside MessageInput -
Adding support for following UI component props to
MessageSimple- UrlPreview
- Giphy
- FileAttachment
- FileAttachmentGroup
- Card
- CardHeader
- CardCover
- CardFooter
-
Adding support for following UI component props to
Attachment- UrlPreview
- Giphy
- FileAttachment
- FileAttachmentGroup
- Card
- CardHeader
- CardCover
- CardFooter
-
Adding support for following UI component props to
Card- Header
- Cover
- Footer
-
Adding following theme keys:
message.card.footer.title(Text)message.card.footer.description(Text)message.card.footer.link(Text)message.card.footer.logo(Image)iconSquare.container(TouchableOpacity or View)
-
Fixing typos in docs
-
Updating format of message date time to
LTfromhh:ssA, to allow i18n -
Fixing pagination logic for ChannelList in case of duplicates
NOTE Please make sure to use stream-chat@^1.7.0
- Fixing moderator, owner, admin checks for message actions 80dfb86
-
Adding support for following props on MessageInput component c5ada59
- onChangeText
- initialValue
- Disabling (disabling
TouchableOpacitywrapper)SendButtonif message is not valid (empty text and no attachments) - Syncing this
rcwith latest master (0.8.1) - Moving external expo dependencies to peerDependencies
- Fixing issue with MessageStatus not showing up on mount 61388c3
-
MessageSimple
new props
MessageRepliesUI component to override default2 repliestext/componentMessageHeaderUI component to add some content on top of message content (text, attachments)ReactionListUI component to override default ReactionList componentsupportedReactionsArray of reactions which should be available or supported in reaction picker. Example
deprecated props
emojiDatePlease use supportedReactions instead
-
MessageAvatar
new props
alignment('right' | 'left')
-
MessageContent
new props
- All the new props to MessageSimple are available in MessageContent
alignment('right' | 'left')
-
ReactionPickerWrapper
In previous version, you could open reaction picker only after clicking/pressing
ReactionList, which made it hard to change the functionality ofReactionListwithout copy pasting lots of code regarding opening ofReactionPicker. And also ReactionPicker logic was tightly coupled with MessageContent component (which meant added complexity) With ReactionPickerWrapper, we are taking out all the ReactionPicker related logic (setting the position of reaction picker at message which was touched) from MessageContent. So you can now add open reaction picker on press functionality on any component that you wish. You just need to wrap your component withReactionPickerWrappercomponent.You can also adjust the relative position at which ReactionPicker opens up or shows up by altering
offsetprop on ReactionPickerWrapper.Default value is:
{ top: 40, left: 30, right: 10, }NOTE: This component was present in repository in previous versions as well, but it was super buggy.
TL;DR Enables you to build custom ReactionList, on touch of which, ReactionPicker will open up
Please check this example from cookbook for details - https://github.com/GetStream/stream-chat-react-native/blob/vishal/docs-improvement/docs/cookbook.md#message-bubble-with-reactions-at-bottom-of-message
-
Channel
- Update the component, when
channelprop changes.
- Update the component, when
- Fixing issue with MessageStatus not showing up on mount 61388c3
- Moving external expo dependencies to peerDependencies
- Disabling (disabling
TouchableOpacitywrapper)SendButtonif message is not valid (empty text and no attachments) - Syncing this
rcwith latest master (0.8.1)
- Disabling interactions with MessageList and MessageInput if channel is frozen. 2c4e1a2
- Adding missing
styleto all our component in typescript a2ac0b4
-
MessageSimple
new props
MessageRepliesUI component to override default2 repliestext/componentMessageHeaderUI component to add some content on top of message content (text, attachments)ReactionListUI component to override default ReactionList componentsupportedReactionsArray of reactions which should be available or supported in reaction picker. Example
deprecated props
emojiDatePlease use supportedReactions instead
-
MessageAvatar
new props
alignment('right' | 'left')
-
MessageContent
new props
- All the new props to MessageSimple are available in MessageContent
alignment('right' | 'left')
-
ReactionPickerWrapper
In previous version, you could open reaction picker only after clicking/pressing
ReactionList, which made it hard to change the functionality ofReactionListwithout copy pasting lots of code regarding opening ofReactionPicker. And also ReactionPicker logic was tightly coupled with MessageContent component (which meant added complexity) With ReactionPickerWrapper, we are taking out all the ReactionPicker related logic (setting the position of reaction picker at message which was touched) from MessageContent. So you can now add open reaction picker on press functionality on any component that you wish. You just need to wrap your component withReactionPickerWrappercomponent.You can also adjust the relative position at which ReactionPicker opens up or shows up by altering
offsetprop on ReactionPickerWrapper.Default value is:
{ top: 40, left: 30, right: 10, }NOTE: This component was present in repository in previous versions as well, but it was super buggy.
TL;DR Enables you to build custom ReactionList, on touch of which, ReactionPicker will open up
Please check this example from cookbook for details - https://github.com/GetStream/stream-chat-react-native/blob/vishal/docs-improvement/docs/cookbook.md#message-bubble-with-reactions-at-bottom-of-message
-
Channel
- Update the component, when
channelprop changes.
- Update the component, when
- Replacing momentjs with dayjs
- Changes to
Streami18nconstructor options:- Breaking change: replacing
momentLocaleConfigForLanguagewithdayjsLocaleConfigForLanguage - deprecating
Moment. Instead useDateTimeParser
- Breaking change: replacing
- Updating
stream-chatto1.6.0b62fa95 - Avoid showing empty cover if image url is empty ddbbadb
- Subscribing ChannelList to
user.updatedevent 7ea6110 - Fixing channel.updated and channel.deleted event handler to not break if channel is not in list 1404860
- Extending style support for
TypingIndicatorcomponent, 5874b73 - Added styling support for editing box of
MessageInput. 2968684 - Adding prop
doMarkReadRequestto Channel component, to override markRead api call. 1afda94 - Adding boolean prop
hideReactionCountandhideReactionOwnersinMessageSimplecomponent. 3814266 MessageInputandMessageListcomponent as prop inThreadcomponent. db97289- Disabling keyboard listeners when app goes to background 8a372e6
- Dismiss keyboard when opening action sheet. bb12a55
- Disable escaping in translator function. a5118dc
- Allow moderator to edit/delete message. 44165f6
- Adding support for custom moment object in Streami18n class 7557c70
- Introducing internationalization (i18n) support for the sdk https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/docs/Streami18n.md
-
Adding following props to KeyboardCompatibleView component 6650109
- keyboardDismissAnimationDuration
- keyboardOpenAnimationDuration
- enabled
-
Adding following props to Channel component 6650109
- KeyboardCompatibleView
- disableKeyboardCompatibleView
-
Fixing title of send button 0990cb5
-
Fixing channel preview avatar for one-on-one conversation 790b0b9
-
Fixing types for context providers - dc40c8a
- Adding a simple check to see if lastReceivedId has changed, before updating the state - to avoid infinite loop 3da5e4a
-
Fixing image index for Image viewer (d16e86c)
Issue - if attachment gallery, when you click/touch on 1st photo, it opens image viewer at 1st photo. But if you touch 2nd photo, it still opens image viewer at first photo.
- Adding support for prop
formatLatestMessageDateinChannelPreviewMessengercomponent (9a8d9a3) - Adding support for prop
latestMessageLengthinChannelPreviewMessengercomponent (ef5b887) - Adding types for
SendButtonto typescript file (ad5c728) - Fixing date issue in
MessageSystemcomponent. (35c18e3) - Adding prop for AttachButton to MessageInput (600b1d2)
- Adding prop
formatDatetoMessageSimplecomponent (c3cfdf6) - Adding style and text customization to LoadingIndicator (232241c)
- Added support for following props to
Channelcomponent:
- When you change the filters prop on the ChannelList component this now we will refresh the channels with the new query
- Exporting all the missing components and utils
- AutoCompleteInput
- Card
- CommandsItem
- DateSeparator
- EmptyStateIndicator
- EventIndicator
- FileAttachmentGroup
- FileUploadPreview
- Gallery
- IconSquare
- ImageUploadPreview
- KeyboardCompatibleView
- LoadingErrorIndicator
- LoadingIndicator
- MentionsItem
- Message
- MessageNotification
- MessageSystem
- ReactionList
- Spinner
- SuggestionsProvider
- UploadProgressIndicator
- Refining prop-types and typescript types for components.
- Fixed issue about app crash when document picker is cancelled - #110
- Adding
onPressandonLongPressprops onMessageSimplecomponent - Fixing theme paths for MessageNotification component.
- Replacing theme path
messageList.messageNotificationTextwithmessageList.messageNotification.text(#3593dfb) - Replacing theme path
messageList.messageNotificationwithmessageList.messageNotification.container(#3593dfb)
- Adding support for following props
additionalParentMessagePropsadditionalMessageListPropsadditionalMessageInputProps
- Adding missing types for prop
additionalFlatListPropsin MessageList and ChannelList
- Adding support for following props
additionalParentMessagePropsadditionalMessageListPropsadditionalMessageInputProps
- Adding missing types for prop
additionalFlatListPropsin MessageList and ChannelList
- Changes to add compatibility for Expo 36. Adding netinfo as peer dependency - GetStream#97
- Disabling the long press on image viewer (in Attachment) - GetStream#100 to avoid freezing of UI.
- Fixing broken threads issue
- Support for
additionalFlatListPropsprop inMessageListandChannelListcomponent - Changing prop-type for component type props to
elementTypeinstead offunc
- Disabling the long press on image viewer (in Attachment) - GetStream#100 to avoid freezing of UI.
- Fixing broken threads issue
- Support for
additionalFlatListPropsprop inMessageListandChannelListcomponent - Changing prop-type for component type props to
elementTypeinstead offunc
- Adding support for customizing markdown styles - https://github.com/GetStream/stream-chat-react-native/pull/99/files#diff-ede54911d9164ea37e65e92f2e18cb91R56
- Removing
textproperty theme withtextContainer.
- Adding support for
onChannelTruncatedprop to ChannelList - Updating channel from channel list once
channel.truncatedevent is received - Fixed image picker for native package and examples
- Adding support for
onChannelDeletedprop to ChannelList - Removing channel from channel list once
channel.deletedevent is received
- Adding strict string type check for channel name
- Updated example apps
- Updated readme doc
- Showing TypingIndicatorContainer only when necessary
- Adding logs to Chat, ChannelList and Channel component
- Optimizing MessageList and ChannelList component - GetStream#84
- Adding support for
AttachmentFileIconprop.
- Adding support for
actionSheetStylesprop, so as to add more customization for styles of action sheet.
- Fixing some styles for action sheet in MessageSimple component.
- Avoiding query channel api call when there are no more messages to render
- Making markRead api call only if unread count is > 0
- Making empty value of
typingobject - immutable - Adding support for
SendButtonUI component prop
- Fixing bug in themed HOC
- Adding typescript declaration file for expo and native package
- Adding typescript declaration file
- Adding style customization support for action sheet
- Fixing expo package for NetInfo changes
- Fixing deprecated warnings coming from NetInfo library
- Adding onMessageTouch and dismissKeyboardOnMessageTouch prop for MessageList component
- Fixing style issue (background color) of MessageText component, introduced in 0.2.4
- Fixing bug in theme logic
- Adding ability to customize more the MessageSimple component
- Fixing pagination issue when oldest message is not received yet
- Updated example two to react native 0.60
- Fixing UX for image/file picker - closing keyboard when you open file/image picker action sheet
- Making sdk compatible with Expo 33 and 34
- Making sdk compatible with react native 0.60
- Updating ChannelPreviewMessenger component to show other member's name as channel title if channel has no explicate name in channel.data
- Fixing keyboard compatible view for android. Status bar height was not taken into account while calculating the height of channel after opening keyboard.
- Fixing prop to override Attachment UI component
- Attachment for URL preview were broken. Fixed.
- Adding prop function
onChannelUpdatedas callback for eventchannel.updated - Bug fix - Channel list component doesn't update when custom data on channel is updated.


