About
Presentational message container with density context and infinite scroll support. Provides role="log" with aria-live="polite" for accessibility. A flex spacer pushes messages to the bottom when the list isn't full; set align="top" to start messages at the top instead.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Astryx Chat Message List to your project and fits it to your theme.
Code
How Astryx Chat Message List is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
// Copyright (c) Meta Platforms, Inc. and affiliates.
'use client';
import {
ChatMessageList,
ChatMessage,
ChatMessageBubble,
ChatMessageMetadata,
ChatSystemMessage,
} from '@/components/ui/astryx-chat-message-list';
import {VStack} from '@astryxdesign/core/Layout';
import {Timestamp} from '@astryxdesign/core/Timestamp';
function ChatMessageListShowcase() {
return (
<VStack style={{maxWidth: 600, height: '100%'}}>
<ChatMessageList density="balanced">
<ChatSystemMessage variant="divider">March 15, 2026</ChatSystemMessage>
<ChatMessage sender="user">
<ChatMessageBubble
metadata={
<ChatMessageMetadata
timestamp={
<Timestamp value="2026-03-15T14:30:00" format="time" />
}
status="read"
/>
}>
How should I structure a monorepo?
</ChatMessageBubble>
</ChatMessage>
<ChatMessage sender="assistant">
<ChatMessageBubble
metadata={
<ChatMessageMetadata
timestamp={
<Timestamp value="2026-03-15T14:30:15" format="time" />
}
/>
}>
Use workspaces with a shared packages directory. Keep each package
focused on a single concern.
</ChatMessageBubble>
</ChatMessage>
<ChatMessage sender="user">
<ChatMessageBubble
metadata={
<ChatMessageMetadata
timestamp={
<Timestamp value="2026-03-15T14:31:00" format="time" />
}
status="delivered"
/>
}>
Should I use Yarn or pnpm for that?
</ChatMessageBubble>
</ChatMessage>
</ChatMessageList>
</VStack>
);
}
export default function ChatMessageListShowcaseDemo() {
return (
<div
data-astryx-theme="neutral"
data-theme="light"
style={{colorScheme: 'light', display: 'contents'}}>
<ChatMessageListShowcase />
</div>
);
}





