New updates to A2UI and Flutter's GenUI package
Article Summary
Andrew Brogdon from Flutter's team just dropped a major architectural overhaul that fundamentally changes how developers build AI-powered UIs. If you've been wrestling with GenUI's rigid structure, this update is a game-changer.
Flutter's GenUI package and the A2UI protocol have been completely reimagined in v0.9. The update shifts from a 'Structured Output First' approach to a 'Prompt First' philosophy, decoupling the architecture and giving developers direct control over LLM interactions instead of hiding them behind wrapper classes.
Key Takeaways
- ContentGenerator class removed: you now control LLM setup and lifecycle directly
- Prompt-first approach puts UI schema in system instructions, not API constraints
- New PromptBuilder tool auto-generates correct A2UI prompts from your catalog
- Breaking changes include flat component definitions and renamed properties throughout
- New genai_primitives package provides reusable types for any GenAI app
Flutter's GenUI v0.9 trades convenience wrappers for architectural flexibility, letting you wire up any LLM provider while the framework handles UI state management and A2UI message parsing.
About This Article
Deeply nested A2UI schemas confused LLMs and went against how they naturally generate text. Using structured output APIs also meant hitting limits on catalog size and complexity, which made debugging harder since all the constraints were stuck in the network layer.
Flutter's team decided to put the prompt first. They added UI schema and A2UI instructions directly into the system prompt as plain text, then built PromptBuilder to automatically create correct system prompts from any catalog.
Modern LLMs work well with detailed system instructions written as plain text, which matches how they actually think. Developers can now change UI schemas directly to fit their apps without waiting for new package releases.