Documents
CHANGELOG
CHANGELOG
Type
External
Status
Published
Created
Mar 17, 2026
Updated
May 13, 2026
Updated by
Dosu Bot
Source
View

@assistant-ui/react-ai-sdk#

1.3.26#

Patch Changes#

  • #4030 798a5ce - fix(react-ai-sdk): resolve MCP app metadata from tool output _meta["ui/resourceUri"] as a fallback when it isn't present in callProviderMetadata.mcp.app. MCP-UI tools (e.g. xmcp) surface the UI pointer in the call result, so the renderer previously never picked it up. (@Yonom)

1.3.25#

Patch Changes#

  • #4024 19d4d94 - feat: add native MCP Apps renderer — McpAppRenderer composes into Tools to render MCP UI resources inline in chat over a JSON-RPC postMessage bridge on SafeContentFrame. Adds an mcp field to ToolCallMessagePart and forwards callProviderMetadata.mcp.app through the AI SDK message converter. (@Yonom)

  • Updated dependencies [19d4d94]:

1.3.24#

Patch Changes#

  • #4003 717bed2 - feat: expose suggestions on useAISDKRuntime and useChatRuntime (@okisdev)

    both hooks now accept an optional suggestions: readonly ThreadSuggestion[] option that is forwarded to the underlying useExternalStoreRuntime. this lets AI SDK callers drive follow up suggestions from application state, tool results, or backend responses without dropping down to the raw external store runtime.

  • #4001 283c250 - feat(react-ai-sdk): expose onResume on useAISDKRuntime and useChatRuntime (@okisdev)

    AISDKRuntimeAdapter and UseChatRuntimeOptions now accept onResume, which is forwarded to the underlying useExternalStoreRuntime adapter. runtime.thread.resumeRun(config) previously threw "Runtime does not support resuming runs." because the inner adapter literal omitted the field; consumers had to monkey-patch runtime.thread.__internal_threadBinding.getState().resumeRun to bridge their own replay channels (e.g. SSE reconnect endpoints keyed by turn id). This is a thin pass-through; the existing transport-level resume on AssistantChatTransport (auto-fired by useChatRuntime on mount) is unchanged and complementary.

  • #3979 9ecda1d - feat(react-ai-sdk): native resumable stream client integration (@okisdev)

    AssistantChatTransport accepts a resumable: { storage, resumeApi, isFinishEvent? } option that captures the stream id from the response header, watches the SSE body for the AI SDK finish marker so the stored id is cleared on natural completion (cancellation leaves it intact for the next mount), and redirects chat.resumeStream() reconnects to resumeApi. createResumableSessionStorage is the default sessionStorage-backed ResumableClientStorage. useChatRuntime auto-fires chat.resumeStream() once on mount when storage already has an id, so adopters drop the manual useEffect.

  • #4008 fa4510a - feat: support multi-modal tool results via toModelOutput (@okisdev)

    frontend tools can now project their execution output into multi-modal model content (text + image / pdf / arbitrary file parts), aligning with the AI SDK v6 toModelOutput callback. previously, tool results were always serialized as a single JSON value, so a "read pdf" style tool had no way to send the PDF back to a multi-modal model.

    • assistant-stream exports a new ToolModelContentPart type ({ type: "text", text } | { type: "file", data, mediaType, filename? }) and a ToolModelOutputFunction<TArgs, TResult> callback type. Tool.toModelOutput is wired through unstable_runPendingTools and ToolExecutionStream, attaching the resulting modelContent to the tool-call part on the assistant message.
    • @assistant-ui/core re-exports ToolModelContentPart and adds an optional modelContent?: readonly ToolModelContentPart[] field on ToolCallMessagePart. existing tools and renderers are unchanged.
    • @assistant-ui/react-ai-sdk's frontendTools(...) helper now also registers a toModelOutput on each forwarded tool. it transparently unwraps an envelope that useAISDKRuntime writes when a frontend-executed tool produced modelContent, turning it into AI SDK's { type: "content", value: [...] } output. plain (non-envelope) outputs fall back to the existing { type: "text" | "json", value } shape, so behavior for tools without toModelOutput is unchanged.

    route handlers that adopt toModelOutput also need to pass tools to convertToModelMessages (this is the AI SDK's documented pattern):

    const aiSDKTools = { ...frontendTools(tools ?? {}) };
    streamText({
      messages: await convertToModelMessages(messages, { tools: aiSDKTools }),
      tools: aiSDKTools,
    });
    

    templates and existing examples are unchanged. they keep the simpler convertToModelMessages(messages) form because none of the tools they ship with use toModelOutput. the new tools guide page documents how to opt in.

    reserved key. when a frontend tool defines toModelOutput, its result is persisted in the AI SDK chat as { __aui_modelContent: ToolModelContentPart[], value: <your result> }. tools must not return objects whose top-level key is literally __aui_modelContent, or convertMessage will misread the result. the prefix is namespaced for this reason.

    read/write compatibility for persisted threads. the envelope is recognized by @assistant-ui/react-ai-sdk from this version onward. if you persist UI messages and read them from multiple environments, upgrade every reader before any writer starts producing toModelOutput; otherwise older readers will treat the envelope object as the result and break the affected tool render functions.

  • #4004 d3cf8cd - fix(react-ai-sdk): preserve tool args when AI SDK briefly emits null input (@okisdev)

    the AI SDK occasionally emits snapshots of an in-flight tool call where
    input is null/undefined, which previously collapsed argsText to "{}"
    mid-stream and tripped the runtime's append-only invariant (warning + tool
    args stream restart, losing accumulated state). convertMessage now caches
    the last good input per (message.id, toolCallId) via a new
    toolLastInputCache on AISDKMessageConverterMetadata and falls back to it
    when a later snapshot drops input.

  • #3634 9c3d24d - Support AI SDK source-document parts by preserving them as assistant-ui (@sicko7947)
    document source message parts across conversion and cloud serialization,
    including the legacy React cloud encoder.

  • Updated dependencies [35d0146, fa4510a, c9dd16c, dea8bc7, 9c3d24d]:

