genui
Generates and displays generative user interfaces (GenUI) in Flutter using AI.
0.10.2
26K downloads/mo
#1953 most downloaded on pub.dev
flutter/genui
What this package is like to depend on
Last release 12 days ago
12 Aug 2026
Ships on a steady schedule
a new release about every 5 weeks
Nearly every release is documented
notes for 11 of 11 stable releases
Nothing withdrawn
no release was ever pulled
9 months old
11 releases · first in 2025
11 releases in the last 12 months
see the full history below
Release timeline
11 releases · Nov 2025 to Aug 2026Releases
latest 11-
0.10.212 Aug 2026Release notes
Open source →-
Fixed
A2uiTransportAdapter.incomingTexttrimming every streamed chunk, which made words run together when chunks were concatenated. -
Added examples of how to use TextField.
-
Fixed
TextFieldvariants:longTextnow grows to fit multiple lines,numbernow rejects non-numeric input, and theobscuredexample now setsvariantso that it is actually obscured. -
TextField.validationRegexpis now enforced: the value has to match the pattern in full, an empty field is exempt, and a value that does not match shows an error and blocksonSubmittedAction. It was previously accepted and ignored.
-
-
0.10.120 Jul 2026 -
0.10.016 Jul 2026Release notes
Open source →- BREAKING: Changed
SurfaceDefinition.validateto be asynchronous to support resolving$refschemas viaSchemaRegistry. - Refactor: genui now runs on
package:a2ui_core. See the migration guide. - BREAKING: A2UI message types are now
package:a2ui_coretypes. The GenUI message classes (A2uiMessage,CreateSurface,UpdateComponents,UpdateDataModel,DeleteSurface) are removed;SurfaceController.handleMessageandTransport.incomingMessagestakea2ui_coremessages, andUpdateComponentsMessagecarries raw component JSON maps rather thanComponentobjects. Depend ona2ui_coredirectly. - BREAKING:
SurfaceController.storeandDataModelStoreare removed. Read a surface's data model viaSurfaceController.contextFor(id).dataModel. - BREAKING:
SurfaceRegistry.updateSurface(...)is removed; drive surfaces throughSurfaceController.handleMessage. - BREAKING: Changed
PromptBuilder.chatandPromptBuilder.customfrom synchronous factory constructors to asynchronous static methods (createChatandcreateCustom) to support asynchronous asset loading. - BREAKING: Changed
_loadSchemasreturn type to a named record structure. - BREAKING: Restricted public API surface of low-level
primitivesexports. OnlyCancellationException,CancellationSignal,JsonMap,basicCatalogId,configureLogging,genUiLogger, andgenerateIdare now exported frompackage:genui/genui.dart. - Behavior:
DataModelwrites are stricter; some writes that previously did nothing now throw, and sparse list writes fill skipped entries withnull. - Behavior: A duplicate
createSurfacefor an already-active surface id is now an error. - The catalog-widget authoring API is unchanged;
SurfaceDefinitionandComponentremain genui types. - Refactor: Extracted exception mapping logic to a private helper
_errorToMapinSurfaceController. - Refactor: Centralized and shared common schema registry initialization helper.
- Refactor: Extracted mock binary messenger asset setup to a shared helper for test reuse.
- Fix: Sanitized raw error messages exposed from
ArgumentErrorinButtonpress handlers. - Docs Removed
google_generative_aifrom the README.md.
- BREAKING: Changed
-
0.9.204 Jun 2026 -
0.9.027 Apr 2026Release notes
Open source →- BREAKING: Reorganized library exports (#866).
- Feature: Add two skills to the
genuipackage (#800). - Feature: Create Dart replicas for Flutter's notifiers (#850).
- Feature: Add
FlutterListenableadapter (#860). - Fix: Improvements to prompt builder to prevent misleading LLM (#841).
- Fix: Match
A2uiMessage.a2uiMessageSchemato A2UI v0.9 specification (#833). - Fix: Bug fixes for A2UI JSONL stream parser (#868).
-
0.8.001 Apr 2026Release notes
Open source →-
Fix tests
-
Update packages/genui/lib/src/engine/surface_controller.dart
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
- Update packages/genui/lib/src/facade/prompt_builder.dart
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
- Add comment, test turn counts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Release notes
Open source →- BREAKING: Updated package to align with A2UI v0.9 protocol and introduced extensive architectural changes.
- BREAKING: Updated minimum Dart SDK constraints to
^3.10.0to leverage modern Dart 3+ syntax and features (#772). - BREAKING:
DataModelis now an abstract interface class.InMemoryDataModelprovides the concrete implementation. - BREAKING: Enforce non-null
DataPathinDataModel.update,subscribe, andgetValueoperations (#743). - BREAKING:
DataContext.evaluaterenamed toresolve, returningStream<Object?>. - BREAKING: Made client functions reactive and catalog-based.
SimpleClientFunctionrenamed toSynchronousClientFunctionand itscallmethod toexecuteSync. - BREAKING: Removed global
FunctionRegistry. Functions are now registered to the catalog. RenamedregisterStandardFunctionstoregisterBasicFunctions. - BREAKING: Removed
SurfaceCleanupStrategyfromSurfaceController. - BREAKING:
SurfaceContextandSurfaceDefinitionnow require a non-nullablecatalogId. - BREAKING: Renamed
CoreCatalogtoBasicCatalogand relocated catalog widgets. - Feature: Added
examplesapp with a gallery of pre-designed surfaces allowing editing/previewing A2UI JSON (#761). - Feature: Implemented audio and video basic catalog components (#802).
- Feature: Added client capabilities JSON generation via
A2UiClientCapabilities.fromCatalogs(#773). - Feature: Initial implementation of prompt builder via
PromptBuilderand theConversationfacade (#777). - Feature: Consolidated component name into
CatalogItemconstructor (#757). - Feature: Added descriptions to basic component schemas for standard validation (#756).
- Fix: Filter whitespace-only AI text responses from transport (#759).
- Fix: Resolved
DataModeldouble-dispose crashing issue (#741). - Fix: Fixed memory leaks in
RefCountedValueNotifierand refactored catalog widgets to use lifecycle-safeBoundValue/BoundStringwidgets. - Refactor: Decoupled
ClientFunctionfromDataContextand resolved package cycles (#742). - Refactor: Updated
Modalcomponent to self-contain showing logic. - Internal: Removed legacy events
ToolStartEvent,ToolEndEvent,TokenUsageEvent, andThinkingEventfrom the core genui package.
-
-
0.7.007 Feb 2026Release notes
Open source →- Fix: Improved error handling for catalog example loading to include context about the invalid item (#653).
- BREAKING: Renamed
ChatMessageWidgettoChatMessageViewandInternalMessageWidgettoInternalMessageView(#661). - Fix: Pass the correct
catalogIdinDebugCatalogViewwidget (#676). - BREAKING: Renamed most classes with
GenUiprefix to remove the prefix or useSurface.GenUiConversation->ConversationGenUiController->SurfaceControllerGenUiSurface->SurfaceGenUiHost->SurfaceHostGenUiContext->SurfaceContextGenUiTransport->TransportGenUiPromptFragments->PromptFragmentsGenUiFunctionDeclaration->ClientFunctionGenUiFallback->FallbackWidgetconfigureGenUiLogging->configureLogging
- Added some dart documentation and an
exampledirectory to improvepackage:genuipub score. - Fix: Make
ContentGeneratorErrorbe anException(#660). - Feature: Define genui parts as extensions of
genai_primitives(#675). - Internal: Enable stricter dynamic-related analysis (#652).
-
0.6.105 Jan 2026Release notes
Open source →- Fix: Corrected
DateTimeInputcatalog item JSON key mapping (#622). - Fix: Added missing
weightproperty toComponentconstructor (#603). - Fix: Defaulted
TextFieldwidthto 1 when nested in aRow(#603).
- Fix: Corrected
-
0.6.016 Dec 2025Release notes
Open source →- BREAKING: Renamed
GenUiManagertoA2uiMessageProcessorto better reflect its role. - BREAKING:
A2uiMessageProcessornow accepts anIterable<Catalog>viacatalogsinstead of a singlecatalog. - BREAKING: Removed
GenUiConfigurationandActionsConfig. - BREAKING: Removed
GenUiHost.catalogin favor ofGenUiHost.catalogs. - Improved surface rendering logic to cache components before rendering.
- Updated README sample code to reflect current
FirebaseAiContentGeneratorAPI (addedcatalogparameter and replacedtoolswithadditionalTools). - Feature:
GenUiManagernow supports multiple catalogs by accepting anIterable<Catalog>in its constructor. - Feature:
A2uiMessageProcessornow supports multiple catalogs by accepting anIterable<Catalog>in its constructor. - Feature:
catalogIdproperty added toUiDefinitionto specify which catalog a UI surface should use. - Refactor: Moved
standardCatalogIdconstant frombasic_catalog.darttoprimitives/constants.dartfor better organization and accessibility. - Fix:
MultipleChoicewidget now correctly handlesmaxAllowedSelectionswhen provided as adoublein JSON, preventing type cast errors. - Fix: The
Textcatalog item now respects the ambientDefaultTextStyle, resolving contrast issues where, for example, text inside a dark purple primaryButtonwould be black instead of white.
- BREAKING: Renamed
-
0.5.112 Nov 2025Release notes
Open source →- Homepage URL was updated.
- Deprecated
flutter_markdownpackage was replaced withflutter_markdown_plus.
-
0.5.012 Nov 2025