PackageTrack
Sign in Get early access

ai_sdk_flutter_ui

Flutter UI controllers and prebuilt widgets for the AI SDK Dart port.

2.0.0 codenameakshay/ai_sdk_dart

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 2026
Release Pre-release

Releases

latest 5
  1. 2.0.0 11 Aug 2026
    Release notes

    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

    Open source →
    Release notes
    • 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 remoteImageProviderBuilder after validation.
    • Improved error/retry/stop/approval states, citation semantics and keyboard access, live reduced-motion behavior, and long-history scrolling.

    Open source →
  2. 1.2.0 01 Jul 2026
    Release notes

    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 AiApiCallError carrying the provider's message, type, code, statusCode, raw body, and an isRetryable flag — consistently across every provider. The AiSdkError hierarchy moved into ai_sdk_provider (re-exported by ai_sdk_dart, so the public surface is unchanged).

    🧩 Shared ai_sdk_openai_compatible base (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/response HttpClientTransport; web-safe — dart:io is 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, an AiMotion motion/haptics vocabulary, and a first-class reduced-motion path. Fixed a PressableScale crash-on-dispose under reduced motion.

    ✅ Correctness

    onAbort now interrupts an in-flight streamText; stopWhen can extend the tool loop past maxSteps. Removed the unusable generateVideo / VideoModelV1 (no backing provider). OpenAI image generation no longer sends response_format to gpt-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_ui

    See each package's CHANGELOG.md for full details.

    Full Changelog: 1.1.0...1.2.0

    Open source →
    Release notes

    Turns ai_sdk_flutter_ui into 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 in DESIGN.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 a ChatController + ToolLoopAgent.
    • ChatMessageList — renders message history + an optimistic streaming bubble; auto-scrolls; optional messageBuilder.
    • 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 an onOpen callback.
    • 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 by needsApproval.
    • SourceCitations — a wrap of citation chips for source parts, with an onTap callback.

    Input & navigation

    • ChatComposer — text field + send button; disabled while loading; optional onStop/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 an ObjectStreamController's partial JSON as it streams.

    Controller improvements

    • ObjectStreamController — added a useObject-style convenience: pass model/schema to the constructor and call submit(prompt), which runs streamText(output: Output.object(schema:)) and binds the partial-output stream. bind(Stream<T>) is still available for full flexibility. submit throws a clear StateError if model/schema are missing.
    • ChatController — added an isStreaming getter (status == ChatStatus.streaming) for consistency with CompletionController and ObjectStreamController.
    • ChatController and CompletionController now surface streaming errors. Errors raised during a streamText run arrive on the full event stream rather than the text stream; both controllers now watch it, so error/onError (and ChatStatus.error) fire on streaming failures, not just setup failures. Subscriptions are cleaned up on stop/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 a testWidgets pass for every widget. 99.5% line coverage.

    Fixes

    • PressableScale no longer throws when disposed after being built under reduced motion. Its animation controller is now created in initState instead of lazily in build, so tearing the widget down (when it never built the animated path) no longer constructs a Ticker against a defunct element ("Looking up a deactivated widget's ancestor is unsafe").
    Open source →
  3. 1.1.0 15 Apr 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 1.0.0+1...1.1.0

    Open source →
    Release notes
    • Bumped ai_sdk_dart constraint to ^1.1.0 to pick up timeout, onAbort, and all other 1.1.0 core improvements.
    • No controller-level behaviour changes; version aligned with the rest of the monorepo.

    Open source →
  4. 1.0.0 17 Mar 2026
    Release notes

    First stable release. Package renamed from ai_sdk_flutterai_sdk_flutter_ui to avoid conflicts with existing pub.dev packages. Depends on ai_sdk_dart 1.0.0.

    • ChatController — manages a chat message list, streams assistant replies, handles optimistic UI updates. Implements Listenable for use with ListenableBuilder.
    • 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.

    Open source →
  5. 1.0.0+1 17 Mar 2026
    Release notes Open source →
    Release notes
    • Improved pubspec descriptions for better pub.dev discoverability.
    • Added example/example.md with usage examples and links to runnable apps.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive