useChannelPreviewData
Returns channel preview state (lastMessage, muted, pinned, and unread) for rendering list rows.
Best Practices
- Use this hook in custom
ChannelPreviewcomponents rendered byChannelList. - Treat
lastMessageas optional and handle empty channels safely. - Avoid additional unread computations in render; use the hook output directly.
- Respect muted channels and avoid showing unread badges when muted.
- Keep expensive formatting outside the list item render path.
Usage
import { useChannelPreviewData } from "stream-chat-react-native";
type Props = {
channel: Channel;
client: StreamChat;
};
const CustomPreview = ({ channel, client }: Props) => {
const { lastMessage, muted, unread } = useChannelPreviewData(channel, client);
return (
<>
<Text>{lastMessage?.text ?? "No messages yet"}</Text>
{!muted && unread > 0 ? <Text>{unread}</Text> : null}
</>
);
};Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| channel | Channel |
Yes | Channel instance used to derive preview state and event bindings. |
| client | StreamChat |
Yes | Active chat client used for read/unread event subscriptions. |
| forceUpdateOverride | number |
No | Optional force-update counter override from channel-list context. |
Returns
| Name | Type | Description |
|---|---|---|
| lastMessage | LocalMessage | MessageResponse |
Latest message used by the preview row. |
| muted | boolean |
Whether the channel is currently muted. |
| pinned | boolean |
Whether the channel is pinned for the current user. |
| unread | number |
Unread count for the current user. |