Response

Renders an agent's answer as it streams.

Sizes

  • The backfill wrote 1,204 partitions to wh_events.events_raw in 14 minutes. Three arrived after the 02:00 cutoff, so the daily rollup ran without them. See the run log for the times.

    defaultdefault

  • The backfill wrote 1,204 partitions to wh_events.events_raw in 14 minutes. Three arrived after the 02:00 cutoff, so the daily rollup ran without them. See the run log for the times.

    sm

Blocks

  • Late partitions

    • 2026-10-18/14, 02:07
    • 2026-10-18/15, 02:11
    • 2026-10-18/22, 02:31

    list

  • Rerun the rollup for those hours:

    SQL
    select hour, count(*)from wh_events.events_rawwhere day = '2026-10-18'group by hour;

    code

  • PartitionArrivedRows
    2026-10-18/1402:0741,280
    2026-10-18/1502:1139,904
    2026-10-18/2202:3152,117

    table

  • The rollup reads only partitions that land before 02:00.

    That is why the three were left out.

    quote

States

  • Three partitions arrived after the cutoff, so the rollup

    streaming

  • Three partitions arrived after the cutoff, so the rollup ran without them.

    done

  • SQL
    select hour, count(*)from wh_events.events_raw

    open fence

Usage

When to use it
Use
An agent answers in Markdown, whole or as it streams: an explanation, a list of late partitions, a query.
Not for
A tool's raw output. Use Tool call.
Not for
One line of what the run is doing. Use Activity.

Rules

6 rules
Must
Append each delta to the same string and pass live while the stream is open; set live to false when it ends. Because Response paces an append, freezes every chunk but the tail, and drops the caret only when live turns false.
Never
Render the answer with dangerouslySetInnerHTML or a Markdown library's raw HTML. Because model output can hold script and javascript: links, and Response draws only its own elements and safe links.
Should
Ask the model to put tables, paths, IDs and partitions in backticks. Because inline code is mono on the well and keeps the name as written, where prose would break it at a hyphen.
Must
Expect **strong** to draw the selection wash, not a heavier weight; keep it to the one fact to find. Because Sodium has one weight, and a paragraph of washed words hides the one that mattered.
Never
Draw your own blinking caret after the answer. Because Response shows the typing caret only while live, and a caret at rest reads as a field waiting for input.
Should
Use size="sm" in a dense panel or a message beside tool rows, and the default on a run's page. Because 14/20 prose sits with 40px rows, where 15/24 would read as the page's lead.

Accessibility

4 checks
The answer sets aria-busy while live; the caret is aria-hidden.
Headings in the answer start at h3, under the page's and the message's own.
Links are the dark gold in light (6.2:1) with an underline; an unsafe link is its label only.
A code block's copy button is named by its language.

Edge cases

5 edge cases
Burst of text
Drains every 24ms in slices that grow with the backlog, cut at word edges.
Half-written link or a lone **
The link waits until it closes; the ** is closed for now.
Open code fence
Renders as a code block that grows as lines arrive.
Text replaced, not appended
Shows the new text at once.
Hidden tab or reduced motion
Shows the full text at once.

API

3 props
children
string default required
live
boolean default false
size
'default' | 'sm' default 'default'

Tokens

19 tokens
--type-body
400 15px/24px var(--font-sans)
--type-body-sm
400 14px/20px var(--font-sans)
--type-label
400 13px/16px var(--font-mono)
--type-label-lg
400 14px/20px var(--font-mono)
--type-label-sm
400 12px/16px var(--font-mono)
--type-code
400 13px/20px var(--font-mono)
--type-micro
400 11px/14px var(--font-mono)
--mono-scale
0.85
--well
#f4f3ee
--selected
#fff4bf
--accent-text
#7a5d00
--accent-edge
#c9a700
--line
#e2dfd5
--code-surface
var(--well)
--rail
12px
--mark
#8a8478
--caret
#161512
--measure
68ch
--row-sm
32px

Install

For your coding agent

GitHub

Please star me pookie

198

A new design system every week

Leave your email before you copy the prompt.