Skip to content

Latest commit

 

History

History
1196 lines (805 loc) · 57.6 KB

CHANGELOG.md

File metadata and controls

1196 lines (805 loc) · 57.6 KB

Changelog

[3.4.0] (2021-05-14)

Features

  • 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

Bug fixes

  • Added default sizes to Icons in OverlayReactionList component. 6b4db5f
  • Miscellaneous fixes around image picker opening and closing 950f746 4845e4e

[3.3.2] (2021-04-13)

  • Allow re-rerendering of MessageInput component, on changes to additionalTextInputProps 1b95a64
  • Fixed Android camera permissions check 5b77516

[3.3.1] (2021-04-09)

  • Fixed supportedReactions prop support on OverlayReactions #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

[3.3.0] (2021-04-07)

New Features 🎉

  • 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 */
      }}
    />

🛑 BREAKING

  • Following props are no longer accessible on Input component (which is used to customize underlying input box). They should be accessed from MessageInputContext (or corresponding hook - useMessageInputContext)

    • openAttachmentPicker
    • closeAttachmentPicker
    • toggleAttachmentPicker
    • openCommandsPicker
    • openMentionsPicker
    • openFilePicker
  • Value typing (which is list of users who are typing), has been moved from ChannelContext to its own separate context - TypingContext c450719

Fixes

  • #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

[3.2.0] (2021-03-23)

🛑 BREAKING

  • Minimum required stream-chat version is 3.5.1.
  • Following values have been moved from MessagesContext a separate context - PaginatedMessageListContext
    • hasMore
    • messages
    • loadMore
    • loadMoreRecent
    • loadMoreThread
    • loadingMore
    • loadingMoreRecent

Non breaking:

Websocket and Push

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

Other

  • Allow use of Channel component with uninitialized channel
  • Allow custom config of i18next config
  • UI fixes and animation improvements for reactions

[3.1.2] (2021-03-17)

NO CODE CHANGE

Fixed version.json during package publishing, which we use to track the version of RN sdk through client.setUserAgent call

[3.1.1] (2021-03-17)

Fixed type definition pointers in package.json

[3.1.0] (2021-03-15)

  • 🛑 BREAKING: Removed a prop handleOnPress on Input 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 prop messageActions 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

[3.0.0] (2021-02-23)

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.

New features

  • 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.

Improvements

  • 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 via const customTheme: DeepPartial<Theme> = { message: { status: { ...customizations } } }. Please check our theme docs for more details.

Dependency changes:

Please find detailed docs about this release in our wiki

Note for Expo

  • 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.

[2.2.2] 2021-02-07

Handling the case of standlone Channel component (without ChannelList) on top of fix in v2.2.1 - ba7d744

[2.2.1] 2021-02-03

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

[2.2.0] 2021-02-02

  • Switched to react-native-markdown-package for markdown of message text #505

[2.1.4] 2021-01-29

Fixed broken re-send message functionality, upon failure b3c028f

[2.1.3] 2021-01-26

  • Fix markdown on message
  • Fixes issue with un-necessary queryChannels api call, when filters are provided as inline object 9f4528b

[2.1.2] 2021-01-09

  • Fixed infinite re-rendering issue on mentions suggestion box 5fd521a

[2.1.1] 2020-12-21

  • 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.

[2.1.0] 2020-12-07

Dependency changes

  • Bumping dependency to stream-chat@2.9.0

Fixes

  • Fixed plenty of issues around reload/refresh of channellist upon failures.
  • Fixing retry message functionality 7a423f7

New Props:

[2.0.2] 2020-11-16

  • 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

[2.0.1] 2020-11-16

  • 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

[2.0.0] 2020-10-29

Please check Upgrade Docs for upgrading from 0.x.x to 2.x.x

BREAKING CHANGES

Typescript

This library has been moved to full typescript. Please check Typescript doc for details

Component prop changes

Channel

  • add additionalKeyboardAvoidingViewProps prop to allow custom keyboard props

ChannelListMessenger

  • remove setActiveChannel prop

ChannelPreviewMessenger

  • renamed the latestMessage prop to latestMessagePreview. This name change is more semantic to what the prop does and reduces confusion with the lastMessage prop

MessageContent

  • removed retrySendMessage prop in favor of retrySendMessage within MessagesContext