1.3.23#

Patch Changes#

1.3.22#

Patch Changes#

  • #3942 fbd7ce3 - fix: aui.thread().append({ startRun: false }) no longer triggers a run on AI SDK runtime (@Yonom)

    useAISDKRuntime's onNew and onEdit always called chatHelpers.sendMessage, ignoring message.startRun. The hook now appends the message via chatHelpers.setMessages (with a generated id when needed) and returns early when startRun: false, so the message lands in the chat without kicking off a model call.

  • #3962 b090acb - chore: update dependencies (@Yonom)

  • Updated dependencies [7098bab, b090acb, 5fdf17e]:

1.3.21#

Patch Changes#

1.3.20#

Patch Changes#

  • #3876 ce865bc - chore: update dependencies (@Yonom)

  • #3841 435cfa0 - fix: request body id in useChatRuntime is now the real thread id instead of the literal "DEFAULT_THREAD_ID". AssistantChatTransport was resolving remoteId from the inner ExternalStoreThreadListRuntimeCore (which only echoes its default id); it now uses the outer RemoteThreadListRuntimeCore that actually calls the adapter. (@okisdev)

  • #3858 da0f598 - fix: useAISDKRuntime now throws when the supplied ThreadHistoryAdapter omits withFormat, instead of silently dropping all history load/append/update calls. The optional-call chain historyAdapter.withFormat?.(…).load() previously short-circuited to undefined. The withFormat-wrapped adapter is now memoized, and the persist effect short-circuits when no adapter is supplied (avoiding a redundant thread subscription). ThreadHistoryAdapter.withFormat gains a JSDoc note clarifying that it is required on the AI SDK path. (@okisdev)

  • Updated dependencies [c7a274e, ce865bc, ca8f526, c56f98f, 974d15e, 4b19d42, da0f598, d53ff4f, 20f8404, 17958c9]:

1.3.19#

Patch Changes#

  • c988db8: chore: update dependencies
  • a5bce86: fix: preserve latest thread token usage during pending turns
  • Updated dependencies [f20b9ca]
  • Updated dependencies [c988db8]

1.3.18#

Patch Changes#

  • 376bb00: chore: update dependencies
  • Updated dependencies [42bc640]
  • Updated dependencies [376bb00]
  • Updated dependencies [87e7761]

1.3.17#

Patch Changes#

  • bdce66f: chore: update dependencies
  • 209ae81: chore: remove aui-source export condition from package.json exports
  • Updated dependencies [6554892]
  • Updated dependencies [9103282]
  • Updated dependencies [876f75d]
  • Updated dependencies [bdce66f]
  • Updated dependencies [4abb898]
  • Updated dependencies [209ae81]
  • Updated dependencies [2dd0c9f]
  • Updated dependencies [af70d7f]

1.3.16#

