New in Generative UI: Catalogs, Surfaces and Markdown Mode

By Anmol Baranwal and Eli Berman
October 29, 2026
New in Generative UI: Catalogs, Surfaces and Markdown Mode

Today, we're excited to release major upgrades to Generative UI in CopilotKit!

We've added a standard catalog of 70 ready-made components, including forms, charts, maps, and more. You can extend the catalog with your own components or override any of ours, so the generated UI always follows your design system.

With surfaces, your agent can generate UI outside the chat, anywhere on your page. The new markdown mode lets your agent write UI straight into its reply, so text and UI stream together as one answer.

Everything is built on A2UI v1.0, works with any agent, and is token-efficient and safe by design. Setup takes just two lines.

What's new in Generative UI

Here's everything that ships with this release:

  1. Standard catalog: 70 ready-made components across layout, text, inputs, tables, charts, maps, and media, enabled with a single prop.
  2. Custom components: register your own with createGenerativeUI, then extend, omit, or override the standard catalog to match your design system.
  3. Surfaces: wrap any part of your page in GenerativeUISurface and the agent can render there, with your own content as the fallback.
  4. Tool mode: the default mode, where the agent sends UI through a tool call and the UI renders piece by piece as it streams.
  5. Markdown mode: the agent can now write UI straight into its reply, so text and UI stream together as one answer.
  6. Live values and actions: connect generated UI to your app’s state and functions, so prices recompute in the browser and buttons can run your code.
  7. Theming: match your brand's colors and fonts, with dark mode built in.
  8. Debug in the CopilotKit Inspector: a new Generative UI pane shows every rendered surface, anything that got rejected and why, and the exact prompt the model received.

Our engineering team put a lot of effort into making generative UI with CopilotKit easier to build, customize and debug. If you have feedback or ideas, we'd love to hear them on GitHub or in our Discord community.

Setup in two lines

If you already use CopilotKit, run pnpm update to get the latest version, then pass the standard catalog (standardUI) to your provider and pick a mode:

import { standardUI } from "@copilotkit/react-core/v2/generative-ui";

<CopilotKitProvider
  runtimeUrl="/api/copilotkit"
  generativeUI={{ ui: standardUI, transport: "markdown" }} // "tool" is the default
>

Your runtime doesn't change. The built-in agent works out of the box, and any AG-UI agent (LangGraph, Mastra, Google ADK and more) just needs to pass the run's tools and context to its model.

Here's what it looks like in action!

__wf_reserved_inherit

Starting a new app? The quickstart walks you through it and has a ready-made prompt you can copy into your coding agent to set everything up.

Use our standard catalog or bring your own components

The standard catalog gives your agent 70 components, covering layout, text, form inputs, tables, images, video, charts built on Recharts and maps built on MapLibre. There are ready-made blocks too, like link previews, citations, product cards and follow-up suggestions.

Every component is interactive, so a slider can update a price and a chart instantly in the browser, without another request to the agent.

To add your own components, register them with createGenerativeUI. The description tells the agent when to render each component, and the props define what it passes in (via Zod, Valibot, ArkType).

const shopUI = createGenerativeUI({
  id: "acme/shop@1",
  extends: [standardUI],
  components: {
    ProductCard: {
      component: ProductCard,
      description: "One product, with values from the search results.",
      props: z.object({ name: z.string(), price: z.number(), ... }),
    },
  },
});

Three options let you decide how your catalog sits alongside the standard one:

  • extends keeps the standard catalog next to yours, so the agent can place your product cards inside its own rows and grids.
  • omit removes the components you don't need. The agent stops seeing them, which keeps the prompt smaller.
  • overrides swaps any standard component for your own, so every card and button matches your design system.
__wf_reserved_inherit

The whole catalog is fully typed, so a misspelled component name or an undefined prop gets caught before you ship.

Surfaces: Generative UI outside the chat

Until now, generative UI in CopilotKit only happened in the chat. With surfaces, the agent can render anywhere on your page, which brings it into full products like a store or a dashboard. This is the part of the release we're most excited about.

Here's the Featured row of a store's home page, turned into a surface.

