Mobaxterm
ArticlesCategories
Programming

Flutter GenUI Package Gets Major Overhaul: New Architecture Gives Developers Unprecedented Control

Published 2026-05-17 17:52:21 · Programming

Breaking: Flutter Team Releases Updated GenUI Package and A2UI Protocol v0.9

The Flutter team has released a significant update to the genui package and the A2UI protocol, introducing a complete architectural overhaul that shifts control back to developers. The update moves from a "Structured Output First" approach to a "Prompt First" philosophy, and decouples the framework into distinct layers. This change aims to simplify integration with large language models (LLMs) and provide direct management of chat histories, retry logic, and error handling.

Flutter GenUI Package Gets Major Overhaul: New Architecture Gives Developers Unprecedented Control

"This update puts developers firmly in the driver's seat," said a spokesperson for the Flutter team. "By removing the old ContentGenerator and introducing a layered architecture, we're enabling teams to use any LLM provider they prefer without framework constraints." The changes are driven by adoption of A2UI protocol v0.9.

Background: What is GenUI?

Generative UI (GenUI) is a user experience pattern where an AI agent not only generates content but also decides how to display and interact with that content. For Flutter developers, this was previously implemented through the A2UI protocol—an open standard for agent-renderer collaboration—and the genui package. The genui package connected Flutter apps with an agent via A2UI, providing a catalog of widgets for the agent to use.

Earlier versions relied on a ContentGenerator-based architecture, which abstracted prompt construction, LLM calls, and response parsing. However, this abstraction limited developer flexibility. The new update changes that entirely.

Architecture Decoupling: The Core Change

The latest package:genui v0.9.0 removes the ContentGenerator class entirely. In its place, the framework is now split into three distinct layers:

  • Engine (SurfaceController): Manages UI state and rendering.
  • Transport (A2uiTransportAdapter): Streams messages between agent and renderer.
  • Facade (Conversation): Provides a high-level API for managing chat states.

This decoupling means developers have full control over chat history, retry logic, error handling, and LLM connections. "You can now set up your connection however you like," the spokesperson added. "No more wrapping your agent with a ContentGenerator."

As a result, provider-specific wrapper packages—such as genui_dartantic, genui_google_generative_ai, and genui_firebase_ai—are no longer needed. The latest package tree no longer includes them.

Migration Guide: Old vs. New Approach

Developers upgrading from v0.7.0 to v0.9.0 must update their code significantly. Previously, you would pass a ContentGenerator to a SurfaceController. Now, your app is responsible for setting up an LLM connection and passing messages through a TransportAdapter.

Example of the old approach: final generator = FirebaseAiContentGenerator(...);. The new approach requires creating your own chat loop. Full migration steps are available in the official guide.

What This Means for Developers

This update signifies a philosophical shift towards developer sovereignty. By removing the black-box ContentGenerator, Flutter's GenUI now gives developers direct access to LLM interactions. This leads to:

  • Flexibility: Use any model or provider without framework wrappers.
  • Control: Implement custom retry logic, error handling, and prompt construction.
  • Simplicity: The layered architecture makes the framework easier to understand and debug.

"We expect this to streamline integration for teams building AI-first user interfaces," the Flutter team concluded. The updates are available now. Developers can download the latest package from pub.dev and review the migration guide for v0.9.0.