Agent Loading States

Reasoning Text

reasoning-text.tsx
CascadeThinking
SwapThinking
ScrambleThinking

Install

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

API Reference

phrases?
string[]

Phrases cycled through while the agent works.

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

Animation used when the active phrase changes.

Defaultcascade
interval?
number

Milliseconds each phrase remains visible.

Default1800
shimmerDuration?
number

Seconds taken for one shimmer pass.

Default2.2
indicator?
ReactNode

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

Default—
className?
string
Default—

Thinking Shimmer

thinking-shimmer.tsx
Thinking…

Install

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

API Reference

children?
ReactNode

Loading message shown to the user.

DefaultThinking…
duration?
number

Seconds taken for one shimmer pass.

Default1.8
className?
string
Default—

Agent Progress

agent-progress.tsx
Churning

Install

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

API Reference

label?
string

Verb describing the agent's current activity.

DefaultChurning
elapsedSeconds?
number

Controlled elapsed time in seconds.

Default—
initialSeconds?
number

Starting time for the internal timer, in seconds.

Default0
running?
boolean

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

Defaulttrue
className?
string
Default—

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.

Also on React Native. Shimmers, cycling reasoning text and a progress timer.

Updated