Patch Changes#

  • 781f28d: feat: accept all file types and validate against adapter's accept constraint
  • 0924711: fix(react-ai-sdk): convert assistant file parts to FileMessagePart instead of dropping them
  • 52403c3: chore: update dependencies
  • Updated dependencies [781f28d]
  • Updated dependencies [3227e71]
  • Updated dependencies [0f55ce8]
  • Updated dependencies [83a15f7]
  • Updated dependencies [52403c3]
  • Updated dependencies [ffa3a0f]

1.3.15#

Patch Changes#

  • 01a59da: fix(react-ai-sdk): preserve runConfig.custom metadata after tool call resume in human-in-the-loop tools
  • 736344c: chore: update dependencies
  • c71cb58: chore: update dependencies
  • Updated dependencies [1406aed]
  • Updated dependencies [9480f30]
  • Updated dependencies [28a987a]
  • Updated dependencies [736344c]
  • Updated dependencies [ff3be2a]
  • Updated dependencies [70b19f3]
  • Updated dependencies [c71cb58]

1.3.14#

Patch Changes#

  • 349f3c7: chore: update deps
  • 642bcda: Add quote.tsx registry components and injectQuoteContext helper
  • Updated dependencies [1ed9867]
  • Updated dependencies [427ffaa]
  • Updated dependencies [349f3c7]
  • Updated dependencies [02614aa]
  • Updated dependencies [6cc4122]
  • Updated dependencies [642bcda]

1.3.13#

Patch Changes#

  • 8ed9d6f: Refactor React Native component API: move shared runtime logic (remote thread list, external store, cloud adapters, message converter, tool invocations) into @assistant-ui/core for reuse across React and React Native
  • Updated dependencies [5ae74fe]
  • Updated dependencies [8ed9d6f]
  • Updated dependencies [01bee2b]

1.3.12#

Patch Changes#

  • 57e26d2: chore: update dependencies

1.3.11#

Patch Changes#

  • a845911: chore: update dependencies
  • Updated dependencies [07dcce0]
  • Updated dependencies [a845911]
  • Updated dependencies [bc40eaf]
  • Updated dependencies [be23d74]
  • Updated dependencies [1eb059c]

1.3.10#

Patch Changes#

  • 51de636: feat(react-ai-sdk): add thread token-usage extraction helpers and hook
  • 7ad20d1: fix(react-ai-sdk): stabilize tool args key order to prevent duplicate toolCallId crash in tapResources
  • Updated dependencies [17cf9a8]

1.3.9#

Patch Changes#

  • 36ef3a2: chore: update dependencies
  • Updated dependencies [36ef3a2]
  • Updated dependencies [6692226]
  • Updated dependencies [c31c0fa]
  • Updated dependencies [1672be8]
  • Updated dependencies [28f39fe]
  • Updated dependencies [3a1cb66]
  • Updated dependencies [14769af]
  • Updated dependencies [7c360ce]
  • Updated dependencies [a638f05]
  • Updated dependencies [8a78cd2]

1.3.8#

Patch Changes#

  • aeec3b9: fix: handle AI SDK v6 approval tool states (approval-requested, approval-responded, output-denied)
  • 7836760: fix(assistant-cloud): expand joined messages for AI SDK v6 history export and telemetry reporting
  • 61b54e9: Add message timing metadata: AssistantMessageTiming type, automatic timing tracking in AssistantMessageAccumulator, MessageTiming type, useMessageTiming() hook, and client-side streaming timing for AI SDK runtime.
  • a247fc9: feat(assistant-cloud): allow save complete multi-step message
  • 93910bd: Rename .tsx files to .ts where no JSX syntax is used
  • Updated dependencies [d08a488]
  • Updated dependencies [5bbe8a9]
  • Updated dependencies [5e304ea]
  • Updated dependencies [546c053]
  • Updated dependencies [a7039e3]
  • Updated dependencies [16c10fd]
  • Updated dependencies [98c3d54]
  • Updated dependencies [b181803]
  • Updated dependencies [7836760]
  • Updated dependencies [9276547]
  • Updated dependencies [b65428e]
  • Updated dependencies [af5b085]
  • Updated dependencies [61b54e9]
  • Updated dependencies [a094c45]
  • Updated dependencies [4d7f712]
  • Updated dependencies [ecc29ec]
  • Updated dependencies [6e97999]
  • Updated dependencies [a247fc9]
  • Updated dependencies [f414af9]
  • Updated dependencies [b48912c]
  • Updated dependencies [93910bd]
  • Updated dependencies [58a8472]

1.3.7#

