build69
build69  /  Components  /  Feedback & Status  /  SkeletonChat

SkeletonChat

v1.0.2Updated 20 Jul 2026

A placeholder for a message thread: alternating incoming and outgoing bubbles with avatars, at deterministically varied widths so the transcript looks natural. Outgoing rows flip direction and corner rounding just like real bubbles. Use it while chat history loads.

Preview

Live · 7 stories
Chat LoadingOpen ↗
Why this is recommendedloadingplaceholderchatmessages+3

SkeletonChat showing skeleton placeholders while data loads — chat.

Recommended for+14
  • Chat history while a conversation loads
  • Support widget before messages arrive
  • AI assistant transcript on first paint
  • Direct message thread during initial fetch
  • Comment thread styled as a conversation
Tags+6
loadingplaceholderchatmessagesconversationbubblesskeleton
Features+4
  • Configurable message count
  • Alternating incoming / outgoing alignment
  • Avatar per message via SkeletonAvatar
  • Varied bubble widths and occasional follow-up bubble
  • Correct bubble corner rounding per side
  • role="status" + aria-busy with an sr-only "Loading…" label
  • i18n: labels prop overrides the sr-only "Loading…" announcement
Not recommended for−2
  • Waiting on a single in-flight reply (use a typing indicator)
  • Flat lists with no bubbles (use SkeletonRow)

Install

Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.

get_registry_item({ name: "SkeletonChat" })

Usage

import { SkeletonChat } from '@/components/primitives/skeleton/skeleton-chat';

{isLoading ? <SkeletonChat messages={6} /> : <MessageList messages={messages} />}

Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.

Props

PropTypeRequired
messages

How many message rows to render. Defaults to 4.

number
animation

Shimmer style applied to every bubble. Defaults to 'pulse'.

'pulse' | 'wave' | 'none'
intensity

Placeholder contrast against the surface.

'subtle' | 'default' | 'strong'
labels

Override the built-in sr-only "Loading…" announcement (i18n). Merged over DEFAULT_SKELETON_CHAT_LABELS.

Partial<SkeletonChatLabels>

Related