Blog · 6 November 2026 · 3 min read

We ran OpenUI's own benchmark. Here's where we lose.

MorphScreen against the open-source OpenUI library on the benchmark OpenUI publishes: the same briefs, models and rules, 64 measures, and the four where OpenUI is ahead.

By Nandishwar Singh, who builds MorphScreen

View as Markdown

On OpenUI's own public benchmark, MorphScreen is ahead on 37 of 64 measures, even on 23 and behind on 4. All four losses are answer length: our answers run about 39% longer (1,268 tokens against 913). The biggest wins are small models (66.3% valid answers against 31.5% for Nemotron 3 Nano 30B), prompt size (2,954 tokens against 14,041) and accessibility (0 axe violations against 599).

64 measures against OpenUI
  • MorphScreen ahead58%
  • Even36%
  • OpenUI ahead6%
64 measures against OpenUI
  • MorphScreen ahead58%
  • Even36%
  • OpenUI ahead6%
64 measures against OpenUI
  • MorphScreen ahead58%
  • Even36%
  • OpenUI ahead6%
64 measures against OpenUI
ResultMeasures
MorphScreen ahead37
Even23
OpenUI ahead4
64 measures, with the same briefs, models, providers and rules for both. Drawn by MorphScreen from the table in this post.

Why their benchmark

When you build something in a space that already has a known project, the obvious question is "why not just use that?" For generative UI, that project is OpenUI. So instead of writing my own benchmark, I ran theirs.

Thesys publishes generative-ui-bench for OpenUI. I used the same briefs, the same models and providers, and the same rules for what counts as valid, and ran MorphScreen next to the open-source OpenUI library. Everything is on morphscreen.com/benchmark: the method, every raw answer and every row.

One thing up front: this is the open-source library, not Thesys's hosted OpenUI Cloud. I haven't measured that, so nothing here says anything about it.

How a row counts

A lead only counts when it isn't chance. Where a row counts answers, a two-proportion test has to put the gap below p = 0.05, and timings within 10% of each other are even.

What each format looks like

The same brief, a newsletter sign-up card, answered by DeepSeek V4 Flash in each format. These are the raw answers from the benchmark, unedited.

MorphScreen: Markdown with a few tags
<Card title="The Week in Product" subtitle="One email, every Friday, with the best product thinking.">
  <Form name="newsletter-signup">
    <Input label="Email address" name="email" type="email" placeholder="you@example.com" required="true" hint="We'll never share your email" />
    <Button>Subscribe</Button>
    <Button variant="tertiary">No thanks</Button>
  </Form>
</Card>
OpenUI: OpenUI Lang
root = Card([header, form])
header = CardHeader("The Weekly Build", "One email every Friday — a short rundown of the best product, design, and engineering reads we found this week. No fluff, no spam, unsubscribe anytime.")
form = Form("newsletter-signup", formButtons, [emailField])
emailField = FormControl("Email address", emailInput, "We'll only send you the newsletter, never anything else.")
emailInput = Input("email", "you@example.com", "email")
formButtons = Buttons([subscribeBtn])
subscribeBtn = Button("Subscribe", null, "primary")

The Week in Product

One email, every Friday, with the best product thinking.

The MorphScreen answer above, drawn by MorphScreen's core.

OpenUI Lang names each piece and wires them together, so a component can be used before it's written. MorphScreen nests tags in the order they're drawn, so each line can go on the page as soon as it's finished. The demo draws both from the same answers side by side.

Where we lose

All four of OpenUI's wins are answer length. With reasoning off and every component on, our answers run longer. Markdown with tags is less compact than OpenUI Lang, which was designed to be short, and you pay for that in output tokens on every answer.

Answer length, tokens
05001k1.5kMorphScreenOpenUI
Answer length, tokens
05001k1.5kMorphScreenOpenUI
Answer length, tokens
05001k1.5kMorphScre…OpenUI
Answer length, tokens
Tokens
MorphScreen1268
OpenUI913
Output tokens per answer, DeepSeek V4 Flash with reasoning off and every component on. Lower is better.

Where it's even

Validity before repair, on the default setup (DeepSeek V4 Flash, reasoning off, every component): 87.0% each. On a capable model, both formats come out right most of the time.

Where we're ahead

Small models. Nemotron 3 Nano 30B wrote a valid MorphScreen answer 66.3% of the time and a valid OpenUI one 31.5%, on the 46 briefs twice each. Models already know Markdown, so there's less to learn.

Valid answers from a 30B model, %
020406080MorphScreenOpenUI
Valid answers from a 30B model, %
020406080MorphScreenOpenUI
Valid answers from a 30B model, %
020406080MorphScre…OpenUI
Valid answers from a 30B model, %
Valid
MorphScreen66.3
OpenUI31.5
Nemotron 3 Nano 30B on the benchmark's 46 briefs, twice each. Higher is better.

The prompt. With every component on both sides (our 75, the 63 in OpenUI's chat library), ours is a fifth the size. It goes with every call, so this is a cost on every answer.

System prompt, tokens
05k10k15kMorphScreenOpenUI
System prompt, tokens
05k10k15kMorphScreenOpenUI
System prompt, tokens
05k10k15kMorphScre…OpenUI
System prompt, tokens
Tokens
MorphScreen2954
OpenUI14041
The system prompt with every component, in tokens. Lower is better.

After repair, 100% valid (184 of 184) against 84.8%. OpenUI's open-source SDK has no repair step, so this row is really "with repair against without".

Accessibility: 0 axe violations across 20 answers in Chrome, against 599. And in the browser, less work:

CPU to stream and draw, ms
02k4k6kMorphScre…OpenUI
CPU to stream and draw, ms
02k4k6kMorphScre…OpenUI
CPU to stream and draw, ms
ms
MorphScreen1052
OpenUI5566
Time to first text, ms
050100150MorphScre…OpenUI
Time to first text, ms
050100150MorphScre…OpenUI
Time to first text, ms
ms
MorphScreen71
OpenUI138
20 answers streamed and drawn in Chrome. Lower is better on both.

Which to pick

If your answers are short and your model is big, the difference is small and OpenUI is a fine choice, especially if you want everything self-hosted. MorphScreen pulls ahead with small or cheap models, long prompts with many components, and pages that have to pass an accessibility check. Generative UI SDKs compared puts both next to CopilotKit, the Vercel AI SDK, A2UI and others.

Check it yourself

The benchmark code and every raw answer are in the repository, and the benchmark page has each row with its method. If you think a row is measured unfairly, open an issue and I'll rerun it.