Agent Loading States

Three thoughtful loading states for AI interfaces: shimmering status text, live agent progress, and cycling reasoning phrases.

Reasoning Text

reasoning-text.tsx

Shimmering reasoning copy with an ASCII loader and cascade, phrase-swap, or per-letter scramble transitions.

CascadeThinking
SwapThinking
ScrambleThinking

Install

$ bunx --bun shadcn add @beui/reasoning-text

API Reference

phrases?
string[]

Phrases cycled through while the agent works.

[ "Thinking", "Reading the context", "Connecting the details", "Forming a response", ]
variant?
"cascade" | "swap" | "scramble"

Animation used when the active phrase changes.

cascade
interval?
number

Milliseconds each phrase remains visible.

1800
shimmerDuration?
number

Seconds taken for one shimmer pass.

2.2
indicator?
ReactNode

Optional leading visual. Defaults to a terminal-style ASCII loader.

className?
string

Thinking Shimmer

thinking-shimmer.tsx

A quiet shimmer that keeps the agent's current status readable while work continues.

Thinking…

Install

$ bunx --bun shadcn add @beui/thinking-shimmer

API Reference

children?
ReactNode

Loading message shown to the user.

Thinking…
duration?
number

Seconds taken for one shimmer pass.

1.8
className?
string

Agent Progress

agent-progress.tsx

A compact activity glyph, action verb, and live tabular timer for longer-running agent work.

Churning

Install

$ bunx --bun shadcn add @beui/agent-progress

API Reference

label?
string

Verb describing the agent's current activity.

Churning
elapsedSeconds?
number

Controlled elapsed time in seconds.

initialSeconds?
number

Starting time for the internal timer, in seconds.

0
running?
boolean

Whether the internal timer should advance. Ignored when elapsedSeconds is provided.

true
className?
string

Composition

Choose one loading primitive for the amount of progress information the agent can truthfully expose.

Message
└── MessageContent
    ├── ThinkingShimmer
    ├── AgentProgress
    └── ReasoningText

Note: Agent Activity takes over once structured execution events exist. Todo List shows durable progress when a plan becomes available. Streaming Response replaces loading once answer content begins arriving.

How it works

An agent loading state should communicate ongoing work without inventing progress. Choose the smallest signal that matches what the system actually knows and keep its language stable while work continues.

Updated