Vercel's Chat SDK can now stream generative UI into Slack and Teams
json-render turns an agent's JSON spec into native cards, Block Kit on Slack, Adaptive Cards on Teams, instead of a hand-built UI per platform.
Vercel published a changelog entry on 6 November showing Chat SDK agents streaming generative UI through json-render, its library for turning an agent’s JSON output into UI. Instead of writing text, the agent emits a spec against a typed catalog of components (tables, charts, buttons), and each Chat SDK adapter renders it in that platform’s native format: Block Kit on Slack, Adaptive Cards on Teams.
A new streamCard function posts the card once its root element has content, then edits it as more streams in, at most once every 500ms by default, matching Chat SDK’s own streaming interval. A toCard function validates every element’s props against its component schema and throws a CardSpecError with a readable message per problem.
import { defineCatalog } from '@json-render/core'
import { schema, standardComponentDefinitions, streamCard } from '@json-render/chat'
Why it matters: if you’re building a chat agent that posts into Slack or Teams, this removes the need to hand-roll Block Kit or Adaptive Cards for every response shape. One catalog of components now targets every Chat SDK platform.
The caveat: platforms cap what a single message can hold, and adapters will quietly degrade content past that cap, for example Slack turning a second table into a code block, unless you pass a limits parameter to toCard to reject oversized specs instead.