ai_sdk_flutter_ui
Flutter UI controllers and prebuilt widgets for the AI SDK Dart port.
What this package is like to depend on
Last release 12 days ago
11 Aug 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
5 releases · first in 2026
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · Mar 2026 to Aug 2026Releases
latest 5-
2.0.011 Aug 2026Release notes
Open source →AI SDK Dart 2.0 is a coordinated major release across all 13 packages.
Highlights
- V4 is now the only language-model provider contract.
- Generation and streaming gain scoped timeouts, provider-backed cancellation, stable runtime context and telemetry APIs, structured output improvements, and safer streamed tool execution.
- Provider usage reports nested input/output token details, including cache reads and writes where available.
- Flutter UI gains polished tool approval, source citation, reasoning, streaming, error, and long-history experiences.
- MCP transports and lifecycle handling are substantially hardened.
Breaking changes
Upgrade every ai_sdk package together. The obsolete V3 language-model contract, experimental API names, video surface, and old provider call fields were removed without compatibility shims.
Read the 2.0 migration guide before upgrading.
Packages
All 13 packages are published on pub.dev.
What's Changed
- fix(openai): surface reasoning/thinking deltas on streaming + non-streaming paths (fixes #3) by @codenameakshay in #7
- chore: add SessionStart hook to provision Flutter via FVM on the web by @codenameakshay in #5
- feat(usage): map provider cache tokens into inputTokenDetails by @codenameakshay in #9
- Prepare the next release with V4 providers and hardened UX by @codenameakshay in #10
- Prepare the coordinated 2.0.0 release by @codenameakshay in #11
Full Changelog: 1.2.0...2.0.0
Release notes
Open source →- Hardened controller cancellation/disposal and coalesced streaming updates to frame boundaries.
- URL-backed model images are blocked by default to prevent untrusted automatic
network requests; opt in with
remoteImageProviderBuilderafter validation. - Improved error/retry/stop/approval states, citation semantics and keyboard access, live reduced-motion behavior, and long-history scrolling.
-
1.2.001 Jul 2026Release notes
Open source →Coordinated 1.2.0 release across all 13 packages — now live on pub.dev. A v6 hardening pass that makes the AI SDK Dart port more complete, honest, and tested.
Highlights
🚨 Typed provider API errors (new)
Non-2xx provider responses now throw a typed
AiApiCallErrorcarrying the provider'smessage,type,code,statusCode, raw body, and anisRetryableflag — consistently across every provider. TheAiSdkErrorhierarchy moved intoai_sdk_provider(re-exported byai_sdk_dart, so the public surface is unchanged).🧩 Shared
ai_sdk_openai_compatiblebase (new package)A shared OpenAI Chat Completions implementation now powers OpenAI / Azure / Groq / Mistral. All 8 providers support tool use + multimodal image input; Cohere & Ollama gained them natively.
🔌 MCP
Real Server-Sent-Events streaming transport (
SseClientTransport) plus a plain request/responseHttpClientTransport; web-safe —dart:iois isolated behind conditional imports, so the client runs on Flutter web.📱 Flutter UI hub
19 prebuilt, themeable Material widgets plus hardened controllers (
ObjectStreamController.submit,ChatController.isStreaming, streaming-error surfacing). A restrained Material 3 redesign — bubbleless assistant transcript, anAiMotionmotion/haptics vocabulary, and a first-class reduced-motion path. Fixed aPressableScalecrash-on-dispose under reduced motion.✅ Correctness
onAbortnow interrupts an in-flightstreamText;stopWhencan extend the tool loop pastmaxSteps. Removed the unusablegenerateVideo/VideoModelV1(no backing provider). OpenAI image generation no longer sendsresponse_formattogpt-image-1.🧪 Quality
1,057 tests (924 Dart + 133 Flutter), 99.9% line coverage (11 of 12 packages at 100%), enforced by a CI coverage gate.
Packages (all published at 1.2.0)
ai_sdk_provider·ai_sdk_dart·ai_sdk_openai_compatible·ai_sdk_openai·ai_sdk_anthropic·ai_sdk_google·ai_sdk_azure·ai_sdk_cohere·ai_sdk_groq·ai_sdk_mistral·ai_sdk_ollama·ai_sdk_mcp·ai_sdk_flutter_uiSee each package's
CHANGELOG.mdfor full details.Full Changelog: 1.1.0...1.2.0
Release notes
Open source →Turns
ai_sdk_flutter_uiinto a one-stop Flutter UI hub: prebuilt widgets, hardened controllers, and full test coverage.Visual design
- Reworked the widget set toward a restrained Material 3 look: a bubbleless assistant transcript
(user turns keep a bubble; assistant turns are plain text with a subtle marker), a shared motion +
haptics vocabulary (
AiMotion, built only from core Flutter primitives — no animation dependency), gentle ease-out curves over bounce, and a first-class reduced-motion path. The design system is documented inDESIGN.md.
Prebuilt widget library (new)
19 composable, themeable Material widgets that read only the controllers' public state and
Theme.of(context). No heavy platform dependencies — attachment rendering and link-opening are exposed as callbacks.Scaffolding & message list
AiChatScaffold— drop-in chat body (ChatMessageList+ChatComposer) wired to aChatController+ToolLoopAgent.ChatMessageList— renders message history + an optimistic streaming bubble; auto-scrolls; optionalmessageBuilder.ChatMessageBubble— a single message styled by role, with selectable text.AssistantMessageView— a rich assistant turn composing text, reasoning, tool calls, sources, and media together.MessageMedia/MessageImage/MessageAttachment— render image and file attachments on a message, with anonOpencallback.MessageActionsBar— a per-message action row (copy, retry, …) with callbacks.
Streaming & status
StreamingTextView— streaming text with a subtle blinking cursor.TypingIndicator— animated "assistant is typing" dots.UsageView— a compact token-usage summary (prompt / completion / total).
Reasoning, tools & sources
ReasoningView— a collapsible panel for reasoning / "thinking" text.ToolCallCard— a tool call (name + pretty-printed JSON args) and its result/error.ToolApprovalCard— approve/reject UI for tools gated byneedsApproval.SourceCitations— a wrap of citation chips for source parts, with anonTapcallback.
Input & navigation
ChatComposer— text field + send button; disabled while loading; optionalonStop/onAttach.PromptSuggestions— tappable starter-prompt chips.ScrollToBottomButton— appears when the list is scrolled up; jumps to the latest message.ChatErrorView— an inline error banner with a retry callback.
Object streaming
ObjectStreamView— renders anObjectStreamController's partial JSON as it streams.
Controller improvements
ObjectStreamController— added auseObject-style convenience: passmodel/schemato the constructor and callsubmit(prompt), which runsstreamText(output: Output.object(schema:))and binds the partial-output stream.bind(Stream<T>)is still available for full flexibility.submitthrows a clearStateErrorifmodel/schemaare missing.ChatController— added anisStreaminggetter (status == ChatStatus.streaming) for consistency withCompletionControllerandObjectStreamController.ChatControllerandCompletionControllernow surface streaming errors. Errors raised during astreamTextrun arrive on the full event stream rather than the text stream; both controllers now watch it, soerror/onError(andChatStatus.error) fire on streaming failures, not just setup failures. Subscriptions are cleaned up onstop/clear/dispose.
Tests
- Added the package's first test suite: 133 tests (controller + widget) covering state
transitions,
streamingContent,append/reload/clear/stop,onFinish/onError,isStreaming,ObjectStreamController.submit/bind, and atestWidgetspass for every widget. 99.5% line coverage.
Fixes
PressableScaleno longer throws when disposed after being built under reduced motion. Its animation controller is now created ininitStateinstead of lazily inbuild, so tearing the widget down (when it never built the animated path) no longer constructs aTickeragainst a defunct element ("Looking up a deactivated widget's ancestor is unsafe").
- Reworked the widget set toward a restrained Material 3 look: a bubbleless assistant transcript
(user turns keep a bubble; assistant turns are plain text with a subtle marker), a shared motion +
haptics vocabulary (
-
1.1.015 Apr 2026Release notes
Open source →What's Changed
- Development environment setup: fix dependency conflict + add AGENTS.md by @codenameakshay in #1
- feat: update v1.1.0 by @codenameakshay in #2
New Contributors
- @codenameakshay made their first contribution in #1
Full Changelog: 1.0.0+1...1.1.0
Release notes
Open source →- Bumped
ai_sdk_dartconstraint to^1.1.0to pick uptimeout,onAbort, and all other 1.1.0 core improvements. - No controller-level behaviour changes; version aligned with the rest of the monorepo.
-
1.0.017 Mar 2026Release notes
Open source →First stable release. Package renamed from
ai_sdk_flutter→ai_sdk_flutter_uito avoid conflicts with existing pub.dev packages. Depends onai_sdk_dart1.0.0.ChatController— manages a chat message list, streams assistant replies, handles optimistic UI updates. ImplementsListenablefor use withListenableBuilder.CompletionController— single-turn text completion with streaming and status tracking.ObjectStreamController<T>— streams partial structured objects, providing live partial updates as JSON arrives.- Full hook parity with Vercel AI SDK v6 React hooks:
append,reload,clear/reset,isStreaming,onFinish,onError.
-
1.0.0+117 Mar 2026Release notes
Open source →Full Changelog: https://github.com/codenameakshay/ai_sdk_dart/commits/1.0.0+1
Release notes
Open source →- Improved pubspec descriptions for better pub.dev discoverability.
- Added
example/example.mdwith usage examples and links to runnable apps.