json-render 0.22 streams one generative-UI catalog into native Slack and Teams cards
json-render 0.22.0, released November 4, adds `@json-render/chat`. One component catalog can become a Chat SDK card; `streamCard` edits a thread message as elements arrive, while `toCard` validates the final card against component schemas and optional platform limits. The official example previews Slack Block Kit and Teams Adaptive Cards.
Why it matters
Generative UI is moving beyond the web DOM into native collaboration surfaces. Catalogs, state expressions, and validation can now be reused across chat platforms, reducing the need for a separate tool for every table or chart shape while making platform limits and streaming cadence part of the rendering contract.
A closer look
The renderer resolves prop expressions, visible, and repeat against spec.state and validates concrete props per component even in multi-component catalogs. Streaming posts after a usable root appears and updates at Chat SDK's 500 ms interval, then validates the final card. The merged PR also caps repeat expansion with maxElements to prevent exponential nested growth, rejects children on components without slots and empty root cards, and exposes readable CardSpecError issues for model feedback.
Who this is for
Frontend, agent-platform, and collaboration-product teams reusing one generative-UI catalog across web, Slack, Teams, and other Chat SDK surfaces.
Original sources
- json-render official release and merged Chat SDK renderer pull request ↗github.com
- Chat SDK renderer implementation and review ↗github.com
Revisions & corrections (1)
— The official release and merged implementation provide a dated, reproducible new rendering surface with explicit validation and platform-limit boundaries.