Releases: GetStream/stream-chat-react
v14.0.0-beta.6
14.0.0-beta.6 (2026-04-03)
β BREAKING CHANGES
- for existing code but changes the accepted values.
getGroupChannelDisplayInfo return value changed
The utility function getGroupChannelDisplayInfo (from
src/components/ChannelListItem/utils.tsx) no longer returns
overflowCount in its result object.
AvatarProps.size type widened to accept arbitrary strings
The size prop on AvatarProps changed from the union '2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | null to '2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | (string & {}) | null. This allows passing custom size strings
while preserving autocomplete for the known values.
GroupAvatarProps.size type widened to accept arbitrary strings
The size prop on GroupAvatarProps changed from '2xl' | 'xl' | 'lg' | null to '2xl' | 'xl' | 'lg' | (string & {}) | null. This allows
passing custom size strings while preserving autocomplete for the known
values.
New capLimit prop on AvatarStack
A new optional capLimit prop (type number, default 3) controls the
maximum number of avatars rendered before overflow. When displayInfo
has more entries than capLimit, only the first capLimit items are
shown and a "+N" badge displays the remainder.
GroupAvatarMember type gains optional id field
The GroupAvatarMember type now includes an optional id?: string
field. When present, it is used as the React key for rendered avatars
instead of the fallback ${userName}-${imageUrl}-${index} pattern.
Behavioral Changes
ChannelAvatar always renders via GroupAvatar internally
Previously, ChannelAvatar conditionally chose between <Avatar> (for
0β1 members) and <GroupAvatar> (for 2+ members). It now always
delegates to <GroupAvatar>, which itself renders a single <Avatar>
when fewer than 2 members are present. The visual output is unchanged,
but the component tree structure differs.
GroupAvatar auto-caps displayed members at 4 (or 2 with overflow)
Previously, callers controlled how many members to display and the
overflow count. Now GroupAvatar internally slices displayMembers:
- 4 or fewer members: all are rendered, no badge.
- More than 4 members: only the first 2 are rendered, with a "+N"
badge showing the count of remaining members.
AvatarStack auto-caps displayed items (default: 3, configurable
via capLimit)
Previously, callers controlled how many items to display and the
overflow count. Now AvatarStack internally slices displayInfo based
on the capLimit prop (default 3):
capLimitor fewer items: all are rendered, no badge.- More than
capLimititems: only the firstcapLimitare
rendered, with a "+N" badge showing the count of remaining items.
TypingIndicator no longer manually slices typing users
The TypingIndicator component previously sliced the list of typing
users to a maximum of 3 before passing to AvatarStack. It now passes
all typing users, relying on AvatarStack's internal capping (also at
3). The net visual result is unchanged.
chore
Bug Fixes
- examples: clean up tutorial examples for v14 (#3089) (6239895)
- examples: enable async voice recording preview in thread composer (#3092) (6c7cd42)
- examples: fix resize handle alignment and thread border gap in RTL (#3091) (2f060ae)
- Icons, RTL: update icon catalog, RTL layout fixes, dark mode & thread voice recording (#3090) (a4b1c26), closes #3080
v14.0.0-beta.5
14.0.0-beta.5 (2026-03-31)
Bug Fixes
- assorted UI/UX fixes (Giphy, polls, dialogs, composer, headers) (#3081) (6c06e04)
- close CSS gaps, fix ChannelList dialog portal, and clean up icons (#3079) (a47981f)
- Icons: sync icon catalog with refreshed Line SVGs (#3080) (9472f7b)
- MessageList: set width on message list scroll container (#3077) (3f09362)
- post-review
MessageReactionsDetailadjustments (#3082) (a82bdcb) - use link icon for link-type attachments (#3083) (241209e)
Features
v14.0.0-beta.4
14.0.0-beta.4 (2026-03-30)
β BREAKING CHANGES
- Importing styles from
stream-chat-react/dist/css/v2/*
would no longer work, import fromstream-chat-react/dist/css/*
instead.
Bug Fixes
Features
v14.0.0-beta.3
Released: 2026-03-27
Diff: v14.0.0-beta.2...v14.0.0-beta.3
Full breaking changes reference: breaking-changes.md
Bug Fixes
- align message reactions vertically to the center of the message list (#3064) (55dd2e8)
- increase message list width (f81cae4)
- increase message list width (#3062) (fdf0e15)
- keep MessageList scrolled to the bottom (#3068) (91eba1b)
- reliably detect whether the click originated inside before closing mobile nav (#3061) (8d25ead)
- remove bottom padding from poll option with votes in poll results (#3059) (a55774d)
Features
v14.0.0-beta.2
Released: 2026-03-25
Diff: v14.0.0-beta.1...v14.0.0-beta.2
Full breaking changes reference: breaking-changes.md
β Breaking Changes
Removed Components
ActionsIcon,ReactionIcon,ThreadIcon,MessageErrorIconβ removed (#3050) (f4caa0e)MessageErrorTextβ removed (#3042) (e0207cd)
CSS Class Renames
| Old | New |
|---|---|
str-chat__message-error-icon |
str-chat__message-error-indicator |
Behavioral Changes
handleDeleteinMessageContextnow re-throws errors instead of swallowing them. (#3042) (e0207cd)- Users can no longer mark their own messages as unread. (#3043) (fe05b62)
β¨ Features
- Redesigned message actions icons and message error badge (#3050) (f4caa0e)
- Shared gallery preview in
AttachmentPreviewList(#3044) (f05f47d) - "Voice message deleted" notification (#3045) (9982c45)
- Prevent marking own messages as unread (#3043) (fe05b62)
π Bug Fixes
- Adjust message UI for network error when sending a message (#3042) (e0207cd)
- Calculate message read status for the first message in a channel (ported from v13) (#3056) (b7c33c8)
- Clear message composer on unmount (#3053) (f2a79ab)
- Prevent empty message composer textarea from growing (#3051) (880d12d)
- Align textarea placeholder and text with surroundings (#3052) (da293f0)
- Keep command menu distance constant from the invoking button (#3049) (960c1f9)
- Prevent poll options layout shifting upon voting (#3048) (cdaf480)
- Allow
useNotificationTargetto return undefined (#3046) (38b278e)
v13.14.3
v14.0.0-beta.1
v14.0.0-beta.1 (2026-03-23)
Migration guide: Upgrade to v14
Full breaking changes reference: breaking-changes.md
β Breaking Changes
Removed Components & Hooks
ChannelSearchβ useSearchinstead (#3014) (9a7b7a2)Modalβ useGlobalModalinsteadFixedHeightMessageβ removed entirelyMessageDeletedβ replaced byMessageDeletedBubble(rendered within the message bubble) (#2964) (446de99)MessageActionsWrapperβ droppedMessageOptions,CustomMessageActions,CustomMessageActionsList,MessageActionsBoxβ useMessageActionsinstead (#2932) (1d28279)RemindMeActionButtonβ removedQuotedPollcomponent andisQuotedprop fromPollβ removedMessageEditedTimestampβ removed (7cbe67e), replaced byMessageEditedIndicator(#3019) (7e9637a)MessageIsThreadReplyInChannelButtonIndicatorβ replaced byMessageAlsoSentInChannelIndicator(#2968) (b198029)MessageListNotificationsβ replaced byNotificationList(#3028) (e06ec62)useAudioControllerhook β migrate touseAudioPlayer(#3016) (35f8a5d)- Icons removed:
PauseIcon,PlayTriangleIcon,GeolocationIcon
Removed HOC Wrappers
All legacy higher-order context wrappers have been removed in favor of hooks (#2962) (e0cd4f2):
withChannelActionContextwithChannelStateContextwithChatContextwithComponentContextwithMessageContextwithTranslationContextwithTypingContext
Provider/hook APIs (*Provider and use*Context) remain unchanged. Helper src/context/utils/getDisplayName.ts also deleted.
Component API Changes
Channelβ no longer supports component overrides directly; useWithComponentsinstead. (#2904) (cd6001f)Avatarβ removeduserprop;imagerenamed toimageUrl;namerenamed touserName. (#2926) (2eb04ee)ReactionSelectorβ removed props:Avatar,detailedView,latest_reactions,reaction_counts,reaction_groups,reactionOptions,reverse. (#2916) (24a1169)VirtualMessageβ props changed fromFixedHeightMessagePropstoMessageUIComponentProps.MessageContextValue['handleDelete']β signature changed.MessagePropsβ removedendOfGroup,firstOfGroup, andgroupedByUser(usegroupStylesinstead).DropdownPropsβ replacedopenButtonPropswithTriggerComponent; removeddialogId.BaseImageβ now usesImageFallbackcomponent instead of CSS mask for error fallback.GroupAvatarβ renders a singleAvatarwithout wrappers whengroupChannelDisplayInfohas one entry. (#2930) (e307882)useChannelPreviewInfoβgroupChannelDisplayInfois now always defined. For 1:1 or β€2 members it returns{ members: [], overflowCount: undefined }.addNotification(fromChannelStateContext) β replaced byclient.notificationsAPI. (#3018) (83dec93)NotificationListβ moved; new parent isMessageListMainPanel.isOnlyEmojisutility β replaced bymessageTextHasEmojisOnly.handleSubmitβ removedcustomMessageDatafrom type declaration. (#2950) (fc547be)
Renamed Components
| Old Name | New Name |
|---|---|
MessageNotification |
NewMessageNotification |
ScrollToBottomButton |
ScrollToLatestMessageButton |
ReactionsListModal |
MessageReactionsDetail |
MessageDeleted |
MessageDeletedBubble |
ChannelListMessenger |
ChannelListUI (#3036) (d251338) |
MessageListNotifications / MessageListNotificationsProps |
NotificationList / NotificationListProps |
See also: (#3030) (a563248), (#3035) (7c978a9)
CSS Class Renames
Channel preview classes β all str-chat__channel-preview* renamed to str-chat__channel-list-item*:
| Old | New |
|---|---|
str-chat__channel-preview-container |
str-chat__channel-list-item-container |
Message classes:
| Old | New |
|---|---|
str-chat__message-input-cooldown |
str-chat__message-composer-cooldown |
str-chat__message-simple-name |
str-chat__message-metadata__name |
str-chat__message-simple-timestamp |
str-chat__message-metadata__timestamp |
str-chat__simple-message--error-failed |
str-chat__message-inner--error |
str-chat__channel-header-end |
str-chat__channel-header__data |
Reaction classes:
| Old | New |
|---|---|
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 |
Removed classes (no replacement):
str-chat__message-simple,str-chat__message-simple--mestr-chat__message-reactions-containerstr-chat__reaction-list--reversestr-chat__message-reaction-ownstr-chat__avatar--single,str-chat__avatar-group--three-partstr-chat_modal-inner- All
--str-chat__jump-to-latest-message-*CSS variables - All
--str-chat__message-bounce-*CSS variables
Other Breaking UI Changes
MessageReactionsDetailnow renders in a dialog instead of a modal. (#2963) (a941ed2)MessageActionsnow uses general-purposeContextMenucomponents. (#2932) (1d28279)- Suggestion list and items re-implemented with the new
ContextMenuAPI (markup changed). (#2931) (f151abc) str-chat__message-composer-containernow wraps the message composer.- Date separator no longer contains separation lines.
- Image/giphy attachments now rendered with
ModalGallery. (#2936) (a52de09) - Gallery assets must use the new
GalleryItemtype. - Removed support for
"live"label andchannel.data.subtitledisplay. ScrollToLatestMessageButtonintroduced by default in message list (with new markup).UnreadMessagesSeparatormarkup changed.
β¨ Features
Design System & Theming
- Dark theme support (#3002) ([fbe28d0](https://git...