- Updated implementation around network recovery for smooth UX #658
- Added support for
MessageDeleted
prop on Channel component, for overriding default deleted message component 65861d9 - Refresh channel list when
sort
prop updates, on ChannelList 42450fa - Added support for typing indicator in threads 6f518ca
- Added handler for
channel.visible
event 476c36e
- Added default sizes to Icons in
OverlayReactionList
component. 6b4db5f - Miscellaneous fixes around image picker opening and closing 950f746 4845e4e
- Allow re-rerendering of MessageInput component, on changes to
additionalTextInputProps
1b95a64 - Fixed Android camera permissions check 5b77516
- Fixed
supportedReactions
prop 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
Input
component (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 fromChannelContext
to its own separate context -TypingContext
c450719
- #522
initialValue
not 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-chat
version is3.5.1
. - Following values have been moved from
MessagesContext
a 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
handleOnPress
onInput
component. -
Added support for new props on
Input
component, 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
Channel
component -InputButtons
, to replace the extra buttons on the left on input box #536 -
Added support for
messageActions
prop as callback. Also added support for propmessageActions
on 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-package
for 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
additionalKeyboardAvoidingViewProps
prop to allow custom keyboard props
ChannelListMessenger
- remove
setActiveChannel
prop
ChannelPreviewMessenger
- renamed the
latestMessage
prop tolatestMessagePreview
. This name change is more semantic to what the prop does and reduces confusion with thelastMessage
prop
MessageContent
- removed
retrySendMessage
prop in favor ofretrySendMessage
withinMessagesContext
MessageInput
- remove
parent
prop toparent_id
as it needs to be just an id string instead of the entire parent object - add
setInputRef
prop to actually allow forwarding of the TextInput ref controls
MessageSystem
- add
formatDate
prop to allow custom date formatting
ChannelContext
-
We have split the
ChannelContext
into 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
:channel
disabled
EmptyStateIndicator
error
eventHistory
lastRead
loading
LoadingIndicator
markRead
members
read
setLastRead
typing
watcherCount
watchers
-
MessagesContext
Attachment
clearEditingState
editing
editMessage
emojiData
hasMore
loadingMore
loadMore
Message
messages
removeMessage
retrySendMessage
sendMessage
setEditingState
updateMessage
-
ThreadContext
closeThread
loadMoreThread
openThread
thread
threadHasMore
threadLoadingMore
threadMessages
-
-
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: accessMessagesContext
byconst { 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
compressImageQuality
prop to support image compression out-of-the-box - Added
FileUploadPreview
andImageUploadPreview
props 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:
onAddedToChannel
overridesnotification.added_to_channel
defaultonChannelDeleted
overrideschannel.deleted
defaultonChannelHidden
overrideschannel.hidden
defaultonChannelTruncated
overrideschannel.truncated
defaultonChannelUpdated
overrideschannel.updated
defaultonMessageNew
overridesnotification.message_new
defaultonRemovedFromChannel
overridesnotification.removed_from_channel
default
-
All custom event handlers now accept two arguments, with the
this
reference no longer needed in the functional component.- 1st argument:
setChannels
reference to theuseState
hook that sets thechannels
in the React Native FlatList - 2nd argument:
event
object 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:
onAddedToChannel
oronMessageNew
) are properly processed and update the list UI as expected.
- We fixed a bug for being unable to remove a file from the
MessageInput
and made it consistent toImageUploadPreview
- We have removed support for the
fileUploadPreview.dismissText
theme value - We have added support for
fileUploadPreview.dismiss
,fileUploadPreview.dismissImage
, andfileUploadPreview.imageContainer
theme values
- We replaced the default image picker react-native-image-picker for react-native-image-crop-picker and added
compressImageQuality
prop to support image compression out-of-the-box - Added
FileUploadPreview
andImageUploadPreview
props to support custom overrides to those components
- Added
formatDate
prop to support custom date formatting
-
We have removed support for the
MessageList
component'sonMessageTouch
prop. Please use theonPress
prop on theMessageSimple
component to perform an action on touch of a message. -
We have removed support for the
Message
component'sreadOnly
prop. Please use thedisabled
value from theChannelContext
instead. -
We renamed the
latestMessage
prop on theChannelPreviewMessenger
component tolatestMessagePreview
. This name change is more semantic to what the prop does and reduces confusion with thelastMessage
prop. -
We have also dropped support for the following
MessageList
props:dateSeparator
(use DateSeparator instead)headerComponent
(use HeaderComponent instead)
- We have removed the
this
class component reference from the prop functions inMessageSimple
. For example, if you wish to override the SDK's standard long press behavior on a message, theonLongPress
function passed in toMessageSimple
no longer takes thethis
component reference as it's first argument. The message and the event object become the first and second arguments, respectively.
- The
renderText
function utilized in theMessageTextContainer
component 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
AutoCompleteInput
component 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-markdown
to 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
enabled
prop 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
LoadingErrorIndicator
retry
{func} If you are using customLoadingErrorIndicator
for 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-chat
to1.10.1
in 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
additionalTouchableProps
inMessageSimple
to 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
setFlatListRef
function 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
hasImagePicker
andhasFilePicker
props are false 7de46b5 -
Fixing custom reactions 5deea55
-
Adding following theme keys 7ae43d4
- messageInput.suggestions.command.args
- messageInput.suggestions.command.description
-
Handling
channel.hidden
event inChannelList
component -
Adding support for function prop
onChannelHide
onChannelList
-
Avoid breaking markRead api call if channel is disconnected a1cfd96
-
Updating
stream-chat
version 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 -
Input
toMessageInput
. 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
LT
fromhh: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
TouchableOpacity
wrapper)SendButton
if message is not valid (empty text and no attachments) - Syncing this
rc
with latest master (0.8.1) - Moving external expo dependencies to peerDependencies
- Fixing issue with MessageStatus not showing up on mount 61388c3
-
MessageSimple
new props
MessageReplies
UI component to override default2 replies
text/componentMessageHeader
UI component to add some content on top of message content (text, attachments)ReactionList
UI component to override default ReactionList componentsupportedReactions
Array of reactions which should be available or supported in reaction picker. Example
deprecated props
emojiDate
Please 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 ofReactionList
without 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 withReactionPickerWrapper
component.You can also adjust the relative position at which ReactionPicker opens up or shows up by altering
offset
prop 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
channel
prop changes.
- Update the component, when
- Fixing issue with MessageStatus not showing up on mount 61388c3
- Moving external expo dependencies to peerDependencies
- Disabling (disabling
TouchableOpacity
wrapper)SendButton
if message is not valid (empty text and no attachments) - Syncing this
rc
with latest master (0.8.1)
- Disabling interactions with MessageList and MessageInput if channel is frozen. 2c4e1a2
- Adding missing
style
to all our component in typescript a2ac0b4
-
MessageSimple
new props
MessageReplies
UI component to override default2 replies
text/componentMessageHeader
UI component to add some content on top of message content (text, attachments)ReactionList
UI component to override default ReactionList componentsupportedReactions
Array of reactions which should be available or supported in reaction picker. Example
deprecated props
emojiDate
Please 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 ofReactionList
without 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 withReactionPickerWrapper
component.You can also adjust the relative position at which ReactionPicker opens up or shows up by altering
offset
prop 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
channel
prop changes.
- Update the component, when
- Replacing momentjs with dayjs
- Changes to
Streami18n
constructor options:- Breaking change: replacing
momentLocaleConfigForLanguage
withdayjsLocaleConfigForLanguage
- deprecating
Moment
. Instead useDateTimeParser
- Breaking change: replacing
- Updating
stream-chat
to1.6.0
b62fa95 - Avoid showing empty cover if image url is empty ddbbadb
- Subscribing ChannelList to
user.updated
event 7ea6110 - Fixing channel.updated and channel.deleted event handler to not break if channel is not in list 1404860
- Extending style support for
TypingIndicator
component, 5874b73 - Added styling support for editing box of
MessageInput
. 2968684 - Adding prop
doMarkReadRequest
to Channel component, to override markRead api call. 1afda94 - Adding boolean prop
hideReactionCount
andhideReactionOwners
inMessageSimple
component. 3814266 MessageInput
andMessageList
component as prop inThread
component. 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
formatLatestMessageDate
inChannelPreviewMessenger
component (9a8d9a3) - Adding support for prop
latestMessageLength
inChannelPreviewMessenger
component (ef5b887) - Adding types for
SendButton
to typescript file (ad5c728) - Fixing date issue in
MessageSystem
component. (35c18e3) - Adding prop for AttachButton to MessageInput (600b1d2)
- Adding prop
formatDate
toMessageSimple
component (c3cfdf6) - Adding style and text customization to LoadingIndicator (232241c)
- Added support for following props to
Channel
component:
- 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
onPress
andonLongPress
props onMessageSimple
component - Fixing theme paths for MessageNotification component.
- Replacing theme path
messageList.messageNotificationText
withmessageList.messageNotification.text
(#3593dfb) - Replacing theme path
messageList.messageNotification
withmessageList.messageNotification.container
(#3593dfb)
- Adding support for following props
additionalParentMessageProps
additionalMessageListProps
additionalMessageInputProps
- Adding missing types for prop
additionalFlatListProps
in MessageList and ChannelList
- Adding support for following props
additionalParentMessageProps
additionalMessageListProps
additionalMessageInputProps
- Adding missing types for prop
additionalFlatListProps
in 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
additionalFlatListProps
prop inMessageList
andChannelList
component - Changing prop-type for component type props to
elementType
instead offunc
- Disabling the long press on image viewer (in Attachment) - GetStream#100 to avoid freezing of UI.
- Fixing broken threads issue
- Support for
additionalFlatListProps
prop inMessageList
andChannelList
component - Changing prop-type for component type props to
elementType
instead offunc
- Adding support for customizing markdown styles - https://github.com/GetStream/stream-chat-react-native/pull/99/files#diff-ede54911d9164ea37e65e92f2e18cb91R56
- Removing
text
property theme withtextContainer
.
- Adding support for
onChannelTruncated
prop to ChannelList - Updating channel from channel list once
channel.truncated
event is received - Fixed image picker for native package and examples
- Adding support for
onChannelDeleted
prop to ChannelList - Removing channel from channel list once
channel.deleted
event 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
AttachmentFileIcon
prop.
- Adding support for
actionSheetStyles
prop, 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
typing
object - immutable - Adding support for
SendButton
UI 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
onChannelUpdated
as callback for eventchannel.updated
- Bug fix - Channel list component doesn't update when custom data on channel is updated.