Best practices

Handoff, pixel-perfection, and your component library

The fair developer objection: "a designer sends me a .gui, AI interprets it, it won’t be pixel-perfect, and it won’t map to our internal components." True, and not what .gui is claiming to do.

One of the most grounded objections raised about the format comes from developers, not designers: a designer hands me a .gui, an AI layer interprets it into code, that output is not going to be pixel-perfect, and it won’t map to our internal component system, so for a real web project, isn’t it useless? The honest answer is that this is a real limitation of one workflow, and it’s not the workflow .gui is actually selling.

What .gui does and doesn’t promise

Don't

It does NOT promise: feed a .gui file to a code generator and get production code that pixel-matches the design and slots into your existing component library. No format delivers that reliably, because your component library is opinionated in ways a portable file can’t know about.

Do

It DOES promise: a portable, readable, convertible description of a screen that a designer, an AI agent, and a developer can all open, for ideation, review, and a strong first-draft translation, not a final build.

This is the same boundary every portable design format lives inside. A Figma file doesn’t emit your production components either; a developer looks at it and rebuilds the screen with the team’s own primitives. .gui doesn’t change that reality; it makes the thing being handed over an open, diffable, AI-readable file instead of a screenshot or a link to a vendor workspace (.gui vs Figma files).

The component-library gap is real, and unavoidable

Every serious front-end team has a highly opinionated component library, and generated markup that doesn’t map to it will get looked at and rebuilt by hand regardless of source format. That’s not a .gui failure; it’s true of any design-to-code path, including Figma-to-code. What a semantic format can do is make the rebuild cheaper: because .gui carries roles (role="button", role="card") and tokens rather than only geometry, an agent mapping a screen onto your <Button> and <Card> has explicit intent to match against, instead of inferring "this rounded box was probably a button" from pixels (Intent vs geometry).

Where it actually pays off

The value shows up before the pixel-perfect stage, not at it. A developer can prompt an idea, get a .gui file, and share it with a designer for feedback without touching production Figma or the app itself (What problem does .gui solve?). A designer can hand a developer a file that previews identically in any browser with one script tag (the embed library) and reads as structured intent, so the "what did they mean here" round-trips shrink. The final, pixel-perfect implementation is still a developer building with the team’s components; .gui just makes everything upstream of that step portable and machine-readable.

Do

Realistic expectation: treat generated code from a .gui file as a first draft and a source of intent, then implement for real with your own component library, exactly as you already do with a Figma handoff.

Frequently asked

Will code generated from a .gui file be pixel-perfect?

No, and it doesn’t claim to be. .gui is an exchange and ideation format, not a codegen guarantee. Generated code is a strong first draft carrying explicit intent (roles, tokens), which a developer then implements properly with their own component library, the same as a Figma-to-code handoff.

Our team has its own component library, the output won’t map to it. Is .gui useless for us?

The generated markup won’t map to your components automatically, but neither does any design format, including Figma. What .gui adds is that the handoff artifact is an open, AI-readable file carrying roles and tokens, so mapping a screen onto your <Button>/<Card> has explicit intent to match instead of guessing from pixels. It makes the rebuild cheaper, not automatic.

So how is a .gui handoff better than a Figma handoff?

It’s portable and machine-readable without a vendor account or API: it previews in any browser with one script tag, version-controls as text, is diffable, and an AI agent can read exactly what’s on screen. The developer still rebuilds with their own components, but everything upstream of that step is an open file rather than a locked workspace.