MessageInput

  • remove parent prop to parent_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 the ChannelContext:

    • 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: access MessagesContext by const { messages } = useMessagesContext();).

[1.3.5] 2020-10-27

[1.3.4] 2020-10-13

  • Fixing keyboard glitch functionality for android a7f94b9

[1.3.3] 2020-10-05

  • Fixing retry upload functionality e89b87f

[1.3.2] 2020-10-02

  • 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

[1.3.1] 2020-09-29

No changes

[1.3.0] 2020-09-25

BREAKING CHANGES

MessageInput

  • 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 and ImageUploadPreview props to support custom overrides to those components

KeyboardCompatibleView and Channel component

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

ChannelList

  • 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 overrides notification.added_to_channel default
    • onChannelDeleted overrides channel.deleted default
    • onChannelHidden overrides channel.hidden default
    • onChannelTruncated overrides channel.truncated default
    • onChannelUpdated overrides channel.updated default
    • onMessageNew overrides notification.message_new default
    • onRemovedFromChannel overrides notification.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 the useState hook that sets the channels in the React Native FlatList
    • 2nd argument: event object returned by the StreamChat instance

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 or onMessageNew) are properly processed and update the list UI as expected.

FileUploadPreview

  • We fixed a bug for being unable to remove a file from the MessageInput and made it consistent to ImageUploadPreview
  • We have removed support for the fileUploadPreview.dismissText theme value
  • We have added support for fileUploadPreview.dismiss, fileUploadPreview.dismissImage, and fileUploadPreview.imageContainer theme values

MessageInput

  • 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 and ImageUploadPreview props to support custom overrides to those components

MessageSystem

  • Added formatDate prop to support custom date formatting

Deprecated Props

  • We have removed support for the MessageList component's onMessageTouch prop. Please use the onPress prop on the MessageSimple component to perform an action on touch of a message.

  • We have removed support for the Message component's readOnly prop. Please use the disabled value from the ChannelContext instead.

  • We renamed the latestMessage prop on the ChannelPreviewMessenger component to latestMessagePreview. This name change is more semantic to what the prop does and reduces confusion with the lastMessage prop.

  • We have also dropped support for the following MessageList props:

    • dateSeparator (use DateSeparator instead)
    • headerComponent (use HeaderComponent instead)

this Reference Removal

  • We have removed the this class component reference from the prop functions in MessageSimple. For example, if you wish to override the SDK's standard long press behavior on a message, the onLongPress function passed in to MessageSimple no longer takes the this component reference as it's first argument. The message and the event object become the first and second arguments, respectively.

renderText Function

  • The renderText function utilized in the MessageTextContainer component now accepts a single object containing markdownRules, markdownStyles, and message. Previously each value was a separate function parameter.

[1.2.0] 2020-08-21

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.

[1.1.1] 2020-08-03

[1.1.0] 2020-07-31

  • 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

[1.0.0] 2020-07-29

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:

  1. Functional components instead of class based components
  2. Static typing using typescript
  3. UI tests

We are going to incrementally implement these changes and will try to keep everything backwards compatible unless really necessary.

[0.15.2] 2020-07-29

  • Exporting AutoCompleteInput component d41d0d5

[0.15.1] 2020-07-29 (Bad release)

[0.15.0] 2020-07-27

  • 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

[0.14.0] 2020-07-16

  • Fixing compatibility issues with react-native 0.63 88721a0
  • Updating stream-chat to 0.13.x 4af1b1d

[0.13.1] 2020-07-14

  • 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

[0.13.0] 2020-07-08

  • 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

[0.12.4] 2020-06-30

  • Improving MessageInput component, to better handle the case of rapid typing 3fddf06
  • Fixing fallback avatar for MentionsItem component 159fcb8

