# New updates to A2UI and Flutter's GenUI package

DevFeed: [New updates to A2UI and Flutter's GenUI package](<https://devfeed.tech/articles/new-updates-to-a2ui-and-flutter-s-genui-package-23042.md>)

Original publisher: [Read original article](<https://blog.flutter.dev/new-updates-to-a2ui-and-flutters-genui-package-e5ddff07737b?source=rss----4da7dfd21a33---4>)

Author: Andrew Brogdon

Published: 2026-05-14T14:18:22Z

Content type: tutorial

Language: en

Sources: [Flutter - Medium](<https://devfeed.tech/sources/flutter-medium.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [framework](<https://devfeed.tech/tags/framework.md>), [generative-ai-tools](<https://devfeed.tech/tags/generative-ai-tools.md>), [generative-ui](<https://devfeed.tech/tags/generative-ui.md>), [ios](<https://devfeed.tech/tags/ios.md>), [language-models](<https://devfeed.tech/tags/language-models.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [retry](<https://devfeed.tech/tags/retry.md>), [updates](<https://devfeed.tech/tags/updates.md>)

## AI overview

This migration guide explains updates to Flutter's genui package and the A2UI protocol. The package adopts A2UI v0.9, shifts from a Structured Output First to a Prompt First approach using JSON blocks in agent responses, and separates UI state and rendering, message transport, and conversation management into distinct layers.

## Source excerpt

Generative UI, or GenUI for short, is a user experience pattern in which an agent not only generates content, but also makes decisions about how that content should be displayed and made interactive for the user. For Flutter developers, implementing GenUI means using A2UI, an open protocol that defines a way for agents and clients (or "renderers") to collaborate on the composition and state of a user interface. To capitalize on this, the Flutter team built genui, a package that uses A2UI to connect with an agent and provide it with a catalog of widgets to use, and then presents those widgets to the user. Both the genui package and the A2UI protocol recently got an update! The latest release of genui introduces several architectural changes to the framework. Driven by adoption of v0.9 of the A2UI protocol, this update shifts genui from a "Structured Output First" philosophy in which A2UI messages were streamed through structured output APIs to a "Prompt First" approach in which agents include blocks of JSON as text in their responses. It also decouples the architecture, providing more direct control over how your application interacts with Large Language Models (LLMs). If you are migrating an app from v0.7.0 to v0.9.0 of the genui package, this guide covers the necessary steps, from dependency cleanup to wiring up your new chat loops. Architecture decoupling In previous versions, GenUI relied on a series of classes based on ContentGenerator. These classes hid the details of prompt construction, LLM network calls, and response parsing. The latest version of package:genui removes ContentGenerator. Instead, the framework is now split into distinct layers: Engine (SurfaceController): Manages the state and rendering of your UI. Transport (A2uiTransportAdapter): Streams messages between the agent and renderer. Facade (Conversation): Provides a high-level API for managing chat states. This decoupling means you have control over chat history, retry logic, and error handling.