You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## 🎯 Goal
A cleanup for channel details, the main focus is to make it easier for
integrators to reuse the specific building blocks, the implementation
details describes all changes in detail. This PR also implements the new
role label UI from Figma.
Docs: GetStream/docs-content#1389
## 🛠 Implementation details
UI changes
- New member-role UI (feat: implement new member role UI) — Replaced the
old single text role label on member items with a dedicated, reusable
RoleList / RoleItem component pair (components/roles/). Roles now render
as styled
chips/badges with distinct owner vs. regular-role colors.
- New theme tokens added under messageMenu: roleList.container and
roleItem (container, text, ownerBackgroundColor, ownerColor,
roleBackgroundColor, roleColor). The old memberItem.role token was
removed.
- Logic moved from useMemberRoleLabel (single label string) →
useMemberRoles (returns a list of roles).
- Padding / spacing fixes — Several visual fixes: missing modal padding
on Android in edge-to-edge mode, general padding fixes, and edit-button
sizing in the Expo sample app.
Component / architecture restructures
- Add-members flow split into composable parts — ChannelAddMembersModal
(deleted) → ChannelAddMembersButton, ChannelAddMembersForm,
ChannelAddMembersFormContent, ChannelAddMembersFormHeader. The
add-members button is now its own
component, and a proper HOC was created for it.
- Edit-details flow split the same way — ChannelEditDetailsModal
(deleted) → ChannelEditDetailsForm, ChannelEditDetailsFormContent,
ChannelEditDetailsFormHeader. Form submission was simplified.
- ChannelDetails context split up — The monolithic ChannelDetails
context was broken into focused contexts: channelDetailsContext,
ChannelAddMembersContext, ChannelEditDetailsContext, plus per-list
contexts (ChannelMemberListContext,
ChannelMediaListContext, ChannelFileAttachmentListContext,
ChannelPinnedMessageListContext). channel was moved into the context,
the value wrapper was removed, and channel was dropped from contexts
used under channel details.
ChannelDetails.tsx itself shrank from ~171 lines of orchestration to a
thin shell.
- Hooks promoted to the SDK's shared src/hooks/ —
useCanEdit/useCanAddMembers were moved, renamed, and split into
useCanEditChannel and useCanAddMembersToChannel (with tests);
useIsDirectChat updated.
- New signal store (state-store/signal-store.ts) — A small signal store
to imperatively close any open channel-details modal; related store
hooks exported. The edit-channel-details-store was also reworked.
- Public API changes — useSelectedChannelState is now exported from the
SDK; ChannelAllMembersModal is no longer exposed (component deleted);
custom searchSource can be passed to channel-details components.
- Sample apps updated — Both SampleApp and ExpoMessaging
(details/index.tsx, screens) were migrated to the new component/context
structure; Expo sample app fixes.
- Removed the experimental warnings
## 🎨 UI Changes
No UI changes
## 🧪 Testing
<!-- Explain how this change can be tested (or why it can't be tested)
-->
## ☑️ Checklist
- [ ] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required)
- [ ] PR targets the `develop` branch
- [ ] Documentation is updated
- [ ] New code is tested in main example apps, including all possible
scenarios
- [ ] SampleApp iOS and Android
- [ ] Expo iOS and Android
0 commit comments