chore: adjustmens to Avatar, GroupAvatar and ChannelAvatar#3087
Merged
arnautov-anton merged 1 commit intomasterfrom Apr 2, 2026
Merged
chore: adjustmens to Avatar, GroupAvatar and ChannelAvatar#3087arnautov-anton merged 1 commit intomasterfrom
arnautov-anton merged 1 commit intomasterfrom
Conversation
3a0c328 to
10b504b
Compare
|
Size Change: -29 B (0%) Total Size: 613 kB π¦ View Changed
βΉοΈ View Unchanged
|
Codecov Reportβ
All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3087 +/- ##
==========================================
+ Coverage 79.53% 79.57% +0.03%
==========================================
Files 426 426
Lines 12174 12179 +5
Branches 3916 3914 -2
==========================================
+ Hits 9683 9691 +8
+ Misses 2491 2488 -3 β View full report in Codecov by Sentry. π New features to boost your workflow:
|
10b504b to
5bd8052
Compare
5bd8052 to
3ddd6f3
Compare
oliverlaz
approved these changes
Apr 2, 2026
github-actions bot
pushed a commit
that referenced
this pull request
Apr 3, 2026
## [14.0.0-beta.6](v14.0.0-beta.5...v14.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`): - **`capLimit` or fewer items:** all are rendered, no badge. - **More than `capLimit` items:** only the first `capLimit` are 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 * adjustmens to Avatar, GroupAvatar and ChannelAvatar ([#3087](#3087)) ([49d576e](49d576e)) ### Bug Fixes * **examples:** clean up tutorial examples for v14 ([#3089](#3089)) ([6239895](6239895)) * **examples:** enable async voice recording preview in thread composer ([#3092](#3092)) ([6c7cd42](6c7cd42)) * **examples:** fix resize handle alignment and thread border gap in RTL ([#3091](#3091)) ([2f060ae](2f060ae)) * **Icons, RTL:** update icon catalog, RTL layout fixes, dark mode & thread voice recording ([#3090](#3090)) ([a4b1c26](a4b1c26)), closes [#3080](#3080)
|
π This PR is included in version 14.0.0-beta.6 π The release is available on: Your semantic-release bot π¦π |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removed
overflowCountprop fromGroupAvatarThe
overflowCountprop has been removed fromGroupAvatarProps. Overflow is now calculated automatically: whendisplayMembershas more than 4 entries, only the first 2 are rendered and a "+N" badge shows the remainder.Removed
overflowCountprop fromAvatarStackThe
overflowCountprop has been removed fromAvatarStack. Overflow is now calculated automatically based on the newcapLimitprop (defaults to 3): whendisplayInfohas more entries thancapLimit, only the firstcapLimititems are rendered and a "+N" badge shows the remainder.Removed
overflowCountand explicitdisplayMembersfromChannelAvatarPropsThe
overflowCountprop has been removed fromChannelAvatarProps. ThedisplayMembersprop is no longer declared directly onChannelAvatarPropsβ it is still accepted because it is inherited fromPartial<GroupAvatarProps>, but it is no longer independently typed on the interface.ChannelAvatarProps.sizetype widenedThe
sizeprop onChannelAvatarPropschanged fromGroupAvatarProps['size'](i.e.,'2xl' | 'xl' | 'lg' | null) toGroupAvatarProps['size'] | AvatarProps['size'](i.e.,'2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | (string & {}) | null). This is not a breaking change for existing code but changes the accepted values.getGroupChannelDisplayInforeturn value changedThe utility function
getGroupChannelDisplayInfo(fromsrc/components/ChannelListItem/utils.tsx) no longer returnsoverflowCountin its result object.AvatarProps.sizetype widened to accept arbitrary stringsThe
sizeprop onAvatarPropschanged from the union'2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | nullto'2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | (string & {}) | null. This allows passing custom size strings while preserving autocomplete for the known values.GroupAvatarProps.sizetype widened to accept arbitrary stringsThe
sizeprop onGroupAvatarPropschanged from'2xl' | 'xl' | 'lg' | nullto'2xl' | 'xl' | 'lg' | (string & {}) | null. This allows passing custom size strings while preserving autocomplete for the known values.New
capLimitprop onAvatarStackA new optional
capLimitprop (typenumber, default3) controls the maximum number of avatars rendered before overflow. WhendisplayInfohas more entries thancapLimit, only the firstcapLimititems are shown and a "+N" badge displays the remainder.GroupAvatarMembertype gains optionalidfieldThe
GroupAvatarMembertype now includes an optionalid?: stringfield. When present, it is used as the Reactkeyfor rendered avatars instead of the fallback${userName}-${imageUrl}-${index}pattern.Behavioral Changes
ChannelAvataralways renders viaGroupAvatarinternallyPreviously,
ChannelAvatarconditionally 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.GroupAvatarauto-caps displayed members at 4 (or 2 with overflow)Previously, callers controlled how many members to display and the overflow count. Now
GroupAvatarinternally slicesdisplayMembers:AvatarStackauto-caps displayed items (default: 3, configurable viacapLimit)Previously, callers controlled how many items to display and the overflow count. Now
AvatarStackinternally slicesdisplayInfobased on thecapLimitprop (default3):capLimitor fewer items: all are rendered, no badge.capLimititems: only the firstcapLimitare rendered, with a "+N" badge showing the count of remaining items.TypingIndicatorno longer manually slices typing usersThe
TypingIndicatorcomponent previously sliced the list of typing users to a maximum of 3 before passing toAvatarStack. It now passes all typing users, relying onAvatarStack's internal capping (also at 3). The net visual result is unchanged.