export function FeaturedSection({ products }) {
  return (
    <section>
      <h2>Featured</h2>
      <GenerativeUISurface
        id="featured"
        ui={shopUI}
        description="The Featured Products row of the home page. Show products here as a ProductGrid of ProductCards."
        components={["ProductGrid", "ProductCard"]}
        fallback={<ProductGrid products={products} />}
      />
    </section>
  );
}

The description tells the agent what the area is for, components limits what it can render there, and the fallback is your regular row until the agent takes over.

Our shop example uses surfaces across a real store. The Featured row, product pages and the cart are all surfaces, so users can reshape any of them from the chat to fit what they need.

Fast to stream, light on tokens

Speed and token cost decide whether generative UI holds up in production, so we prioritized both for this release.

Tool mode streams the UI piece by piece, so it builds on screen while the model is still writing. Markdown mode does the same inside the agent's reply, so text and UI arrive together with no extra model call.

Here's how we keep token use down:

  • The agent only gets the instructions your catalog actually uses.
  • Components you omit leave the prompt entirely.
  • Your agent writes the UI itself, with no separate model designing it in the background.
  • Sliders, live values and form checks run in the browser, so interacting with the UI costs zero tokens.

Safe by default, easy to debug

Every piece the agent sends is checked against your catalog before it renders. If something doesn't match, the agent gets the reason and fixes it on the next turn. And generated UI never executes code on your page.

We've also added a new Generative UI pane to the CopilotKit Inspector to help you debug every surface. It shows what rendered, anything rejected and why, and the exact prompt the model received.

__wf_reserved_inherit

Built on A2UI 1.0

Under the hood, the agent speaks A2UI 1.0, the framework-agnostic generative UI protocol from Google. The standard catalog includes all 18 A2UI basic components, plus 52 more from us.

If you already use A2UI with CopilotKit, nothing breaks. These features are experimental while the A2UI 1.0 spec is being finalized, so the API may still change.

Get started

The easiest way to start is the quickstart guide. Copy its setup prompt into your coding agent, and it wires generative UI into your app for you.

To learn more:

Want help bringing it into your product? Book a call with our engineers, and we'll set it up with your components and design system.

We can't wait to see what you build. Follow CopilotKit on Twitter for what's next, and join the CopilotKit and AG-UI communities if you get stuck.

Top posts

See All
Introducing OpenDuet: Open-Source Proactive AI Coworkers
Eli Berman and Anmol BaranwalOctober 27, 2026
Introducing OpenDuet: Open-Source Proactive AI CoworkersToday we're releasing OpenDuet, an open-source proactive AI agent that tells you what needs you, handles what can wait and asks before it acts. Host it yourself, bring any agent through AG-UI and use any model. It's built for web and mobile.
CopilotKit Soar vs Grok Bot: Self-Hosted AI Coworkers for Your Business
Anmol Baranwal October 23, 2026
CopilotKit Soar vs Grok Bot: Self-Hosted AI Coworkers for Your BusinessCopilotKit vs Grok Bot: a comparison for businesses choosing AI coworkers. Grok Bot from xAI gives each person always-on AI coworkers that run only on Cursor-hosted cloud computers, with models Cursor picks. CopilotKit Soar runs on your own servers, gives teams shared AI coworkers, works with any agent and any model, and is set up by our engineers under your brand. See how they compare on where they run, data, models, sign-in, control and audit, and which one fits your company.
CopilotKit Soar vs OpenAI dots: Self-Hosted AI Coworkers for Your Business
Anmol Baranwal October 23, 2026
CopilotKit Soar vs OpenAI dots: Self-Hosted AI Coworkers for Your BusinessCopilotKit vs OpenAI dots: a comparison for businesses choosing AI coworkers. OpenAI's dots are always-on AI coworkers in ChatGPT, each with its own OpenAI cloud computer, access to over 4,000 apps and one user it belongs to. CopilotKit Soar runs on your own servers, gives teams shared AI coworkers, works with any agent and any model, and is set up by our engineers under your brand. See how they compare on ownership, data, connected apps, learning, approvals and audit, and which one fits your company.
Are you ready?

Stay in the know

Subscribe to our blog and get updates on CopilotKit in your inbox.