[0.12.3 2020-06-17

  • Fixing enabled prop on KeyboardCompatibleView

[0.12.2] 2020-06-17

  • Fixing broken file upload functionality on android 2cb26e7

[0.12.1] 2020-06-16

  • Allow search for special characters in mentions autocomplete a2cb083

[0.12.0] 2020-06-15

  • 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.

[0.11.0] 2020-06-01

Non breaking changes

UX improvements of ChannelList component

IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE
  • So far we only had LoadingErrorIndicator (which can be customized using prop LoadingErrorIndicator). 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 HeaderErrorIndicator
    • HeaderNetworkDownIndicator{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 custom LoadingErrorIndicator 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.

[0.10.3] 2020-05-15

[0.10.2] 2020-04-29

  • Fixing crashes in KeyboardCompatibleView and better handling of AppState changes

  • Fixes with message component 2d21b19

    • Adding support for prop additionalTouchableProps in MessageSimple 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 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 and hasFilePicker props are false 7de46b5

  • Fixing custom reactions 5deea55

[0.10.1] 2020-04-15

  • Adding following theme keys 7ae43d4

    • messageInput.suggestions.command.args
    • messageInput.suggestions.command.description
  • Handling channel.hidden event in ChannelList component

  • Adding support for function prop onChannelHide on ChannelList

  • Avoid breaking markRead api call if channel is disconnected a1cfd96

  • Updating stream-chat version to 1.7.3

  • Fixing the error: [Unhandled promise rejection: TypeError: mimeType.startsWith is not a function. (In 'mimeType.startsWith('image/')', 'mimeType.startsWith' is undefined)] 451b2a4

[0.10.0] 2020-04-09

All the changes are non-breaking

  • Adding support for custom UI component prop - Input to MessageInput. 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 from hh:ssA, to allow i18n

  • Fixing pagination logic for ChannelList in case of duplicates

[0.9.2] 2020-04-04

NOTE Please make sure to use stream-chat@^1.7.0

  • Fixing moderator, owner, admin checks for message actions 80dfb86

[0.9.1] 2020-04-02

  • Adding support for following props on MessageInput component c5ada59

    • onChangeText
    • initialValue

[0.9.0] 2020-04-02

  • 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

Prop changes to components (non-breaking)

  • MessageSimple

    new props

    • MessageReplies UI component to override default 2 replies text/component
    • MessageHeader UI component to add some content on top of message content (text, attachments)
    • ReactionList UI component to override default ReactionList component
    • supportedReactions 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 of ReactionList without copy pasting lots of code regarding opening of ReactionPicker. 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 with ReactionPickerWrapper 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.

[0.9.0-rc.3] 2020-04-02

  • Fixing issue with MessageStatus not showing up on mount 61388c3

[0.9.0-rc.2] 2020-04-02

  • Moving external expo dependencies to peerDependencies

[0.9.0-rc.1] 2020-04-02

  • Disabling (disabling TouchableOpacity wrapper) SendButton if message is not valid (empty text and no attachments)
  • Syncing this rc with latest master (0.8.1)

[0.8.1] 2020-04-01

  • Disabling interactions with MessageList and MessageInput if channel is frozen. 2c4e1a2
  • Adding missing style to all our component in typescript a2ac0b4

[0.9.0-rc.0] 2020-03-31

Non-breaking changes

  • MessageSimple

    new props

    • MessageReplies UI component to override default 2 replies text/component
    • MessageHeader UI component to add some content on top of message content (text, attachments)
    • ReactionList UI component to override default ReactionList component
    • supportedReactions 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 of ReactionList without copy pasting lots of code regarding opening of ReactionPicker. 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 with ReactionPickerWrapper 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.

[0.8.0] 2020-03-30

  • Replacing momentjs with dayjs
  • Changes to Streami18n constructor options:
    • Breaking change: replacing momentLocaleConfigForLanguage with dayjsLocaleConfigForLanguage
    • deprecating Moment. Instead use DateTimeParser
  • Updating stream-chat to 1.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

[0.7.2] 2020-03-20

  • 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 and hideReactionOwners in MessageSimple component. 3814266
  • MessageInput and MessageList component as prop in Thread 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

[0.7.1] 2020-03-18

  • Adding support for custom moment object in Streami18n class 7557c70

[0.7.0] 2020-03-17

[0.6.6] 2020-02-20

  • 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

[0.6.5] 2020-02-04

  • Adding a simple check to see if lastReceivedId has changed, before updating the state - to avoid infinite loop 3da5e4a

[0.6.4] 2020-02-04

  • 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.

[0.6.3] 2020-01-29

  • Adding support for prop formatLatestMessageDate in ChannelPreviewMessenger component (9a8d9a3)
  • Adding support for prop latestMessageLength in ChannelPreviewMessenger 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 to MessageSimple component (c3cfdf6)
  • Adding style and text customization to LoadingIndicator (232241c)

[0.6.2] 2020-01-20

  • Added support for following props to Channel component:
    1. doSendMessageRequest c75be29
    2. doUpdateMessageRequest 7227c19

[0.6.1] 2020-01-14

  • When you change the filters prop on the ChannelList component this now we will refresh the channels with the new query

[0.6.0] 2020-01-07

  • 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 and onLongPress props on MessageSimple component
  • Fixing theme paths for MessageNotification component.

Breaking Change

  • Replacing theme path messageList.messageNotificationText with messageList.messageNotification.text (#3593dfb)
  • Replacing theme path messageList.messageNotification with messageList.messageNotification.container (#3593dfb)

[0.5.1] 2019-12-23

stream-chat-expo (Expo package)

  • Adding support for following props
    • additionalParentMessageProps
    • additionalMessageListProps
    • additionalMessageInputProps
  • Adding missing types for prop additionalFlatListProps in MessageList and ChannelList

stream-chat-react-native (Native package)

  • Adding support for following props
    • additionalParentMessageProps
    • additionalMessageListProps
    • additionalMessageInputProps
  • Adding missing types for prop additionalFlatListProps in MessageList and ChannelList

[0.5.0] 2019-12-23

stream-chat-expo (Expo package)

  • 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 in MessageList and ChannelList component
  • Changing prop-type for component type props to elementType instead of func

stream-chat-react-native (Native package)

  • Disabling the long press on image viewer (in Attachment) - GetStream#100 to avoid freezing of UI.
  • Fixing broken threads issue
  • Support for additionalFlatListProps prop in MessageList and ChannelList component
  • Changing prop-type for component type props to elementType instead of func

[0.4.0] 2019-12-16

[0.3.12] 2019-12-03

  • 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

[0.3.11] 2019-12-02

  • Adding support for onChannelDeleted prop to ChannelList
  • Removing channel from channel list once channel.deleted event is received

[0.3.10] 2019-11-28

  • Adding strict string type check for channel name
  • Updated example apps
  • Updated readme doc

[0.3.9] 2019-11-20

  • Showing TypingIndicatorContainer only when necessary

[0.3.8] 2019-11-06

  • Adding logs to Chat, ChannelList and Channel component
  • Optimizing MessageList and ChannelList component - GetStream#84

[0.3.7] 2019-11-04

  • Adding support for AttachmentFileIcon prop.

[0.3.6] 2019-11-04

  • Adding support for actionSheetStyles prop, so as to add more customization for styles of action sheet.

[0.3.5] 2019-10-28

  • Fixing some styles for action sheet in MessageSimple component.

[0.3.4] 2019-10-03

  • Avoiding query channel api call when there are no more messages to render
  • Making markRead api call only if unread count is > 0

[0.3.3] 2019-10-02

  • Making empty value of typing object - immutable
  • Adding support for SendButton UI component prop

[0.3.2] 2019-10-01

  • Fixing bug in themed HOC

[0.3.1] 2019-09-30

  • Adding typescript declaration file for expo and native package

[0.3.0] 2019-09-30

  • Adding typescript declaration file
  • Adding style customization support for action sheet

[0.2.6] 2019-09-23

  • Fixing expo package for NetInfo changes

[0.2.5] 2019-09-23

  • 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

[0.2.4] 2019-09-13

  • Fixing bug in theme logic
  • Adding ability to customize more the MessageSimple component

[0.2.3] 2019-09-09

  • Fixing pagination issue when oldest message is not received yet

[0.2.2] 2019-09-06

  • Updated example two to react native 0.60
  • Fixing UX for image/file picker - closing keyboard when you open file/image picker action sheet

[0.2.1] 2019-09-02

  • Making sdk compatible with Expo 33 and 34

[0.2.0] 2019-08-26

  • Making sdk compatible with react native 0.60

[0.1.19] 2019-08-26

  • Updating ChannelPreviewMessenger component to show other member's name as channel title if channel has no explicate name in channel.data

[0.1.18] 2019-08-12

  • Fixing keyboard compatible view for android. Status bar height was not taken into account while calculating the height of channel after opening keyboard.

[0.1.17] 2019-08-08

  • Fixing prop to override Attachment UI component

[0.1.16] 2019-08-07

  • Attachment for URL preview were broken. Fixed.

[0.1.15] 2019-07-18

  • Adding prop function onChannelUpdated as callback for event channel.updated
  • Bug fix - Channel list component doesn't update when custom data on channel is updated.