Generative UI Is the New Front End Generative UI is replacing static frontends as AI agents now render interfaces in real time based on user requests, such as generating a table instead of describing one. Three distinct patterns have emerged for building this layer—controlled, declarative, and open-ended—each with different architectural trade-offs that affect scalability. CopilotKit supports all three patterns on a single runtime, using the AG-UI streaming protocol to carry tool calls, schemas, and state between agents and users. unwind ai ../ - Posts - Generative UI Is the New Frontend Generative UI Is the New Frontend How AI agents stop describing and start showing The frontend used to be a fixed thing. Designers drew it. Engineers built it. Users got what shipped. That's over. The interfaces shipping in 2026 are drawn partly by the agent itself, in real time, from what the user actually asked for. Ask for a table, get a table. Not a paragraph describing one. Generative UI is the layer that lets agents stop describing and start showing. Three patterns have emerged for how to build it, and the differences between them matter more than most teams realize. But there isn't one way to build this. There are three. And most teams pick one without knowing they chose. The protocol stack Three protocols. Each does one job. MCP connects agents to tools. A2A connects agents to each other. AG-UI connects agents to users. AG-UI is the streaming layer that carries everything you'll see below: tool calls, A2UI schemas, MCP App events, state deltas. Runs over SSE. State flows both ways on the same stream. User edits, agent sees. Agent mutates, user sees. A2UI is Google's spec for agents emitting UI as schema. It rides on AG-UI. CopilotKit ships it in production. You don't write a parser for any of this. CopilotKit is an AG-UI client and decodes the stream for you. The three patterns most teams confuse Ask ten developers what Generative UI is. You get ten answers. Most of them are describing whichever pattern their current framework ships. There are just three. The spectrum runs from more control to more flexibility. Controlled: You pre-build the components. The agent picks which to render. Declarative: The agent emits a schema. Your app maps it to components. Open-ended: The agent writes raw HTML. Your app renders it in a sandbox. Every Gen UI framework in 2026 lives somewhere on this line. The differences are architectural, not cosmetic. Each pattern breaks your app in a different way at scale. I tried different stacks. Most cover one pattern well. Landed on CopilotKit because it supports all three on the same runtime, riding AG-UI. That's the stack everything below runs on. Pattern 1: Controlled, frontend owns the UI This is where most teams start. It's also where most teams get stuck. You pre-build a React component. You bind it to a tool name. The agent picks that tool and the component renders inline in chat with the agent's args as props. One frontend hook. Zero agent code. That's it. js "use client"; import { z } from "zod"; import { useComponent } from "@copilotkit/react-core/v2"; const expenseChartSchema = z.object { title: z.string , data: z.array z.object { label: z.string , value: z.number } , } ; function ExpenseChart { title, data }: z.infer