Skip to content

Comparison

How GistUI Protocol v1 compares with OpenUI Lang, Google A2UI, Vercel json-render, MCP Apps and AG-UI - what each one is, measured differences, and when to use which.

Updated View as Markdown

These projects are often mentioned together, but they solve different parts of the problem. Some are formats, some are transports, and several work with GistUI rather than against it.

What each one is

Kind The model writes Maintained by
GistUI Format Content format + reference library Line-based text, catalog-directed GistUI (open source, MIT)
OpenUI Lang Content format + library Line-based text Thesys
A2UI Message protocol for agent-driven UI JSON messages: a flat component list and a data model Google
json-render Library with a JSON UI spec A JSON tree constrained by a catalog Vercel
MCP Apps Extension to MCP Nothing: the server ships an HTML view shown in a sandboxed iframe MCP
AG-UI Event protocol between agents and frontends Nothing specific: it carries text, tool calls and state AG-UI

AG-UI and MCP are transports. GistUI programs travel inside them: see Bindings.

Feature by feature

GistUI Format OpenUI Lang A2UI json-render
Syntax Text, one statement per line Text, one statement per line JSON JSON
Usable before the answer ends Yes, per line Yes, per line Per message Needs a partial-JSON parser
Data Pipe tables, shared between components Arrays in arguments A data model, bound by path Inline in props
Optional props Named, in any order Positional Named keys Named keys
Client-side state and expressions Yes Yes Data model updates from the agent; client functions Limited
Read tools vs write tools Separate in the format One kind Agent-side App-defined
Defined recovery from syntax slips Yes, numbered rules Not specified Not applicable: invalid JSON fails Not applicable
Deterministic repair of a finished answer Yes, in code Paid add-on No No
Edits by id Replace, patch, append, delete Replace updateComponents, updateDataModel Patches
Written specification Yes, with conformance classes Documentation Yes Documentation
Public conformance suite 149 cases No Schema validation No
Resource limits in the format Yes No No No
Reference renderers React, Vue, Svelte, Solid, vanilla JS React Lit, Angular, Flutter, others React, others

Measured

Measured against OpenUI Lang. Full results and the method: Benchmarks.

OpenUI Lang GistUI Format
Main-thread time to render a streaming dashboard in Chrome 2,204 ms 492 ms
Valid answers as written (gpt-oss-120b, 182 answers) 84.6% 87.9%
Valid after repair a second model call in OpenUI Cloud, not measured 100%, in code, no model call
System prompt, same 70-component catalog 5,017 tokens 3,874 tokens
Answer, mean 601 tokens 587 tokens
First-load JavaScript, default components, gzip 699 KB 74 KB
  • Rendering: 2–6× less main-thread work across OpenUI’s own sample screens, in the same page at the same streaming pace. The gap grows with the length of the answer.
  • Parsing a stream: OpenUI re-reads the whole answer on every chunk, so its cost grows with the square of the answer’s length; GistUI reads each new character once.
  • Accuracy: the model test uses OpenUI’s own benchmark, thesysdev/generative-ui-bench, with the same catalog, examples and settings for both formats.

When to use which

  • You want model answers rendered as native UI in your own app, in any framework, cheaply and safely. GistUI.
  • You are building agents that drive UI across several client platforms, including native mobile, with the agent holding the state. A2UI is designed for that. A GistUI tree can be compiled to A2UI messages: see Bindings.
  • You need arbitrary HTML and scripts from a tool, isolated in an iframe. MCP Apps. A GistUI renderer can be the content of such a view.
  • You need an event stream between an agent backend and a frontend. AG-UI, with GistUI as the content of its text messages.
  • You are already invested in one of the other libraries and it works. Stay. A format matters most when you need portability, a second implementation or a stated safety model.

They compose

agent framework ──AG-UI events──► your server ──text──► <GistUI>
MCP server ──tool result (text/vnd.gistui)──► MCP host ──► GistUI renderer
GistUI tree ──compile──► A2UI messages ──► an A2UI renderer
Navigation

Type to search…

↑↓ navigate↵ selectEsc close