Patch Changes#

  • afaaf3b: fix: duplicate key toolCallId error in HITL tools (#3197)
  • Updated dependencies [afaaf3b]
  • Updated dependencies [afaaf3b]
  • Updated dependencies [afaaf3b]
  • Updated dependencies [afaaf3b]
  • Updated dependencies [51d24be]
  • Updated dependencies [afaaf3b]

1.3.6#

Patch Changes#

  • a088518: chore: update dependencies
  • Updated dependencies [a088518]
  • Updated dependencies [d8122cc]

1.3.5#

Patch Changes#

  • 39fefec: feat: importExternalState API
  • Updated dependencies [39fefec]

1.3.4#

Patch Changes#

  • d45b893: chore: update dependencies
  • Updated dependencies [d45b893]
  • Updated dependencies [fe71bfc]

1.3.3#

Patch Changes#

  • acbaf07: feat: add framework-agnostic toToolsJSONSchema and toGenericMessages utilities to assistant-stream
  • Updated dependencies [07d1c65]
  • Updated dependencies [b591d72]
  • Updated dependencies [59a338a]
  • Updated dependencies [acbaf07]
  • Updated dependencies [c665612]
  • Updated dependencies [0371d72]
  • Updated dependencies [e8b3f34]

1.3.2#

Patch Changes#

  • 605d825: chore: update dependencies
  • Updated dependencies [1ea3e28]
  • Updated dependencies [8cbf686]
  • Updated dependencies [a8be364]
  • Updated dependencies [605d825]

1.3.1#

Patch Changes#

  • 5876c0f: feat(react-ai-sdk): propagate ModelContext config (modelName) through AssistantChatTransport
  • Updated dependencies [8672695]

1.2.1#

Patch Changes#

  • 083ed83: fix(cloud): serialize image and file parts across all formats
  • Updated dependencies [6eab31e]
  • Updated dependencies [9314b36]
  • Updated dependencies [083ed83]
  • Updated dependencies [6511990]
  • Updated dependencies [a526e63]

1.2.0#

Minor Changes#

  • 6fd744a: Upgrade to Vercel AI SDK v6
    • Updated peer dependencies: ai@^6.0.0, @ai-sdk/react@^3.0.0
    • Renamed format adapter from aiSDKV5FormatAdapter to aiSDKV6FormatAdapter
    • Updated @ai-sdk/provider to use LanguageModelV2 types

Patch Changes#

  • 3719567: chore: update deps
  • Updated dependencies [3719567]

1.1.21#

Patch Changes#

  • 5ce45bd: fix(react-ai-sdk): preserve metadata in message conversion
  • Updated dependencies [3a0b9c8]
  • Updated dependencies [b8f62e1]
  • Updated dependencies [8d5c20c]

1.1.20#

Patch Changes#

  • 57bd207: chore: update dependencies
  • cce009d: chore: use tsc for building packages
  • Updated dependencies [57bd207]
  • Updated dependencies [cce009d]

1.1.19#

Patch Changes#

  • e8ea57b: chore: update deps
  • Updated dependencies [bae3aa2]
  • Updated dependencies [e8ea57b]

1.1.18#

Patch Changes#

  • 89aec17: feat: AI SDK frontend tool execution cancellation support
    fix: AI SDK isRunning status when running frontend tools
  • Updated dependencies [89aec17]
  • Updated dependencies [ee7040f]
  • Updated dependencies [bd27465]
  • Updated dependencies [a3e9549]
  • Updated dependencies [206616b]
  • Updated dependencies [7aa77b5]

1.1.17#

Patch Changes#

  • 01c31fe: chore: update dependencies
  • Updated dependencies [ba26b22]
  • Updated dependencies [d169e4f]
  • Updated dependencies [da9f8a6]
  • Updated dependencies [01c31fe]

1.1.16#

Patch Changes#

  • c4142ac: fix(react-ai-sdk): pass runConfig metadata to backend API request

1.1.15#

Patch Changes#

  • ab8953b: feat(react): add allowNesting option to allow wrapping runtimes with custom thread list adapters
  • Updated dependencies [ab8953b]

1.1.14#

Patch Changes#

  • ec662cd: chore: update dependencies
  • cdb5ea5: mark tool call as complete once user sends new message when tool calling
  • 5dd925e: feat(ai-sdk): allow updates to headers/body
  • Updated dependencies [ec662cd]

1.1.13#

Patch Changes#

  • 4f6afef: feat: unified json schema
  • Updated dependencies [4f6afef]

1.1.12#

Patch Changes#

  • faed815: feat: AI SDK error toolOutput support
  • 2c33091: chore: update deps
  • Updated dependencies [2c33091]

1.1.11#

Patch Changes#

  • 0bcbb58: feat: custom toCreateMessage callback
    fix: use AI SDK's idGenerator function for new messages
  • b408005: feat(react-ai-sdk): Integrate AI SDK v5 data parts in message content
  • Updated dependencies [b408005]
  • Updated dependencies [7a6d9ca]
  • Updated dependencies [70d5966]
  • Updated dependencies [3754bdd]
  • Updated dependencies [0a4bdc1]

1.1.10#

Patch Changes#

  • 34d1c78: fix(react-ai-sdk): correctly initialize history loading state
  • Updated dependencies [66a13a0]
  • Updated dependencies [4e3877e]
  • Updated dependencies [eef682b]

1.1.9#

Patch Changes#

  • 81b581f: feat: display AI SDK errors
  • 6d2c134: feat: useChatRuntime should use the assistant ui thread id remote id as the threadid by default
  • 2fc7e99: chore: update deps
  • Updated dependencies [3ab9484]
  • Updated dependencies [7a88ead]
  • Updated dependencies [81b581f]
  • Updated dependencies [2fc7e99]

1.1.8#

Patch Changes#

  • 953db24: chore: update deps
  • Updated dependencies [953db24]
  • Updated dependencies

1.1.7#

Patch Changes#

  • chore: update deps
  • Updated dependencies

1.1.6#

Patch Changes#

  • a5f9dd5: Export missing types for custom runtime integration
  • Updated dependencies [92dfb0f]

1.1.5#

Patch Changes#

  • e6a46e4: chore: update deps
  • Updated dependencies [e6a46e4]

1.1.4#

Patch Changes#

  • e81784b: feat: Tool Call interrupt() resume() API
  • Updated dependencies [e8d6d7b]
  • Updated dependencies [e81784b]

1.1.3#

Patch Changes#

  • e46e4d3: fix: guard threadItem access for useAISDKRuntime
  • Updated dependencies [c0f5003]
    • assistant-stream@0.2.31

1.1.2#

Patch Changes#

  • 8812f86: chore: update deps
  • Updated dependencies [8812f86]
    • assistant-stream@0.2.30
    • assistant-cloud@0.1.2

1.1.1#

Patch Changes#

  • 68ef242: feat(ui): load external history only when thread has remote id
  • Updated dependencies [2c6198a]

1.1.0#

Patch Changes#

  • 39ac2f3: feat: AI SDK v5 import support
  • Updated dependencies [39ac2f3]
  • Updated dependencies [5437dbe]

1.0.7#

Patch Changes#

  • d7d9058: fix: cloud chat history not loading in some configurations

1.0.6#

Patch Changes#

  • 860bf42: feat: useAISDKRuntime cloud history support (without useChatRuntime)
  • Updated dependencies [3498c99]

1.0.5#

Patch Changes#

  • 90fc83b: fixes attachment naming
  • e64b20c: fix: persistence only saving the first two messages

1.0.4#

Patch Changes#

  • 9235fe1: update dep array in external history adapter

1.0.3#

Patch Changes#

  • ceedf45: feat: pass run-config to ai-sdk metadata to let user decide what to do after
  • 5504836: pass callsettings in extra body object to AI chat transport
  • Updated dependencies [a80dcff]

1.0.2#

Patch Changes#

  • 672db5a: feat: frontend function calling support
  • 12e0a77: chore: update deps
  • Updated dependencies [12e0a77]

1.0.1#

Patch Changes#

  • eda5558: feat: AI SDK custom UIMessage type support
  • Updated dependencies [eda5558]

1.0.0#

Patch Changes#

  • de215fd: fix: history loading
  • Updated dependencies [179f8b7]

0.11.5#

Patch Changes#

  • a4389da: feat: AI SDK v5 assistant-cloud thread history support
  • Updated dependencies [a4389da]

0.11.4#

Patch Changes#

  • 979ee67: feat: forward system and tools to the backend for useChatRuntime
  • 979ee67: feat: assistant cloud support for AI SDK v5
  • 979ee67: feat: add AssistantChatTransport
  • Updated dependencies [979ee67]

0.11.3#

Patch Changes#

  • 2ef6cae: feat: Add useChatRuntime as new recommended entry point for AI-SDK V5
  • Updated dependencies [f32b6a4]

0.11.1#

Patch Changes#

  • 20ffa06: fix: Don't omit attachments from AISDKRuntimeAdapter type
  • Updated dependencies [ed78407]
  • Updated dependencies [77ce337]
  • Updated dependencies [f59959e]

0.11.0#

Patch Changes#

  • 0f063e0: chore: update dependencies
  • Updated dependencies [0f063e0]
  • Updated dependencies [5d8b074]