ChatMessageList API
API reference docs for the React ChatMessageList component. Learn about the props, CSS, and other APIs of this exported module.
Demos
Import
import { ChatMessageList } from '@mui/x-chat/ChatMessageList';
// or
import { ChatMessageList } from '@mui/x-chat';Learn about the difference by reading this guide on minimizing bundle size.
Props of the native component are also available.
| Name | Type | Default | Description |
|---|---|---|---|
| autoScroll | { buffer?: number } | bool | true | Controls automatic scrolling to the bottom when new messages arrive or
streaming content grows, as long as the user is within
Scrolling when the user sends a message is always active. |
| classes | object | - | Override or extend the styles applied to the component. See CSS classes API below for more details. |
| enableRovingFocus | bool | true | Whether the message list manages a roving tabindex over its messages: the list is a single Tab stop, ArrowUp/ArrowDown (plus Home/End) move focus between messages, Enter drills into a message's interior controls and Escape returns to the message. |
| estimatedItemSize | number | 84 | The estimated height of a row in pixels, used until the row is measured. |
| features | { dateDivider?: bool, streamingIndicator?: 'auto' | bool, unreadMarker?: bool } | - | Feature flags for the row extras rendered by the default row: the opt-in dividers ( |
| getItemKey | func | (id) => id | Returns the React key of a row. Signature: function(id: string, index: number) => React.Key
|
| items | Array<string> | - | The ids of the messages to render, in order. |
| onReachBottom | func | - | Callback fired when the viewport enters the bottom zone of the list — within |
| onReachTop | func | - | Callback fired when the viewport enters the top zone of the list — within |
| overlay | node | null | Floating layer rendered above the message list, anchored to its bottom edge; pointer-transparent. |
| renderItem | func | - | Render a custom row for each message. When omitted, the default row used by |
| slotProps | object | {} | The props used for each component slot. |
| slots | object | {} | Overridable component slots. See Slots API below for more details. |
| sx | Array<func | object | bool> | func | object | - | The system prop that allows defining system overrides as well as additional CSS styles. See the `sx` page for more details. |
| Slot name | Class name | Default component | Description |
|---|---|---|---|
| messageList | The component that renders the message list. | ||
| messageListScroller | The component that renders the message list scroller. | ||
| messageListContent | The component that renders the message list content. | ||
| messageListOverlay | The component that renders the message list overlay. | ||
| messageListScrollbar | The component that renders the message list scrollbar. | ||
| messageListScrollbarThumb | The component that renders the message list scrollbar thumb. | ||
| messageListStatus | The visually-hidden role="status" element announcing streaming transitions ("Assistant is responding" / "Response complete") to screen readers. Pass null-rendering component to silence the announcements. | ||
| dateDivider | The date separator rendered between message groups. Only rendered when features.dateDivider is enabled. Pass null to hide it. | ||
| messageGroup | The per-author group wrapper around consecutive messages. | ||
| messageRoot | Styled root of <ChatMessage> (wrapper-only); the default avatar/content/meta tree still renders inside it. | ||
| messageAvatar | Avatar component. Pass null to hide the avatar entirely and drop the reserved avatar grid track. | ||
| messageContent | The message bubble component. | ||
| messageMeta | External meta (compact variant). Pass null to hide. | ||
| messageInlineMeta | Inline meta rendered inside the bubble (default variant). Pass null to hide. | ||
| messageError | Error card shown under the bubble when the message status is error. Pass null to hide the error surface entirely (no component is mounted). | ||
| messageActions | Actions row component (receives { messageId }). Pass null to hide actions entirely; omit to render only the declarative extraActions from slotProps.messageActions if provided. | ||
| messageAuthorName | Author name label rendered by the group wrapper (default variant: above the bubble; compact variant: inside the message grid). Pass null to hide. | ||
| streamingIndicator | The animated dots shown while an assistant response is in flight: as a trailing row while waiting for the response to start, then inside the assistant bubble while it streams. Controlled by features.streamingIndicator ('auto' by default). Pass null to hide it. | ||
| unreadMarker | The "new messages" marker. Only rendered when features.unreadMarker is enabled. Pass null to hide it. |
These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.
| Class name | Rule name | Description |
|---|---|---|
| .MuiChatMessageList-content | content | Styles applied to the message list content element. |
| .MuiChatMessageList-root | root | Styles applied to the message list root element. |
| .MuiChatMessageList-scroller | scroller | Styles applied to the message list scroller element. |
You can override the style of the component using one of these customization options:
- With a global class name.
- With a rule name as part of the component's
styleOverridesproperty in a custom theme.
Source code
If you did not find the information in this page, consider having a look at the implementation of the component for more detail.