Day 3: Generative UI Gen 2 — Declarative Specs with A2UI

This is Day 3 of my 6-part series on how LLMs rewrote the user interface over the past year. Day 2 covered static generative UI with AG-UI — and ended on its core limitation: the agent can only show what you've pre-built.

Moving up the freedom axis

Gen 1's contract was "pick from my components." Gen 2's contract is more interesting: "compose a UI from my primitives."

The agent doesn't return code, and it doesn't just pick a component — it returns a declarative description of an interface: a tree of abstract components (cards, rows, text, inputs) plus the data to fill them. Your client renders that description using its own native widgets. The agent decides structure; you still decide implementation, styling, and what's allowed.