Skip to content

Commit 1af4b5d

Browse files
Merge branch 'master' into refactor/remove-deprecated-apis
2 parents 19be5ab + 30e45fa commit 1af4b5d

File tree

68 files changed

+990
-644
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+990
-644
lines changed

CHANGELOG.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,88 @@
1+
## [14.0.0-beta.6](https://github.com/GetStream/stream-chat-react/compare/v14.0.0-beta.5...v14.0.0-beta.6) (2026-04-03)
2+
3+
### ⚠ BREAKING CHANGES
4+
5+
* for existing code but changes the accepted values.
6+
7+
### `getGroupChannelDisplayInfo` return value changed
8+
9+
The utility function `getGroupChannelDisplayInfo` (from
10+
`src/components/ChannelListItem/utils.tsx`) no longer returns
11+
`overflowCount` in its result object.
12+
13+
### `AvatarProps.size` type widened to accept arbitrary strings
14+
15+
The `size` prop on `AvatarProps` changed from the union `'2xl' | 'xl' |
16+
'lg' | 'md' | 'sm' | 'xs' | null` to `'2xl' | 'xl' | 'lg' | 'md' | 'sm'
17+
| 'xs' | (string & {}) | null`. This allows passing custom size strings
18+
while preserving autocomplete for the known values.
19+
20+
### `GroupAvatarProps.size` type widened to accept arbitrary strings
21+
22+
The `size` prop on `GroupAvatarProps` changed from `'2xl' | 'xl' | 'lg'
23+
| null` to `'2xl' | 'xl' | 'lg' | (string & {}) | null`. This allows
24+
passing custom size strings while preserving autocomplete for the known
25+
values.
26+
27+
### New `capLimit` prop on `AvatarStack`
28+
29+
A new optional `capLimit` prop (type `number`, default `3`) controls the
30+
maximum number of avatars rendered before overflow. When `displayInfo`
31+
has more entries than `capLimit`, only the first `capLimit` items are
32+
shown and a "+N" badge displays the remainder.
33+
34+
### `GroupAvatarMember` type gains optional `id` field
35+
36+
The `GroupAvatarMember` type now includes an optional `id?: string`
37+
field. When present, it is used as the React `key` for rendered avatars
38+
instead of the fallback `${userName}-${imageUrl}-${index}` pattern.
39+
40+
## Behavioral Changes
41+
42+
### `ChannelAvatar` always renders via `GroupAvatar` internally
43+
44+
Previously, `ChannelAvatar` conditionally chose between `<Avatar>` (for
45+
0–1 members) and `<GroupAvatar>` (for 2+ members). It now always
46+
delegates to `<GroupAvatar>`, which itself renders a single `<Avatar>`
47+
when fewer than 2 members are present. The visual output is unchanged,
48+
but the component tree structure differs.
49+
50+
### `GroupAvatar` auto-caps displayed members at 4 (or 2 with overflow)
51+
52+
Previously, callers controlled how many members to display and the
53+
overflow count. Now `GroupAvatar` internally slices `displayMembers`:
54+
- **4 or fewer members:** all are rendered, no badge.
55+
- **More than 4 members:** only the first 2 are rendered, with a "+N"
56+
badge showing the count of remaining members.
57+
58+
### `AvatarStack` auto-caps displayed items (default: 3, configurable
59+
via `capLimit`)
60+
61+
Previously, callers controlled how many items to display and the
62+
overflow count. Now `AvatarStack` internally slices `displayInfo` based
63+
on the `capLimit` prop (default `3`):
64+
- **`capLimit` or fewer items:** all are rendered, no badge.
65+
- **More than `capLimit` items:** only the first `capLimit` are
66+
rendered, with a "+N" badge showing the count of remaining items.
67+
68+
### `TypingIndicator` no longer manually slices typing users
69+
70+
The `TypingIndicator` component previously sliced the list of typing
71+
users to a maximum of 3 before passing to `AvatarStack`. It now passes
72+
all typing users, relying on `AvatarStack`'s internal capping (also at
73+
3). The net visual result is unchanged.
74+
75+
### chore
76+
77+
* adjustmens to Avatar, GroupAvatar and ChannelAvatar ([#3087](https://github.com/GetStream/stream-chat-react/issues/3087)) ([49d576e](https://github.com/GetStream/stream-chat-react/commit/49d576e4a710472f797cd11feb3c562ebd36651b))
78+
79+
### Bug Fixes
80+
81+
* **examples:** clean up tutorial examples for v14 ([#3089](https://github.com/GetStream/stream-chat-react/issues/3089)) ([6239895](https://github.com/GetStream/stream-chat-react/commit/623989574afdaf250225f62e0627478ebb48e473))
82+
* **examples:** enable async voice recording preview in thread composer ([#3092](https://github.com/GetStream/stream-chat-react/issues/3092)) ([6c7cd42](https://github.com/GetStream/stream-chat-react/commit/6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee))
83+
* **examples:** fix resize handle alignment and thread border gap in RTL ([#3091](https://github.com/GetStream/stream-chat-react/issues/3091)) ([2f060ae](https://github.com/GetStream/stream-chat-react/commit/2f060ae8979de5df77148c591785db730c6f533c))
84+
* **Icons, RTL:** update icon catalog, RTL layout fixes, dark mode & thread voice recording ([#3090](https://github.com/GetStream/stream-chat-react/issues/3090)) ([a4b1c26](https://github.com/GetStream/stream-chat-react/commit/a4b1c2662400f084c3d97f07457012928edf6885)), closes [#3080](https://github.com/GetStream/stream-chat-react/issues/3080)
85+
186
## [14.0.0-beta.5](https://github.com/GetStream/stream-chat-react/compare/v14.0.0-beta.4...v14.0.0-beta.5) (2026-03-31)
287

388
### Bug Fixes

ai-docs/breaking-changes.md

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# React v14 Breaking Changes
22

3-
Last updated: 2026-03-31
3+
Last updated: 2026-04-03
44

55
## Scope
66

@@ -13,8 +13,8 @@ This file tracks confirmed v13 to v14 breaking changes for `stream-chat-react`.
1313
## Audit Reference
1414

1515
- Baseline tag: `v13.14.2`
16-
- Current audited SDK head: `241209e8059ce767fe5bc3500466aa73f53618e3` (`241209e8`, `2026-03-31`, `fix: use link icon for link-type attachments (#3083)`)
17-
- Future mining starting point: diff `241209e8059ce767fe5bc3500466aa73f53618e3..HEAD` first, then compare any newly confirmed changes back to the original v13 baseline before adding them here
16+
- Current audited SDK head: `6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee` (`6c7cd42a`, `2026-04-03`, `fix(examples): enable async voice recording preview in thread composer (#3092)`)
17+
- Future mining starting point: diff `6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee..HEAD` first, then compare any newly confirmed changes back to the original v13 baseline before adding them here
1818

1919
Only confirmed items should move from this file into the migration guide.
2020

@@ -647,9 +647,9 @@ Only confirmed items should move from this file into the migration guide.
647647
- `v13.14.2:src/components/ChannelPreview/hooks/useChannelPreviewInfo.ts:46` returned `groupChannelDisplayInfo` as the nullable result of `getGroupChannelDisplayInfo(channel)`
648648
- New API:
649649
- `src/components/Avatar/Avatar.tsx:10` `AvatarProps` now expose `imageUrl`, `userName`, `isOnline`, and required `size`
650-
- `src/components/Avatar/ChannelAvatar.tsx:7` `ChannelAvatarProps` now expose `displayMembers`, `overflowCount`, and required `size`
651-
- `src/components/Avatar/GroupAvatar.tsx:10` `GroupAvatarProps` now expose `displayMembers`, `overflowCount`, `size`, and `isOnline`
652-
- `src/components/ChannelListItem/utils.tsx:116` types `GroupChannelDisplayInfo` as `{ members, overflowCount }`
650+
- `src/components/Avatar/ChannelAvatar.tsx:6` `ChannelAvatarProps` are now `Partial<Omit<GroupAvatarProps & AvatarProps, 'size'>> & { size: GroupAvatarProps['size'] | AvatarProps['size'] }`
651+
- `src/components/Avatar/GroupAvatar.tsx:12` `GroupAvatarProps` now expose `displayMembers`, `size`, and `isOnline`
652+
- `src/components/ChannelListItem/utils.tsx:139` through `:149` now return `{ members }` from `getGroupChannelDisplayInfo(channel)`
653653
- `src/components/ChannelListItem/utils.tsx:125` exports `getChannelDisplayImage`
654654
- `src/components/ChannelListItem/hooks/index.ts:1` exports `useChannelDisplayName`
655655
- `src/components/ChannelListItem/hooks/useChannelDisplayName.ts:8` through `:10` synthesize DM labels and group titles from up to two member names
@@ -658,14 +658,12 @@ Only confirmed items should move from this file into the migration guide.
658658
- Replacement:
659659
- rename avatar props from `image` / `name` to `imageUrl` / `userName`
660660
- supply the new required `size` prop when rendering SDK avatars directly
661-
- migrate group avatar data from `groupChannelDisplayInfo` to `displayMembers` plus optional `overflowCount`
661+
- migrate group avatar data from `groupChannelDisplayInfo` to `displayMembers`
662662
- replace `getDisplayImage` with `getChannelDisplayImage`
663663
- replace `getDisplayTitle` with `useChannelDisplayName()` or `useChannelPreviewInfo()`, depending on whether the caller is already inside React
664664
- update any `useChannelPreviewInfo()` checks that previously depended on `groupChannelDisplayInfo` being `null` or `undefined`
665665
- if you need the old DM-image fallback in custom preview code, prefer `getChannelDisplayImage(channel)` over `channel.getDisplayImage()`
666666
- Evidence:
667-
- current `ChannelHeader` passes `displayMembers`, `imageUrl`, `overflowCount`, `size`, and `userName` into `ChannelAvatar`
668-
- current `GroupAvatar` renders a `+N` badge from `overflowCount` instead of the old three-part/four-part array-only logic
669667
- current package exports no `getDisplayTitle` or `getDisplayImage`
670668
- current `useChannelPreviewInfo()` normalizes empty/non-group state to `{ members: [], overflowCount: undefined }`
671669
- current `useChannelDisplayName()` adds synthesized DM/group title behavior that did not exist in the old helper pair
@@ -675,6 +673,7 @@ Only confirmed items should move from this file into the migration guide.
675673
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/08-message/08-avatar.md`
676674
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/05-channel-list/04-channel_preview_ui.md`
677675
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/02-channel-list/01-channel_list_preview.md`
676+
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/09-channel_header.md`
678677
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/10-thread_header.md`
679678
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/05-message-input/06-suggestion_list.md`
680679
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/04-message/06-system_message.md`
@@ -810,8 +809,6 @@ Only confirmed items should move from this file into the migration guide.
810809
- User impact:
811810
- imports using the removed helper utilities or standalone status/input icons no longer compile
812811
- low-level customization patterns built on those exports need to move to the new `Icons` set, newer helper names, or higher-level components
813-
- imports using the older pre-Phosphor icon constant names no longer compile
814-
- custom CSS and snapshots that targeted icon-specific auto classes can break after the icon-catalog refresh
815812
- Confirmed removed exports:
816813
- `ActionsIcon`
817814
- `CloseIcon`
@@ -829,20 +826,6 @@ Only confirmed items should move from this file into the migration guide.
829826
- `ThreadIcon`
830827
- `MessageErrorIcon`
831828
- `attachmentTypeIconMap`
832-
- Confirmed renamed exports:
833-
- `IconTrashBin` -> `IconDelete`
834-
- `IconPaperPlane` -> `IconSend`
835-
- `IconCrossMedium` -> `IconXmark`
836-
- `IconMicrophone` -> `IconVoice`
837-
- `IconBookmark` -> `IconSave`
838-
- `IconBubbles` -> `IconMessageBubbles`
839-
- `IconBubble2ChatMessage` -> `IconMessageBubble`
840-
- `IconBubbleText6ChatMessage` -> `IconThread`
841-
- `IconLoadingCircle` -> `IconLoading`
842-
- `IconPlaySolid` -> `IconPlayFill`
843-
- `IconPause` -> `IconPauseFill`
844-
- `IconLayoutAlignLeft` -> `IconSidebar`
845-
- `IconThunder` -> `IconBolt`
846829
- Old API evidence:
847830
- `v13.14.2:src/components/Message/icons.tsx:7` exported `ActionsIcon`
848831
- `v13.14.2:src/components/MessageInput/icons.tsx:67` exported `CloseIcon`
@@ -855,25 +838,21 @@ Only confirmed items should move from this file into the migration guide.
855838
- `v13.14.2:src/components/Message/icons.tsx:77` and `:92` exported `MessageSentIcon` and `MessageDeliveredIcon`
856839
- `v13.14.2:src/components/Message/icons.tsx:108` exported `MessageErrorIcon`
857840
- `v13.14.2:src/components/Threads/ThreadList/ThreadListItemUI.tsx:25` exported `attachmentTypeIconMap`
858-
- `f06846da:src/components/Icons/icons.tsx` still exported the older icon constant names such as `IconCrossMedium`, `IconPaperPlane`, `IconLayoutAlignLeft`, and `IconThunder`
859841
- New API evidence:
860842
- `src/components/Message/utils.tsx:431` exports `countEmojis`
861843
- `src/components/Message/utils.tsx:436` exports `messageTextHasEmojisOnly`
862844
- `src/components/index.ts:21` exports the shared `Icons` set
863-
- `src/components/Icons/icons.tsx:408`, `:577`, `:626`, `:651`, `:831`, and `:849` now export `IconXmark`, `IconSidebar`, `IconVoice`, `IconSend`, `IconBolt`, and `IconDelete`
864845
- `src/components/Message/MessageStatus.tsx:122` and `:138` render `IconCheckmark1Small` and `IconDoubleCheckmark1Small`
865846
- `src/components/Threads/ThreadList/ThreadListItemUI.tsx:14` now builds thread previews around `SummarizedMessagePreview`
866847
- Replacement:
867848
- move emoji-only checks to `countEmojis()` / `messageTextHasEmojisOnly()`
868849
- stop relying on `showMessageActionsBox()` / `shouldRenderMessageActions()` and instead customize the new `MessageActions` action-set flow
869850
- replace direct icon imports with the public `Icons` components or with higher-level components like `MessageStatus`, `SendButton`, `MessageActions`, and thread preview components
870-
- rename direct imports that still use the pre-Phosphor icon names
871851
- if you used `attachmentTypeIconMap`, inline your own map or switch to the new thread preview components
872852
- Evidence:
873853
- current `MessageComposer/index.ts` and `Message/index.ts` still re-export their `icons.tsx` files, but the removed icon symbols are no longer present there
874854
- current `MessageStatus` and thread-list UIs rely on the shared icon library and new summary components instead of the old standalone exports
875-
- commit `30c1beeae feat(Icons): migrate SDK icons to Phosphor icon set (#3075)` renamed the remaining public icon constants and removed the unused icon catalog entries
876-
- commit `9472f7b35 fix(Icons): sync icon catalog with refreshed Line SVGs (#3080)` completed the `IconLayoutAlignLeft` -> `IconSidebar` and `IconThunder` -> `IconBolt` rename sweep
855+
- later icon-catalog renames such as `IconCrossMedium -> IconXmark` and `IconLayoutAlignLeft -> IconSidebar` are excluded from this bucket because they were not part of the `v13.14.2` public surface
877856
- Docs impact:
878857
- migration guide
879858
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/08-message/07-ui-components.md`
@@ -2059,6 +2038,10 @@ Only confirmed items should move from this file into the migration guide.
20592038
- audio/player, scrolling, and layout polish (`7914e516`, `91eba1b4`, `8d25ead3`, `55dd2e81`, `fdf0e155`, `221aa0d4`): investigated; these commits refine playback reset behavior, initial bottom-pinning, mobile-nav click detection, message-list width, reactions alignment, and voice-recording attachment layout, but they do not remove or rename a documented public API beyond the separately tracked `useChannelListContext()` signature cleanup.
20602039
- type-safety and stale-prop cleanup in tests (`277bc417`): investigated; this commit removes stale props from test fixtures and tightens mock typing, but it does not change the current public runtime API beyond what was already documented in earlier migration buckets.
20612040
- link-type attachment preview icon swap (`241209e8`): investigated; current summarized-preview and latest-message preview UIs now use the shared link icon for link attachments, but this is a visual/current-behavior adjustment rather than a removed or renamed public API.
2041+
- avatar overflow/internalization follow-up (`49d576e4`): investigated; `overflowCount` was introduced during the v14 redesign cycle and was not part of the v13 public surface, so it should not appear in v13-to-v14 migration guidance. Keep it as current-v14 docs maintenance only.
2042+
- icon catalog, RTL, dark-mode, and thread-voice-recording follow-up (`a4b1c2662`): investigated; current icon renames such as `IconCrossSmall -> IconXmarkSmall`, `IconExclamationTriangle -> IconExclamationTriangleFill`, and `IconEyeOpen -> IconEyeFill` are not part of the v13 public surface, and the RTL/dark-mode/thread voice-recording changes are current-behavior polish rather than a new migration bucket.
2043+
- styling cleanup (`3bbf121ff`): investigated; broad CSS cleanup and internal selector polish, but no new removed or renamed public API beyond the avatar/channel-list/theming buckets already tracked.
2044+
- example-only follow-ups (`623989574`, `2f060ae89`, `6c7cd42af`): investigated; these only update examples and docs scaffolding and do not add a new v13-to-v14 migration item.
20622045
- assorted UI/UX fixes (`6c06e043`, `a47981ff`, `3f093622`): investigated; Giphy editability, dialog layering, composer state restoration, centered headers, message-list width, and channel-list dialog-portal cleanup changed runtime behavior, but they did not introduce new removed exports or renamed public override surfaces beyond the separately tracked reactions and icon buckets.
20632046
- example-app refreshes (`86ada37e`, `887a326a`): investigated; these only update example apps and do not change the public SDK surface.
20642047

0 commit comments

Comments
 (0)