Releases: GetStream/stream-chat-react
v14.4.1
v14.4.0
14.4.0 (2026-06-05)
Bug Fixes
- compat: restore React 17/18 compatibility in certain components (#3197) (b513b69)
- general performance and bug fixes (#3201) (57c5795)
- interop: unwrap CJS default exports (react-player, @emoji-mart/react) (#3199) (4cddb02)
- maintain topmost modal non-inert (#3206) (7ad98fa)
Features
- allow to stack modals on top of each other (#3203) (4c934ae)
- display notifications above modals (#3200) (0433090)
- Reactions: send emoji_code with reactions for push notification rendering (#3209) (2faa620)
Performance Improvements
v14.3.0
v14.2.0
14.2.0 (2026-05-11)
Bug Fixes
- allow content overflow in generic Button (#3167) (6735fa1)
- Avatar: fall back to initials when imageUrl is an empty string (#3168) (541eef8)
- Channel: respect false shouldGenerateVideoThumbnail prop (#3184) (340af2b)
- decouple modern-normalize from the SDK (#3180) (bcaf1f6), closes #3134
- extended reactions button adjustments (#3172) (5259c17)
- prevent messages being squashed in narrow message lists (#3153) (a1cc63f)
- prevent overriding active channel UI on ChannelList pagination error (#3164) (0c0d65c)
- remove visual glitches in ModalGallery, placeholder color, borders (#3178) (32dcace)
Features
- a11y: announce message bubble text with context (#3177) (16f7294)
- a11y: make ChannelListItemActionButtons accessible with keyboard (#3176) (8a6b90c)
- add authorLabel prop to QuotedMessagePreviewUIProps (#3162) (88ef71e)
- add matchReferenceWidth to DropdownProps (#3166) (cef7fa5)
- add pin icon to the ChannelListItemUI (#3163) (f37f0a9)
- add snackbar notification upon channels query pagination failure (#3179) (1028763)
- clear command mode in message composer using keyboard (#3175) (6257e17)
- introduce selective command enablement based on message editing or quoting in message composer (#3171) (8fa096a)
v14.1.0
14.1.0 (2026-05-04)
Bug Fixes
- add ScrollToLatestMessageButton to ComponentContext (#3159) (952c125)
- allow user blocking only in DM-type channels (#3139) (deda536)
- decouple msg bubble width from reaction list width (#3142) (980c233)
- export AttachmentSelectorContext from the SDK (#3158) (68efeb5)
- font & box shadow fixes (#3135) (6d04cdf), closes #3134
- limit reactions host width (segmented/bottom) (#3154) (be50105)
- make search results scrollable (#3152) (ead6cb5)
- MessageList: prevent message pagination too early on mount (#3143) (12e282f)
- prevent cutting off button outlines in ContextMenu components (#3151) (b3469f0)
- remove scrollbar gutters from VML (#3148) (4a6a8ae)
Features
- a11y: improve accessibility across dialogs, forms, menus, media, and focus flows (#3146) (917b7f5)
- change textarea default placeholder text (#3150) (45b1836)
- introduce
MessageUItoComponentContext(#3140) (16af18d)
Refactors
v13.14.5
v14.0.1
v13.14.4
v14.0.0
Released: 2026-04-16 Β· Full diff Β· Migration guide
A full visual and architectural refresh of the SDK. This release brings a redesigned component system, new message composer, overhauled theming, and a cleaner customization model β alongside significant breaking changes to component APIs, CSS class names, and context wrappers.
β οΈ Breaking Changes
Resources for migrating:
- π Human-readable migration guide β step-by-step with code examples
- π€
ai-docs/breaking-changes.mdβ machine-readable summary of all breaking changes, intended for use with AI coding assistants (Copilot, Cursor, Claude, etc.)
π€ai-docs/ai-migration.md- Coding Agents-optimized migration plan.
Component & Import Renames
| v13 | v14 |
|---|---|
MessageInput |
MessageComposer |
MessageInputFlat |
MessageComposerUI |
MessageInputContext |
MessageComposerContext |
useMessageInputContext |
useMessageComposerContext |
MessageOptions |
MessageActions |
MessageDeleted |
MessageDeletedBubble |
MessageNotification |
NewMessageNotification |
ScrollToBottomButton |
ScrollToLatestMessageButton |
ReactionsListModal |
MessageReactionsDetail |
ChannelListMessenger |
ChannelListUI |
ChannelPreview |
ChannelListItem |
ChannelPreviewMessenger |
ChannelListItemUI |
ChannelSearch |
Search (now stable, main entrypoint) |
Modal |
GlobalModal |
UploadButton |
FileInput |
MessageIsThreadReplyInChannelButtonIndicator |
MessageAlsoSentInChannelIndicator |
MessageListNotifications |
NotificationList |
isOnlyEmojis |
messageTextHasEmojisOnly |
useAudioController |
useAudioPlayer |
Removed entirely (no replacement via rename): FixedHeightMessage, EditMessageForm, EditMessageModal, MessageActionsBox, MessageActionsWrapper, CustomMessageActionsList, QuotedPoll, ButtonWithSubmenu, ConnectionStatus, MessageErrorText, RemindMeActionButton. See the migration guide for recommended alternatives.
Removed icon exports: ActionsIcon, ReactionIcon, ThreadIcon, MessageErrorIcon, PauseIcon, PlayTriangleIcon, GeolocationIcon, CloseIcon, SendIcon, MicIcon. Migrate to the public Icons set or higher-level components such as MessageActions, SendButton, and MessageStatus.
MessageActions and Search are no longer exported from stream-chat-react/experimental. Import from the main package:
import { MessageActions, Search } from 'stream-chat-react';UI Overrides: Channel β WithComponents
Channelno longer accepts component override props. Move all overrides to<WithComponents overrides={{...}}>.ChannelListdirect override props removed:List,Preview,Avatar,LoadingIndicator,LoadingErrorIndicator. UseWithComponentsfor all of these.- The
with*ContextHOC wrappers have been removed:withChannelActionContext,withChannelStateContext,withChatContext,withComponentContext,withMessageContext,withTranslationContext,withTypingContext. Useuse*Contexthooks inside function components instead. Channelnow rendersEmptyStateIndicatorby default when no channel is active. PassEmptyPlaceholder={null}to restore the old blank behavior.ChannelList.additionalChannelSearchPropsand theChannelList.ChannelSearchoverride prop were removed. Customize search viaWithComponentswithSearch,SearchBar, orSearchResults.
Message, Actions & Notifications
handleDeletesignature changed from(event, options?)to(options?). It now rethrows server-side failures β wrap intry/catchin custom delete buttons.onlySenderCanEditremoved fromMessageProps. Editability follows channel capabilities; filtereditout of yourmessageActionSetfor custom restrictions.- Notification callback props removed from
Message:getDeleteMessageErrorNotification,getFetchReactionsErrorNotification,getFlagMessageErrorNotification,getMuteUserSuccessNotification, and others. Use notification translators inStreami18noruseNotificationApi(). customMessageActionsremoved fromMessageContext,Message,MessageList, andVirtualizedMessageList. UsemessageActionSetandMessageActions.- Own messages can no longer be marked unread, even when the channel has the
read-eventscapability. MessageEditedTimestampremoved. UseMessageEditedIndicator, or render your ownTimestampagainstmessage.message_text_updated_at.MessageTimestampnow defaults to time-only formatting (HH:mm). Override viaStreami18nor provide a customMessageTimestampfor the old calendar-style output.- Edit-message flow no longer uses
EditMessageForm/EditMessageModal. Start editing withmessageComposer.initState({ composition: message }), cancel withmessageComposer.clear(). MessagePropsno longer injectsendOfGroup,firstOfGroup, orgroupedByUseras props. Read them fromuseMessageContext()inside your custom component.- The order of actions in
MessageActionshas changed. Define your ownmessageActionSetexplicitly if your UX depends on a stable action order.
Message Composer (formerly MessageInput)
additionalMessageInputPropsβadditionalMessageComposerPropshandleSubmitnow accepts only an optional event. ThecustomMessageDataandSendMessageOptionsarguments were removed. Use composer middleware ormessageComposer.customDataManagerinstead.- The default textarea now grows up to 10 rows (was 1). Pass
maxRows={1}to restore single-line behavior. QuotedMessagePreviewHeaderremoved. Customize the full quoted preview throughQuotedMessagePrevieworQuotedMessagePreviewUI.- Voice recordings moved out of
AttachmentPreviewListinto a dedicatedVoiceRecordingPreviewSlot. - The
EmojiPickerplugin now requires a separate stylesheet import:import 'stream-chat-react/dist/css/emoji-picker.css';
str-chat__message-composer-containernow wraps the full message composer area.
Avatar, Gallery & Attachments
Avatarprops renamed:imageβimageUrl,nameβuserName. Theuserprop was removed.sizenow accepts arbitrary strings.ChannelAvatar/GroupAvatar: usedisplayMembersinstead ofgroupChannelDisplayInfo.GroupAvatarnow auto-caps displayed members at 4 (or 2 with an overflow badge) β callers no longer control slicing.AvatarStack: newcapLimitprop (default3) controls overflow. Previously callers managed slicing manually.AttachmentProps.GalleryβAttachmentProps.ModalGallery. The oldGallerycomponent is now a carousel provider; useModalGalleryfor the thumbnail-grid-plus-viewer behavior.ModalGallery: migrate from theimages/indexAPI to theitems-based API. Gallery payloads changed fromimagestoitemsof typeGalleryItem.FileIcon:filenameβfileName;big,size,sizeSmall,typeremoved;mimeTypeToIcon(type, mimeType)βmimeTypeToIcon(mimeType?).ReactionSelector: propsAvatar,detailedView,latest_reactions,reaction_counts,reaction_groups,reactionOptions, andreverseremoved.BaseImagenow uses theImageFallbackcomponent (instead of a CSS mask) to display fallbacks on error.
CSS Classes & Stylesheet
CSS import path: stream-chat-react/dist/css/v2/* is no longer valid. Use stream-chat-react/dist/css/* instead.
Removed CSS variables: --str-chat__message-bounce-*, --str-chat__jump-to-latest-message-*
| Old class | New class |
|---|---|
str-chat__channel-preview* |
str-chat__channel-list-item* |
str-chat__channel-preview-container |
str-chat__channel-list-item-container |
str-chat__message-input-cooldown |
str-chat__message-composer-cooldown |
str-chat__message-simple-name |
str-chat__message-metadata__name |
str-chat__simple-message--error-failed |
str-chat__message-inner--error |
str-chat__message-simple-timestamp |
str-chat__message-metadata__timestamp |
str-chat__message-error-icon |
str-chat__message-error-indicator |
str-chat__reaction-list |
str-chat__message-reactions |
str-chat__message-reactions |
str-chat__message-reactions__list |
str-chat__message-reaction |
str-chat__message-reactions__list-item |
str-chat__message-reaction-emoji |
str-chat__message-reactions__item-icon |
str-chat__message-reaction-count |
str-chat__message-reactions__item-count |
str-chat__reaction-list--counter |
str-chat__message-reactions__total-count |
str-chat__channel-list-messenger |
str-chat__channel-list-inner |
str-chat__channel-header-end |
str-chat__channel-header__data |
str-chat__message-reactions-container |
(removed) |
str-chat__reaction-list--reverse |
(removed) |
str-chat__message-reaction-own |
(removed) |
str-chat__message-simple (root) |
(removed from MessageUI) |
str-chat__avatar--single |
(removed) |
str-chat__avatar-group--three-part |
(removed) |
Sidebar, Polls, Dialogs & Misc
- Sidebar state is now app-owned. The
initialNavOpenprop andnavOpen/openMobileNav/closeMobileNavfromuseChatContext()have been removed. Manage sidebar state in your own app and inject toggle UI via `HeaderStartCont...
v14.0.0-beta.8
14.0.0-beta.8 (2026-04-16)
Bug Fixes
- dialog: prevent outside-click from other dialog managers closing active dialogs (#3112) (233ec89)
- MessageUI: use isDeleted as a flag to determine message deletion (#3113) (f95f287)
- prevent hiding floating date separator in message lists (#3119) (397fadd)
- remove UI issues in poll related components (#3118) (d7870bb)
- unify what is considered a deleted message across the components (#3117) (20b4022)