the si

Beyond Screenshots: AI Agents for Figma-to-Storybook Diffs

July 20, 2026

Screen 43 reference diff showing the 16 reviewed changes.
Screen 43 reference diff showing the 16 reviewed changes.

In our first Scry Design Diff Eval post, we asked whether vision language models could review mobile UI from screenshots alone. The short answer was: somewhat, but not well enough to be competitive with a human reviewer. The best models caught roughly two fifths of the issues people had tagged, and they struggled most on dense screens and small visual details.

That left us with the follow-up question: what happens if the model gets the same evidence a coding agent would have while working on the UI?

Instead of only giving it two screenshots, we gave an agent:

  • the raw Figma layer tree, including text, hierarchy, component names, styles, and coordinates;
  • a Storybook screenshot captured at the exact Figma frame size;
  • the live HTML DOM, element bounds, and computed styles;
  • the implementation source;

Figma JSON and HTML do not directly match

The first thing we learned is that there is no useful raw Figma JSON === HTML comparison.

A Figma frame might contain a component instance, several nested frames, vector paths, and text nodes. The matching UI might use React components, wrapper elements, pseudo-elements, an icon font, and a completely different hierarchy. Even when the final screens look similar, the two trees are not isomorphic.

The useful bridge is semantic and geometric:

  • Match text by content and nearby labels.
  • Match controls by role and visual position.
  • Compare normalized bounds rather than node depth.
  • Use source imports and component names to identify assets.
  • Treat screenshots as the final authority for what is actually visible.

Note: The Figma and source would require initial set up for the agent. In our case we used Scry, but other tools such as Figma Code Connect would suffice.

What the runs looked like

These are the completed runs on this screen. Coverage is semantic recall against the 16-item manual review, and icon accuracy is measured across the 13 icon candidates. Every configuration below now uses the same final uncapped agent.

Model and effortCoverageIcon decisionsCost
GPT-5.6 Sol low14/1611/13$0.316
GPT-5.6 Sol medium16/1613/13$0.441
GPT-5.6 Sol xhigh16/1613/13$1.068
GPT-5.6 Terra max16/1611/13$1.025
GPT-5.6 Terra xhigh12/169/13$0.442
Claude Fable 5 xhigh11/169/13$1.387
Claude Opus 4.8 low10/168/13$0.294
Kimi K3 low10/167/13$0.143
MiniMax M3 low10/169/13$0.023
Gemini 3.5 Flash low10/168/13$0.057
Claude Sonnet 5 low8/167/13$0.118
Exploratory scatter chart comparing model cost with composite diff performance.
Exploratory scatter chart comparing model cost with composite diff performance.

For this quick view, composite performance is the average of structural coverage and icon-decision accuracy. It is an exploratory summary of this one screen—not a new benchmark score—but it makes the tradeoff easy to see: MiniMax M3 low was the cheapest tested run, Sol low reached 86.1% composite performance for $0.316, and Sol medium reached the best observed result for $0.441.

What's Next

This helps move vlm design reviews from impractical to realistic. An agent with captures, Figma structure, live DOM evidence, source code, and focused visual tools can be a feasabile replacement for human visual inspection. Our next goal is to expand on this while also testing ways to improve upon the cost/performace frontier.

Resources