Release history.

Every package release from the assistant-ui monorepo, grouped by day.

Sep 3, 2026

40 releases

>@assistant-ui/ai-sdk@0.0.4keep cloud threads running across switches in AISDKThreads9 changes

Features1

keep cloud threads running across switches in AISDKThreads

Fixes5

ai-sdk
stop re-sending a persisted message whose content is unchanged
scope adapter refs to committed renders
carry server messageMetadata through to the thread
isolate each AISDKThreads thread in its own message repository
report a stopped AI SDK run as cancelled instead of complete

Chores3

drop an unexported usage helper
update dependencies
update dependencies
view on github
>@assistant-ui/cloud-ai-sdk@0.1.37publish workspace dependencies as caret ranges so they dedupe3 changes

Fixes1

publish workspace dependencies as caret ranges so they dedupe

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/core@0.3.17let a tool approval request describe itself and report its outcome39 changes

Features4

let a tool approval request describe itself and report its outcome
background thread bodies and a plain cloud adapter factory
resolve toolkit renderText through a framework-neutral seam
adopt an externally owned message repository instance per adapter swap

Fixes28

avoid duplicate external-store runtime publications
never execute a frontend tool on a tool call ADK resolves itself; a client-executed tool must be registered as a LongRunningFunctionTool on the agent
report lifecycle events from background thread runtimes
report run start and end for threads a remote thread list keeps alive in the background
cancel AssistantFrame tool calls when their provider is removed
preserve composer queue item component identity after removals
preserve thread list item state when preceding threads are removed
keep Cloud thread adapter options scoped to committed renders
drop zustand from core
keep model context callbacks scoped to committed React renders
never run a frontend tool on a call the provider is about to answer or gate
report a stopped AI SDK run as cancelled instead of complete
keep a frontend tool's pending human interrupt when execution starts
isolate errors from initialize listeners replayed after thread startup
isolate model context update listener errors
preserve attachment component state when message attachments are removed or reordered
preserve composer attachment component identity after removals
keep remote thread runtime hooks scoped to committed renders
clear the thread list loading state when a reload or adapter change supersedes the request
keep remote thread actions scoped to the committed adapter
prevent deleted threads from becoming the active thread
keep the remote main thread facade scoped to committed selections
peer ranges on the packages this workspace releases now track the release train
keep one thread slot per remote id and clear every alias on delete
keep the optimistic assistant placeholder id stable within a run
publish assistant transport callbacks before descendant layout effects
keep suggestion state stable across equal configurations
report cached and reasoning tokens from the AI SDK v7 token details

Refactors3

walk the nested tool-call tree through one shared traversal
generate composer attachment IDs with the shared ID utility
share the message error and thread-list load-more predicates across bindings

Chores4

stop hand-rolling the cloud adapter provider that the hosts synthesize
remove an internal re-export shim and a duplicated type guard
update dependencies
share one shallow-equal across the runtime internals
view on github
>@assistant-ui/eve@0.0.16project eve's input request onto the approval itself5 changes

Features1

project eve's input request onto the approval itself

Fixes1

keep thread refetches scoped to the committed Eve agent

Chores3

move the eve devDependency to 0.47.3
update dependencies
update dependencies
view on github
>@assistant-ui/mcp-docs-server@0.3.0minorproxy the hosted assistant-ui mcp endpoint instead of bundling a docs snapshot. the stdio server now forwards to the hosted tool set, and the programmatic server export is removed3 changes

Features1

proxy the hosted assistant-ui mcp endpoint instead of bundling a docs snapshot. the stdio server now forwards to the hosted tool set, and the programmatic server export is removed

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react@0.15.18let a tool approval request describe itself and report its outcome15 changes

Features3

let a tool approval request describe itself and report its outcome
resolve MCP App renderer options per part
unstable_useWebMcpProvider, publishing frontend tools to a WebMCP-capable browser

Fixes5

react
keep trigger callbacks commit-safe
load newly mounted MCP Apps through the committed host
react
accept spec-shaped MCP App messages
react
keep model-context mentions current and honor explicit tool categories without requiring custom categories
report a sandboxed frame that never finishes loading through onError, and re-export the ShimLoadError and ShimLoadErrorCode types it is reported with

Refactors3

react
extract a shared model-context snapshot hook for the mention adapter and the webmcp provider
collapse the three trigger-item query predicates onto one shared helper
dispose WebMCP registrations through the abort signal alone

Chores4

drop a superseded internal hook and a dead plugin-registry variant
update dependencies
reuse the shared viewport math and callback invoker
update dependencies
view on github
>@assistant-ui/react-a2a@0.2.33preserve zero-byte files when converting messages to A2A parts2 changes

Fixes1

preserve zero-byte files when converting messages to A2A parts

Chores1

update dependencies
view on github
>@assistant-ui/react-ag-ui@0.0.58model the AG-UI subagent protocol. SUBAGENTSTARTED / SUBAGENTFINISHED / SUBAGENTERROR are parsed instead of falling through to RAW and being dropped, subagentRunId is read off the events that carry it, and each subagent run is grouped into one nested assistant message attached to its spawning tool call as ToolCallMessagePart.messages. a subagent with no reachable spawning call renders in the parent thread rather than being dropped.12 changes

Features1

model the AG-UI subagent protocol. SUBAGENT_STARTED / SUBAGENT_FINISHED / SUBAGENT_ERROR are parsed instead of falling through to RAW and being dropped, subagentRunId is read off the events that carry it, and each subagent run is grouped into one nested assistant message attached to its spawning tool call as ToolCallMessagePart.messages. a subagent with no reachable spawning call renders in the parent thread rather than being dropped.

Fixes8

surface a refused tool-approval decision, and show the gate's own message
a subagent's frontend tool result is recorded, survives re-emits, and resumes the run
rely on the upstream client to forward resume input
diagnose malformed AG-UI events
diagnose malformed fields on accepted AG-UI events
reject malformed message snapshot events
keep unresolved tool calls pending after successful runs
reject state snapshots without a snapshot value

Refactors1

walk the nested tool-call tree through one shared traversal

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-devtools@1.2.17preserve readable model context when individual properties throw5 changes

Fixes3

preserve readable model context when individual properties throw
tolerate unreadable runtime properties in DevTools snapshots
peer ranges on the packages this workspace releases now track the release train

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-generative-ui@0.0.17bound a node whose has trap hides children from the pre-pass3 changes

Fixes1

bound a node whose has trap hides children from the pre-pass

Refactors1

cap the Teams carousel through the shared bounded copy

Chores1

update dependencies
view on github
>@assistant-ui/react-google-adk@0.0.28scope adapter refs to committed renders3 changes

Fixes2

scope adapter refs to committed renders
never execute a frontend tool on a tool call ADK resolves itself; a client-executed tool must be registered as a LongRunningFunctionTool on the agent

Chores1

update dependencies
view on github
>@assistant-ui/react-ink@0.0.41use terminal display columns for multiline text input movement6 changes

Fixes4

use terminal display columns for multiline text input movement
drop zustand from core
keep vertical text input movement on grapheme boundaries
keep CRLF line endings intact during text input editing

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-langchain@0.0.29convert messages without a type or with non-array content instead of throwing4 changes

Fixes3

convert messages without a type or with non-array content instead of throwing
keep runtime refs scoped to committed renders
keep remote thread runtime hooks scoped to committed renders

Chores1

update dependencies
view on github
>@assistant-ui/react-langgraph@0.14.26keep runtime refs scoped to committed renders2 changes

Fixes1

keep runtime refs scoped to committed renders

Chores1

update dependencies
view on github
>@assistant-ui/react-lexical@0.2.12peer ranges on the packages this workspace releases now track the release train1 change

Fixes1

peer ranges on the packages this workspace releases now track the release train
view on github
>@assistant-ui/react-markdown@0.14.14stop bracket-delimited math from swallowing the rest of the message3 changes

Fixes3

stop bracket-delimited math from swallowing the rest of the message
keep code spans and fences inert when normalizing math delimiters
stop charging every streamed token a second render pass when defer is off
view on github
>@assistant-ui/react-mcp@0.1.16publish workspace dependencies as caret ranges so they dedupe9 changes

Fixes8

publish workspace dependencies as caret ranges so they dedupe
keep OAuth lifecycle callbacks scoped to committed renders
key server reconnects on the storage's scope identity so an OAuth connection never keeps a replaced store
serialize OAuth state persistence so concurrent updates are not lost
keep MCP storage resources stable across re-renders and serialize OAuth state persistence across provider instances
keep saved-token auto-connect from interrupting OAuth callbacks
validate OAuth callback state and issuer parameters
react-mcp
key the oauth write fence on scopeId so a same-scope storage swap cannot resurrect cleared tokens

Chores1

update dependencies
view on github
>@assistant-ui/react-native@0.1.40re-export the approval display type and its helper3 changes

Features1

re-export the approval display type and its helper

Fixes1

drop zustand from core

Chores1

update dependencies
view on github
>@assistant-ui/react-o11y@0.0.43publish workspace dependencies as caret ranges so they dedupe1 change

Fixes1

publish workspace dependencies as caret ranges so they dedupe
view on github
>@assistant-ui/react-pi@0.0.21re-render usePiThreadState only when the selected slice changes3 changes

Fixes1

react-pi
re-render usePiThreadState only when the selected slice changes

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-streamdown@0.3.13stop bracket-delimited math from swallowing the rest of the message4 changes

Fixes3

stop bracket-delimited math from swallowing the rest of the message
keep code spans and fences inert when normalizing math delimiters
stop charging every streamed token a second render pass when defer is off

Chores1

update dependencies
view on github
>@assistant-ui/store@0.3.12allow string ids in the stale scope reporter8 changes

Features3

allow string ids in the stale scope reporter
export useAssistantContextValue from the client entry
accept a content inset in the shared viewport scroll helpers

Fixes2

drop zustand from core
peer ranges on the packages this workspace releases now track the release train

Chores3

deduplicate the internal development flag
update dependencies
expose shallowEqual from the internal entry
view on github
>assistant-cloud@0.1.43coordinate anonymous authentication across Cloud client instances6 changes

Fixes5

coordinate anonymous authentication across Cloud client instances
coordinate anonymous authentication across browser tabs
deduplicate concurrent message appends while parent persistence is pending
abort Cloud authentication token requests after their deadline
report cached and reasoning tokens from the AI SDK v7 token details

Chores1

update dependencies
view on github
>assistant-stream@0.3.41prevent stale Redis producers from finalizing replacement streams4 changes

Fixes3

prevent stale Redis producers from finalizing replacement streams
await cross-realm and thenable tool validation results
preserve valid files with empty payload or MIME values

Refactors1

drop the redis client members the resumable store never calls
view on github
>assistant-ui@0.0.114scaffold lib/utils from the assistant-ui registry so new projects get cn8 changes

Features3

scaffold lib/utils from the assistant-ui registry so new projects get cn
map scanned component imports onto the elements registry item names
point the mcp command at the hosted assistant-ui mcp endpoint

Fixes4

publish workspace dependencies as caret ranges so they dedupe
fail the upgrade when a codemod exits nonzero
reconcile legacy component imports with the elements layout the registry installs, so created examples build
restrict component import reconciliation to module declarations

Chores1

update dependencies
view on github
>create-assistant-ui@0.0.77publish workspace dependencies as caret ranges so they dedupe1 change

Fixes1

publish workspace dependencies as caret ranges so they dedupe
view on github
>safe-content-frame@0.0.29name why a frame failed to load with a code on the rejection, narrowed by the new isShimLoadError guard2 changes

Features1

name why a frame failed to load with a code on the rejection, narrowed by the new isShimLoadError guard

Fixes1

tell a missing shim, a shim that failed to start, and a slow render apart
view on github
>13 maintenance releasesdependency updates and chores
>@assistant-ui/agent-launcher@0.1.14update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/metro@0.0.12update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/next@0.0.19update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ai-sdk@1.4.9@assistant-ui/[email protected]1 change
>@assistant-ui/react-data-stream@0.12.29update dependencies2 changes

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-hook-form@0.12.31update dependencies2 changes

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-ink-markdown@0.0.40@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>@assistant-ui/react-opencode@0.2.22update dependencies2 changes

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/tap@0.9.16update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/vite@0.0.16update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/x-buildutils@0.0.25update dependencies2 changes

Chores2

update dependencies
unpin rolldown now that 1.2.6 restores the re-exported types it dropped in 1.2.5
view on github
>@assistant-ui/x-generative-compiler@0.0.16update dependencies1 change

Chores1

update dependencies
view on github
>heat-graph@0.0.17update dependencies1 change

Chores1

update dependencies
view on github

Aug 27, 2026

40 releases

>@assistant-ui/ai-sdk@0.0.3preserve settled output-denied tool calls when sending a new message8 changes

Fixes4

preserve settled output-denied tool calls when sending a new message
import an external AI SDK message tree without disconnecting useChat
expose the chat update throttle in useChatRuntime options
persist settled messages when history attaches after a run

Refactors2

derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the file part source resolution branch

Docs1

name @assistant-ui/ai-sdk in JSDoc examples

Chores1

update dependencies
view on github
>@assistant-ui/cloud-ai-sdk@0.1.36preserve active chats when Cloud scope renders are interrupted8 changes

Fixes5

preserve active chats when Cloud scope renders are interrupted
keep committed Cloud chat options active across interrupted renders
feed title generation the conversation in chronological order
load every Cloud thread list page
clear selected Cloud threads hidden by remote archival

Refactors2

move the run report tool call shape and its serialization into assistant-cloud
provide thread title generation from assistant-cloud; cloud-ai-sdk keeps only the format-specific half.

Chores1

update dependencies
view on github
>@assistant-ui/core@0.3.16roll back AssistantFrame providers on registration, release, and disposal failures35 changes

Fixes19

roll back AssistantFrame providers on registration, release, and disposal failures
keep prepended id-less messages in the external message converter
tag static ai-sdk/v6 tool calls as frontend in cloud run telemetry
cancelling an edit session cancels its in-flight attachment adds and removes its non-complete attachments through the attachment adapter
derive requires-action for pending and interrupted tool calls in the external-store convertMessage path; messages with unresolved tool calls now report requires-action instead of complete
evict deleted external-store messages so no phantom branch survives. the setMessages path evicts immediately; the onDelete path evicts at the confirming host snapshot
keep prepended history when convertMessage returns no id
report frame tool failures whose error message is empty
default assistant frame messaging to the current origin
preserve incomplete tool-call part statuses
resolve InMemoryThreadList index selectors within the archived/regular subset
type MCP app metadata in ThreadMessageLike tool calls
derive requires-action for pending and interrupted tool calls when importing messages into the repository, and resume local runs after approving an imported pending approval
preserve generated thread titles across overlapping optimistic updates
keep threads initialized during a list flight in the thread list when the stale response lands
preserve streamed RemoteThreadList titles across optimistic replays
reject archived index selectors on SingleThreadList instead of resolving the regular thread
refresh static suggestions when their configuration changes
never execute a frontend tool on a tool call that carries a provider approval

Refactors13

share the attachment add cancellation machinery between the composer core and the store client.
notify every thread runtime subscriber before rethrowing a subscriber error.
move the run report tool call shape and its serialization into assistant-cloud
derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
collapse the external message converter's duplicate derivation chains into one pure module.
share the file part source resolution branch
share the interactable persistence scheduler between the tap client and the legacy surface.
share the runtime lifecycle callback invoker from core internal.
share the message repository session layer between a2a and ag-ui
move queue item state ownership into the runtime layer.
back ModelContextRegistry's provider handling with CompositeContextProvider.
share the remote thread list empty state and local thread seeding.
share the pending tool-call scan, abortable thread load, and cloud create fallback via core.

Docs2

name @assistant-ui/ai-sdk in JSDoc examples
ToolApprovalOption.kind no longer says the default kit skips custom _-prefixed kinds; the kit renders them and answers with an explicit approved value alongside the optionId

Chores1

update dependencies
view on github
>@assistant-ui/eve@0.0.15refetch the open thread in place through threads.reloadMainThread6 changes

Features1

refetch the open thread in place through threads.reloadMainThread

Fixes2

cancel runs through the eve 0.38+ cancel binding, with stop fallback for older hosts
preserve HITL input-request prompt and display mode; answer free-form requests with the response text instead of approve, and never submit a response eve cannot record as an answer to the request it names

Refactors2

derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the file part source resolution branch

Chores1

update dependencies
view on github
>@assistant-ui/mcp-docs-server@0.2.3validate template catalog entries before using them2 changes

Fixes1

validate template catalog entries before using them

Chores1

update dependencies
view on github
>@assistant-ui/metro@0.0.11derive a bundled commonjs build mode from the exports map, and drop metro's private tsdown config. a package whose exports targets are .cjs files now builds as a bundled cjs/node artifact with declared dependencies external and workspace devDependencies inlined; metro's dist is byte-identical to what its per-package config produced.3 changes

Refactors2

derive a bundled commonjs build mode from the exports map, and drop metro's private tsdown config. a package whose exports targets are .cjs files now builds as a bundled cjs/node artifact with declared dependencies external and workspace devDependencies inlined; metro's dist is byte-identical to what its per-package config produced.
share the generative source predicate across bundler integrations

Chores1

update dependencies
view on github
>@assistant-ui/react@0.15.17export createSuggestionAdapter and its option types from the distribution packages12 changes

Features2

export createSuggestionAdapter and its option types from the distribution packages
allow trigger popovers to override query matching

Fixes7

keep MCP App server routing scoped to committed renders
keep sandbox bridge options scoped to committed renders
default assistant frame messaging to the current origin
keep committed MCP App host options active during interrupted renders
expose MCP App renderer handlers
keep slash commands scoped to committed renders. search now matches the displayed label, so a command with no explicit label is matched on its /id fallback rather than only on id and description.
keep live completion fetchers scoped to committed renders

Chores3

drop unreachable legacy forwarding sources.
import Radix internals from radix-ui/internal and drop the individual @radix-ui/* dependencies
update dependencies
view on github
>@assistant-ui/react-a2a@0.2.32keep the server-assigned contextId across re-renders. switching threads aborts the in-flight run and fires onCancel12 changes

Fixes7

keep the server-assigned contextId across re-renders. switching threads aborts the in-flight run and fires onCancel
recognize JSON-RPC kind-discriminated streaming events and hyphenated task states
load a history adapter that arrives after the first load
reject non-string task and context IDs when decoding A2A responses
keep managed A2A headers scoped to committed renders
apply runtime options after commit
validate wrapped A2A stream events before emitting them

Refactors4

share the file part source resolution branch
share the runtime lifecycle callback invoker from core internal.
share the message repository session layer between a2a and ag-ui
move shared pure converters to the converter seam. langgraph ui messages carrying the js sdk metadata.id parent field now attach to their assistant message.

Chores1

update dependencies
view on github
>@assistant-ui/react-ag-ui@0.0.57omit empty text parts from streamed snapshots12 changes

Fixes6

omit empty text parts from streamed snapshots
load a history adapter that arrives after the first load
keep developer messages across snapshot import
keep reasoning signatures from live runs that produce no visible part
keep tool follow-up text on its assistant message
apply runtime options after commit

Refactors5

generate ids with core generateId and drop the uuid dependency.
derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the file part source resolution branch
share the runtime lifecycle callback invoker from core internal.
share the message repository session layer between a2a and ag-ui

Chores1

update dependencies
view on github
>@assistant-ui/react-data-stream@0.12.28keep mid-stream cancellation out of onError3 changes

Fixes1

keep mid-stream cancellation out of onError

Refactors1

share the runtime lifecycle callback invoker from core internal.

Chores1

update dependencies
view on github
>@assistant-ui/react-generative-ui@0.0.16allow ListViewItem actions to fire from the row trigger6 changes

Fixes3

allow ListViewItem actions to fire from the row trigger
bound outbound prop arrays by index before conversion
bound the Slack decoder and the spec pre-pass by index so a replaced slice or Symbol.species cannot defeat their caps

Refactors2

share one contiguous-run helper and one element predicate across the converters
share one spec-bounding pre-pass between the Slack and Teams converters

Chores1

update dependencies
view on github
>@assistant-ui/react-google-adk@0.0.27keep every text and reasoning part of a multi-part ADK event8 changes

Fixes1

keep every text and reasoning part of a multi-part ADK event

Refactors6

move the pure adk helpers to the converter seam.
generate ids with core generateId and drop the uuid dependency.
derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the file part source resolution branch
share the runtime lifecycle callback invoker from core internal.
share the pending tool-call scan, abortable thread load, and cloud create fallback via core.

Chores1

update dependencies
view on github
>@assistant-ui/react-ink@0.0.40export createSuggestionAdapter and its option types from the distribution packages3 changes

Features1

export createSuggestionAdapter and its option types from the distribution packages

Fixes1

reset fallback elapsed time when each run starts

Chores1

update dependencies
view on github
>@assistant-ui/react-langchain@0.0.28preserve reasoning fallback text when summary is empty8 changes

Fixes2

preserve reasoning fallback text when summary is empty
do not default a tool message's toolName to an empty string

Refactors5

derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the file part source resolution branch
share the langchain converter layer with react-langgraph via the new @assistant-ui/react-langchain/converter subpath. @langchain/react becomes an optional peer of react-langchain.
move shared pure converters to the converter seam. langgraph ui messages carrying the js sdk metadata.id parent field now attach to their assistant message.
share the pending tool-call scan, abortable thread load, and cloud create fallback via core.

Chores1

update dependencies
view on github
>@assistant-ui/react-langgraph@0.14.25preserve reasoning fallback text when summary is empty10 changes

Fixes3

preserve reasoning fallback text when summary is empty
tolerate messages without content in the converter and accumulator
skip malformed stream payloads instead of throwing

Refactors6

generate ids with core generateId and drop the uuid dependency.
derive executing-tool running state inside the external-store runtime; adapters now pass raw provider isRunning.
share the runtime lifecycle callback invoker from core internal.
share the langchain converter layer with react-langgraph via the new @assistant-ui/react-langchain/converter subpath. @langchain/react becomes an optional peer of react-langchain.
move shared pure converters to the converter seam. langgraph ui messages carrying the js sdk metadata.id parent field now attach to their assistant message.
share the pending tool-call scan, abortable thread load, and cloud create fallback via core.

Chores1

update dependencies
view on github
>@assistant-ui/react-lexical@0.2.11allow trigger popovers to override query matching3 changes

Features1

allow trigger popovers to override query matching

Fixes1

keep leading blank lines when reading composer text back from the editor

Chores1

update dependencies
view on github
>@assistant-ui/react-markdown@0.14.13compare componentsByLanguage structurally so inline objects keep code-block memoization4 changes

Fixes2

compare componentsByLanguage structurally so inline objects keep code-block memoization
keep the pre element for raw pre blocks without a code child

Refactors1

single-source the code-fence contract on a react-markdown subpath. the CodeHeader/SyntaxHighlighter prop types, the by-language override entry, and the language-class parser now live in @assistant-ui/react-markdown/code-fence; react-streamdown re-exports the types from there instead of keeping structurally compatible copies. @types/hast moves to dependencies in both packages so the published declarations reference hast by name instead of a broken store-relative path.

Chores1

update dependencies
view on github
>@assistant-ui/react-mcp@0.1.15refresh MCP connections when connector settings change4 changes

Fixes1

refresh MCP connections when connector settings change

Refactors2

share the runtime lifecycle callback invoker from core internal.
generate ids from the shared core generator instead of per-call-site implementations

Chores1

update dependencies
view on github
>@assistant-ui/react-native@0.1.39export createSuggestionAdapter and its option types from the distribution packages3 changes

Features1

export createSuggestionAdapter and its option types from the distribution packages

Fixes1

guard Enter-to-send behind running state and canSend

Chores1

update dependencies
view on github
>@assistant-ui/react-opencode@0.2.21keep new OpenCode threads sendable while their session initializes5 changes

Fixes2

keep new OpenCode threads sendable while their session initializes
keep sessionStatus as server truth so a failed prompt send no longer leaves the thread stuck running

Refactors2

share the runtime lifecycle callback invoker from core internal.
generate ids from the shared core generator instead of per-call-site implementations

Chores1

update dependencies
view on github
>@assistant-ui/react-pi@0.0.20resolve the schema dependency in published declarations9 changes

Fixes5

resolve the schema dependency in published declarations
allow allocating selectors in usePiThreadState without an external-store render loop
deliver current thread state to late shared-stream subscribers
deliver the first message of a brand-new thread
keep the composer enabled while a new thread initializes

Refactors3

share the runtime lifecycle callback invoker from core internal.
parse pi event streams with the shared assistant-stream SSE decoder.
subscribe the Pi runtime to stable controller snapshots instead of a version counter. a PiThreadControllerLike implementation must now return reference-stable values from getState (or the new optional getStateSnapshot) and getMessageRepository, since the React bindings read them as useSyncExternalStore snapshots.

Chores1

update dependencies
view on github
>@assistant-ui/react-streamdown@0.3.12bump streamdown to 2.6 so fenced code updates when streamed content changes3 changes

Fixes1

bump streamdown to 2.6 so fenced code updates when streamed content changes

Refactors1

single-source the code-fence contract on a react-markdown subpath. the CodeHeader/SyntaxHighlighter prop types, the by-language override entry, and the language-class parser now live in @assistant-ui/react-markdown/code-fence; react-streamdown re-exports the types from there instead of keeping structurally compatible copies. @types/hast moves to dependencies in both packages so the published declarations reference hast by name instead of a broken store-relative path.

Chores1

update dependencies
view on github
>@assistant-ui/vite@0.0.15share the generative source predicate across bundler integrations2 changes

Refactors1

share the generative source predicate across bundler integrations

Chores1

update dependencies
view on github
>@assistant-ui/x-buildutils@0.0.24derive a bundled commonjs build mode from the exports map, and drop metro's private tsdown config. a package whose exports targets are .cjs files now builds as a bundled cjs/node artifact with declared dependencies external and workspace devDependencies inlined; metro's dist is byte-identical to what its per-package config produced.2 changes

Refactors1

derive a bundled commonjs build mode from the exports map, and drop metro's private tsdown config. a package whose exports targets are .cjs files now builds as a bundled cjs/node artifact with declared dependencies external and workspace devDependencies inlined; metro's dist is byte-identical to what its per-package config produced.

Chores1

update dependencies
view on github
>@assistant-ui/x-generative-compiler@0.0.15share the generative source predicate across bundler integrations2 changes

Refactors1

share the generative source predicate across bundler integrations

Chores1

update dependencies
view on github
>assistant-cloud@0.1.42surface the response text when a JSON error body has no message6 changes

Fixes3

surface the response text when a JSON error body has no message
keep telemetry enabled when config carries an undefined enabled
clamp pre-serialized run telemetry arguments

Refactors2

move the run report tool call shape and its serialization into assistant-cloud
provide thread title generation from assistant-cloud; cloud-ai-sdk keeps only the format-specific half.

Chores1

update dependencies
view on github
>assistant-stream@0.3.40encode file parts on the data stream12 changes

Fixes7

encode file parts on the data stream
reject non-canonical gorp array indices
make merge stream seal idempotent
keep partial tool args parseable while a \uXXXX escape is still streaming
unstable_runPendingTools no longer re-executes tool calls that already have a result
TextStreamController.close no longer throws after the consumer cancels
guard tool-call stream writes after consumer cancellation

Refactors4

build accumulated assistant messages through one part-append helper
split the ui message stream chunk normalizer out of the decoder
share the sse pipeline, stream factory, and closed-stream drop scaffolding.
share the decoder tool-call controller registry between data-stream and ui-message-stream.

Chores1

update dependencies
view on github
>assistant-ui@0.0.113preserve CLI termination signals and child cleanup5 changes

Fixes2

preserve CLI termination signals and child cleanup
stop the v0-12 codemods from emitting mismatched JSX, dropping dynamic conditions, and renaming unrelated api bindings

Refactors1

consolidate the package manager resolver and project file iteration

Chores2

install @assistant-ui/ai-sdk instead of @assistant-ui/react-ai-sdk
update dependencies
view on github
>create-assistant-ui@0.0.76propagate termination signals to the spawned CLI. cancelling now exits by the signal (130 for SIGINT, 143 for SIGTERM) instead of reporting success, so a cancelled scaffold no longer looks like a completed one to CI.1 change

Fixes1

propagate termination signals to the spawned CLI. cancelling now exits by the signal (130 for SIGINT, 143 for SIGTERM) instead of reporting success, so a cancelled scaffold no longer looks like a completed one to CI.
view on github
>11 maintenance releasesdependency updates and chores
>@assistant-ui/agent-launcher@0.1.13update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/next@0.0.18update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ai-sdk@1.4.8@assistant-ui/[email protected]1 change
>@assistant-ui/react-devtools@1.2.16update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-hook-form@0.12.30update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ink-markdown@0.0.39update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-o11y@0.0.42update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/store@0.3.11update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/tap@0.9.15update dependencies1 change

Chores1

update dependencies
view on github
>heat-graph@0.0.16update dependencies1 change

Chores1

update dependencies
view on github
>safe-content-frame@0.0.28update dependencies1 change

Chores1

update dependencies
view on github

Aug 20, 2026

25 releases

>@assistant-ui/agent-launcher@0.1.12propagate child process termination signals1 change

Fixes1

propagate child process termination signals
view on github
>@assistant-ui/cloud-ai-sdk@0.1.35clear thread selections after refresh confirms their deletion2 changes

Fixes1

clear thread selections after refresh confirms their deletion

Chores1

update dependencies
view on github
>@assistant-ui/core@0.3.15propagate AssistantFrame tool cancellation across the frame boundary19 changes

Fixes14

propagate AssistantFrame tool cancellation across the frame boundary
prevent AssistantFrameProvider from ignoring a later explicit targetOrigin
keep DevTools updates flowing when a subscriber throws
preserve falsy assistant transport artifacts
load archived threads in the cloud thread list adapter
contain a synchronously throwing clipboard writer in useActionBarCopy
ExternalThread no longer reports an empty thread while it is loading
avoid ancestor scans when importing new messages
prevent cancelled external-store runs from resyncing after teardown
reset remote thread selection and cached records when the thread-list adapter is replaced
notify thread subscribers when a remote thread core is republished
traverse long message branches without recursive stack growth
settle aborted and superseded local runs without continuing them, while keeping approval pauses answerable after cancel
align tool-call status reasons with message status

Refactors1

collapse the two inert thread cores onto a shared base

Chores1

update dependencies

Other3

deprecate leftover Primitive.If and Empty wrappers on react-native and react-ink, and point them at AuiIf
Disconnect immediately when createVoiceSession receives an already-aborted signal.
Mark voice sessions cancelled when aborted or explicitly disconnected.
view on github
>@assistant-ui/react@0.15.16keep DevTools updates flowing when a subscriber throws9 changes

Fixes5

keep DevTools updates flowing when a subscriber throws
contain SandboxHost render failures after teardown
resync trigger popover cursor after selection
handle rejected asynchronous Markdown exports
drain unrevealed smooth text when a message completes before any frame

Docs1

document Escape-to-stop-speaking on ThreadPrimitive.Root

Chores2

delete the dead ensureBinding and useRuntimeState utilities
update dependencies

Other1

deprecate leftover Primitive.If and Empty wrappers on react-native and react-ink, and point them at AuiIf
view on github
>@assistant-ui/react-a2a@0.2.31include the first skipped SSE frame's reason in the empty-stream error1 change

Fixes1

include the first skipped SSE frame's reason in the empty-stream error
view on github
>@assistant-ui/react-ag-ui@0.0.56expose toAgUiMessages and fill a missing AG-UI message id3 changes

Features2

expose toAgUiMessages and fill a missing AG-UI message id
expose AG-UI tool_call interrupts through the core tool-approval seam

Chores1

update dependencies
view on github
>@assistant-ui/react-devtools@1.2.15contain failed DevTools conversation switches1 change

Fixes1

contain failed DevTools conversation switches
view on github
>@assistant-ui/react-hook-form@0.12.29validate assistant-triggered form submissions before reporting success1 change

Fixes1

validate assistant-triggered form submissions before reporting success
view on github
>@assistant-ui/react-ink@0.0.39let Pressable wrapper primitives accept the platform render-function children5 changes

Fixes3

let Pressable wrapper primitives accept the platform render-function children
expose the active state of thread-list items on react-native and react-ink
expose the active state of ThreadListNew on react-native and react-ink

Chores1

update dependencies

Other1

deprecate leftover Primitive.If and Empty wrappers on react-native and react-ink, and point them at AuiIf
view on github
>@assistant-ui/react-langchain@0.0.27render the first LangChain user message while thread initialization is pending2 changes

Fixes1

render the first LangChain user message while thread initialization is pending

Chores1

update dependencies
view on github
>@assistant-ui/react-lexical@0.2.10reparse an unedited composer draft when directive formatters register1 change

Fixes1

reparse an unedited composer draft when directive formatters register
view on github
>@assistant-ui/react-markdown@0.14.12preserve currency inside one- and two-backtick code spans that contain longer backtick runs1 change

Fixes1

preserve currency inside one- and two-backtick code spans that contain longer backtick runs
view on github
>@assistant-ui/react-native@0.1.38add composer quote and queue primitives8 changes

Features1

add composer quote and queue primitives

Fixes4

let Pressable wrapper primitives accept the platform render-function children
announce actionable react-native primitives as buttons
expose the active state of thread-list items on react-native and react-ink
expose the active state of ThreadListNew on react-native and react-ink

Chores2

drop two unreachable re-export shims from react-native
update dependencies

Other1

deprecate leftover Primitive.If and Empty wrappers on react-native and react-ink, and point them at AuiIf
view on github
>@assistant-ui/react-o11y@0.0.41flatten deeply nested observability traces without overflowing the call stack1 change

Fixes1

flatten deeply nested observability traces without overflowing the call stack
view on github
>@assistant-ui/react-pi@0.0.19validate event stream payloads before updating thread state2 changes

Fixes1

validate event stream payloads before updating thread state

Chores1

update dependencies
view on github
>@assistant-ui/react-streamdown@0.3.11preserve currency inside one- and two-backtick code spans that contain longer backtick runs1 change

Fixes1

preserve currency inside one- and two-backtick code spans that contain longer backtick runs
view on github
>@assistant-ui/tap@0.9.14flush state updates dispatched from subscriber notifications during flushTapSync1 change

Fixes1

flush state updates dispatched from subscriber notifications during flushTapSync
view on github
>assistant-stream@0.3.39decode AI SDK v6 tool-input/tool-output chunks in UIMessageStreamDecoder1 change

Fixes1

decode AI SDK v6 tool-input/tool-output chunks in UIMessageStreamDecoder
view on github
>7 maintenance releasesdependency updates and chores
>@assistant-ui/ai-sdk@0.0.2update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ai-sdk@1.4.7@assistant-ui/[email protected]1 change
>@assistant-ui/react-ink-markdown@0.0.38@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>@assistant-ui/react-mcp@0.1.14@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>@assistant-ui/react-opencode@0.2.20update dependencies1 change

Chores1

update dependencies
view on github
>assistant-ui@0.0.112@assistant-ui/[email protected]1 change
>create-assistant-ui@0.0.75[email protected]1 change

Aug 18, 2026

24 releases

>@assistant-ui/cloud-ai-sdk@0.1.34stop abandoned chats when the Cloud scope changes5 changes

Fixes2

stop abandoned chats when the Cloud scope changes
isolate Cloud synchronization error callbacks

Chores3

replace stale example model ids with gpt-5.6-luna
update dependencies
update dependencies
view on github
>@assistant-ui/core@0.3.14host assistant-cloud thread lists on AISDKThreads via RemoteThreadList55 changes

Features12

host assistant-cloud thread lists on AISDKThreads via RemoteThreadList
move useAssistantTransportRuntime into core/react
move useCloudThreadListRuntime into core/react and drop the unused react copy of the aui/v0 codec
expose InMemoryThreadList and its transform scopes from the store entry, with an onDelete callback and a fresh thread after deleting the last one
shared disabled predicates for the primitive layer on @assistant-ui/core/store/internal. the composer, action bar, branch picker, and suggestion disabled selectors previously lived as verbatim copies in each binding's hooks; they are now named exports (composerSendDisabled and friends) consumed by the react hooks and the vue and svelte bridges alike, so disabled semantics cannot drift between frameworks.
export runtimeAdapterTransformScopes from the store entry, so adapter packages can attach RuntimeAdapter's scope defaults to their own config entries.
add RemoteThreadListAdapter.unstable_useAdapters so the RemoteThreadList store entry can load per-thread history without rendering unstable_Provider
add a RemoteThreadList store entry so any AssistantClient host can run a remote thread list from a RemoteThreadListAdapter and a thread factory
add unstable_notifySessionReset so adapters with a resettable backing session can clear session-scoped tool-invocation state without run-cancel side effects; the eve reset now uses it instead of composing cancelRun with a hand-rolled session filter
host remote thread runtimeHooks as keyed tap resources on the list hook. useRemoteThreadListRuntime mounts one useResources host after each thread's unstable_Provider, so the first runtimeHook call already sees Provider adapters. AdapterSink only publishes those adapters. @assistant-ui/store/client exports useConfiguredAui and useAssistantContextProvider so that host can extend and provide a client the same way AuiProvider does in React.
new threads.selectionChanged event carrying threadId and previousThreadId; deprecate threadListItem.switchedTo/switchedAway in its favor. Un-deprecate the semantically meaningful events (thread.runStart, thread.runEnd, thread.initialize, composer.send, composer.attachmentAdd).
runtime suggestions can carry a display title and label

Fixes41

stabilize unstable_useAdapters results on both adapter faces and warn on an unkeyed history factory. the React host's synthesized provider now absorbs a fresh but shallow-equal adapters bag the same way the RemoteThreadList store entry does, reusing the store's useShallowStable primitive through its internal entry, and the store entry warns in development when a history adapter arrives while the thread factory is unkeyed, since switching threads would silently keep the first thread's history.
persist data message parts in aui/v0 cloud history
handle failed LocalRuntime user-message history writes without abandoning the run
report automatic thread title generation failures
report attachment removal failures without leaking unhandled rejections
isolate WebSpeech dictation listener errors and report async listener rejections from speech synthesis and voice sessions
handle rejected external-store callbacks
persist cloud history against the departing thread after a switch
derive thread composer canCancel from an in-flight run
snapshot composer role and run configuration before uploading attachments
route ThreadRuntime/ThreadListRuntime subscribe through the memoizing state binding, and give LazyMemoizeSubject the same identity guard ShallowMemoizeSubject has, so getState serves a stable identity between notifications. Note: ThreadRuntime.subscribe now only notifies when the shallow-compared ThreadState changed — composer edits no longer wake thread subscribers; observe them via runtime.composer.subscribe, matching every other runtime class.
generate the thread title as soon as the thread exists. the automatic title generation for a new thread fires when initialization resolves, concurrent with the first run, instead of at the first runEnd, so the sidebar stops showing "New Chat" for the whole first response and a thread abandoned mid-run no longer stays untitled forever. the title request carries the messages present at that moment, typically just the user message.
avoid trailing spaces when appending empty suggestions
paint the first message of a new thread before initialization resolves. the local core inserts and notifies before awaiting the initialization barrier, rolling the optimistic message back and rejecting with MessageNotSentError when the barrier fails, and the external-store core no longer holds onNew on it. behavior change for custom external-store adapters under a remote thread list: onNew and onEdit can now run before the thread record exists, so a dispatch that needs the remote identity must await threadListItem.initialize itself (the ai-sdk transport and langgraph already do, useStreamRuntime now does). appends that used to be silently dropped when the thread was stopped, unmounted, or switched away during the initialization wait now dispatch immediately instead; the invalidation guard still covers the tool-abort window. the queue path keeps the pre-enqueue barrier.
retain the message part children props in published declarations
switch away when remote thread unarchive fails
preserve archived thread state when unarchive fallback reseeds
refresh Cloud attachment uploads when the Cloud client changes
handle rejected dictation shutdowns
migrate interactables update-tool UIs across tools scope replacements and install pending ones once the scope appears
preserve metadata from every joined assistant message
wait for remote thread initialization before external-store appends
resynchronize lazy memoized state when connecting
discard pending appends when their thread runtime is replaced
gate queued external-store appends on thread initialization
ignore suggestions generated by superseded local runtime runs
keep duplicate model context registrations independent
isolate overlapping tool executions that reuse a toolCallId
notify every external thread-list subscriber when one listener throws
flush queued interactable writes through the outgoing persistence adapter, one full-state save at a time
notify every model context subscriber before rethrowing, and roll back a provider registration when its subscribe throws
retry remote thread initialization after a rejected append
model-context registrations follow the committed scope across structural replacements. The new useAssistantScopeEffect(scope, effect, deps) re-runs a registration when the scope's bound client is replaced (cleaning up against the old one first) while ignoring value updates, and the toolkit, runtime-adapter, interactables, and MCP registration sites now use it instead of registering once against a stable client ref.
isolate message queue subscriber errors
render system messages safely when editing components are omitted
resync a memoized thread snapshot when a subscriber connects, and load local history if the adapter arrives after the first load
notify every interactable model-context subscriber when one throws
notify every memoized subject subscriber when one throws
handle thread list action failures without unhandled rejections
clean up disconnected voice sessions
isolate voice volume subscriber failures

Styles1

apply oxfmt 0.63 formatting

Chores1

replace stale example model ids with gpt-5.6-luna
view on github
>@assistant-ui/eve@0.0.14expose runtime extras (error, session, events, reset) with accessor hooks4 changes

Features3

expose runtime extras (error, session, events, reset) with accessor hooks
adopt the eve 0.31+ session API (positional send, separate respond for HITL responses, cancel approval option) and raise the eve peer floor to >=0.32.0, validated against eve 0.37
add unstable_notifySessionReset so adapters with a resettable backing session can clear session-scoped tool-invocation state without run-cancel side effects; the eve reset now uses it instead of composing cancelRun with a hand-rolled session filter

Fixes1

settle eve text and reasoning parts to a complete part status once eve marks them done
view on github
>@assistant-ui/metro@0.0.10add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them1 change

Features1

add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them
view on github
>@assistant-ui/next@0.0.17add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them1 change

Features1

add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them
view on github
>@assistant-ui/react@0.15.15host assistant-cloud thread lists on AISDKThreads via RemoteThreadList23 changes

Features7

host assistant-cloud thread lists on AISDKThreads via RemoteThreadList
move useAssistantTransportRuntime into core/react
move useCloudThreadListRuntime into core/react and drop the unused react copy of the aui/v0 codec
add RemoteThreadListAdapter.unstable_useAdapters so the RemoteThreadList store entry can load per-thread history without rendering unstable_Provider
add a RemoteThreadList store entry so any AssistantClient host can run a remote thread list from a RemoteThreadListAdapter and a thread factory
new threads.selectionChanged event carrying threadId and previousThreadId; deprecate threadListItem.switchedTo/switchedAway in its favor. Un-deprecate the semantically meaningful events (thread.runStart, thread.runEnd, thread.initialize, composer.send, composer.attachmentAdd).
runtime suggestions can carry a display title and label

Fixes15

persist data message parts in aui/v0 cloud history
validate MCP App resource responses
dispose sandbox frames when bridge setup fails
await assistant transport response callbacks and cancel unfinished responses when they fail
keep bottom follow through a content-growth undershoot
refresh live completion results after their data source changes
keep MCP App error replies reliable when error callbacks throw
isolate MCP App notification callback errors
isolate assistant transport lifecycle callback failures
InMemoryThreadList restarts with a fresh thread when the last one is deleted, notifies the new onDelete callback, and applies deletes batch-safely; the export is now sourced from the core store entry
top-anchor turn clears skip turns that are still valid
preserve bottom follow through viewport clicks and cancel stale auto-scroll frames
keep Escape-to-stop-speaking active when message action bars are hidden by moving the shortcut to ThreadPrimitive.Root; custom compositions must mount the root to enable it
render system messages safely when editing components are omitted
handle synchronous live completion failures

Chores1

update dependencies
view on github
>@assistant-ui/react-a2a@0.2.30validate task push notification responses6 changes

Fixes5

validate task push notification responses
cancel invalid A2A stream responses
tolerate malformed A2A task content
report A2A message streams that end without events
validate successful task API responses before exposing them to runtimes

Chores1

update dependencies
view on github
>@assistant-ui/react-ai-sdk@1.4.6host assistant-cloud thread lists on AISDKThreads via RemoteThreadList4 changes

Features1

host assistant-cloud thread lists on AISDKThreads via RemoteThreadList

Refactors1

the package now re-exports @assistant-ui/ai-sdk. all existing imports keep working unchanged.

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-data-stream@0.12.27cancel response streams when response callbacks fail3 changes

Fixes1

cancel response streams when response callbacks fail

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-devtools@1.2.14sanitize circular collections and non-JSON primitives3 changes

Fixes2

sanitize circular collections and non-JSON primitives
sanitize invalid dates in inspected runtime values

Chores1

update dependencies
view on github
>@assistant-ui/react-generative-ui@0.0.15default untoned Teams alerts to info2 changes

Fixes1

default untoned Teams alerts to info

Docs1

name the slack, teams, and a2ui converter subpaths in the README
view on github
>@assistant-ui/react-markdown@0.14.11pass the raw fence language to custom highlighters instead of "unknown"1 change

Fixes1

pass the raw fence language to custom highlighters instead of "unknown"
view on github
>@assistant-ui/store@0.3.10aui.optional.<scope> resolves an unavailable scope to undefined instead of a throwing accessor, mirroring s.optional on the state side; the documented availability check moves off source != null11 changes

Features6

aui.optional.<scope> resolves an unavailable scope to undefined instead of a throwing accessor, mirroring s.optional on the state side; the documented availability check moves off source != null
hoist the shared binding utilities to the client entry. createClientFacade (stable client facade over a source) and createLastValidCache/createStaleReporter (by-index shrink guard with an injectable expiry scheduler) were duplicated per framework bridge; they now live on @assistant-ui/store/client so bridges cannot drift.
subscription-owned lifecycle for createAssistantClient. the handle now rides tap's mountOnSubscribe: scopes render lazily on first read, mount when the first subscriber attaches, and soft unmount one task after the last subscriber releases (effects clean up, state is retained, a later subscriber remounts the same scopes). state updates before the first subscriber throw; an imperative consumer without a reactive framework holds a no-op subscription. destroy remains the permanent teardown: synchronous while subscribers are attached; after the last release it defers to the soft unmount that release already scheduled. requires @assistant-ui/tap ^0.9.12.
hoist the viewport scroll math to the client entry. isViewportAtBottom, viewportOverflows, isUserScrollUp, and observeContentResize were vue-local; they now live on @assistant-ui/store/client so the svelte viewport consumes the same implementation.
host remote thread runtimeHooks as keyed tap resources on the list hook. useRemoteThreadListRuntime mounts one useResources host after each thread's unstable_Provider, so the first runtimeHook call already sees Provider adapters. AdapterSink only publishes those adapters. @assistant-ui/store/client exports useConfiguredAui and useAssistantContextProvider so that host can extend and provide a client the same way AuiProvider does in React.
new threads.selectionChanged event carrying threadId and previousThreadId; deprecate threadListItem.switchedTo/switchedAway in its favor. Un-deprecate the semantically meaningful events (thread.runStart, thread.runEnd, thread.initialize, composer.send, composer.attachmentAdd).

Fixes4

stabilize unstable_useAdapters results on both adapter faces and warn on an unkeyed history factory. the React host's synthesized provider now absorbs a fresh but shallow-equal adapters bag the same way the RemoteThreadList store entry does, reusing the store's useShallowStable primitive through its internal entry, and the store entry warns in development when a history adapter arrives while the thread factory is unkeyed, since switching threads would silently keep the first thread's history.
stop active chats only when their standalone client is destroyed
model-context registrations follow the committed scope across structural replacements. The new useAssistantScopeEffect(scope, effect, deps) re-runs a registration when the scope's bound client is replaced (cleaning up against the old one first) while ignoring value updates, and the toolkit, runtime-adapter, interactables, and MCP registration sites now use it instead of registering once against a stable client ref.
cache live config source reads between notifications so getConfig satisfies the useSyncExternalStore getSnapshot contract

Refactors1

the config path rides React's scheduler instead of a self-scheduled tap root
view on github
>@assistant-ui/tap@0.9.13reconcile effects at commit time so mount, update, and Activity reveal share one mechanism21 changes

Features6

reconcile effects at commit time so mount, update, and Activity reveal share one mechanism
useTapRoot falls through React for Suspense/ErrorBoundary support
hold the committed value when a scheduler-driven update suspends in useTapRoot; createTapRoot now reports initial-render suspension with a clear error
useReducer overloads for action-less reducers
the standalone shim gains jsx-runtime and jsx-dev-runtime entries plus module-scope forwardRef and memo, so react-coupled module graphs stay loadable under the react-less alias; rendering their JSX without real React still throws.
use(promise) suspends resource renders

Fixes10

deduplicate changelog records during StrictMode replay
rewind reducer cells through committed history so React replays from any mid-chain base reduce from the oracle state
keep the compiler memo cache across uncommitted render replays so a StrictMode double invoke observes one memoized instance
roll back compiler memo caches with resource versions
preserve reducer state when React replays a chain from a record's committed dispatch floor
discard the work-in-progress render when a resource render throws
restore application snapshots when a rewound replay is discarded, stop dispatch-before-mount from stranding replay history retention, and throw in development and test environments when a below-committed replay finds no committed history to rewind
export the full react surface the package dists import from both shims explicitly
useSyncExternalStore re-checks the snapshot after commits where the value or getSnapshot changed
useSyncExternalStore reads getServerSnapshot for every pre-mount render pass

Refactors1

add a shared scheduleTask for one-off deferred work instead of allocating single-purpose UpdateScheduler instances

Docs1

repitch the README around the hook-dispatch engine and its two use cases

Tests2

wait deterministically for scheduler flushes instead of racing setTimeout against MessageChannel
wait deterministically for the scheduleTask flush instead of racing setTimeout against MessageChannel

Chores1

update dependencies
view on github
>@assistant-ui/vite@0.0.14add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them1 change

Features1

add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them
view on github
>@assistant-ui/x-buildutils@0.0.23remap a package's own bare react imports to the react-free standalone-shim when it depends on tap without a react peer, so a reactless bridge's build output no longer imports React directly4 changes

Fixes2

remap a package's own bare react imports to the react-free standalone-shim when it depends on tap without a react peer, so a reactless bridge's build output no longer imports React directly
count direct react dependencies when selecting the tap shim target

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/x-generative-compiler@0.0.14add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them1 change

Features1

add a backendless compile option for apps without their own backend (e.g. cloud-hosted runs), keeping "use generative" frontend/human tool schemas and JSONGenerativeUI component-library schemas uploadable from the client instead of assuming the backend already knows them
view on github
>assistant-cloud@0.1.41scope anonymous refresh tokens by Cloud backend7 changes

Fixes6

scope anonymous refresh tokens by Cloud backend
validate file API responses before returning them to consumers
preserve anonymous identities when token refresh fails transiently
validate auth token responses
validate Cloud run stream response bodies and content types
validate thread, message, and run IDs returned by Cloud mutations

Chores1

update dependencies
view on github
>assistant-stream@0.3.38cancel invalid Gorp stream responses9 changes

Fixes8

cancel invalid Gorp stream responses
release merged stream child readers after completion and cancellation
await merged stream cleanup during cancellation
keep partial tool-call args parseable when a negative number is cut before its digits
isolate overlapping tool executions that reuse a toolCallId
cancel and release assistant message stream readers when iteration ends
release resumable producer readers after stream failures
prevent stale data from leaking into reacquired Redis streams

Chores1

update dependencies
view on github
>assistant-ui@0.0.111register the with-openui example in npx assistant-ui create now that @openuidev/react-headless widened its ai peer to ^6 || ^74 changes

Features1

register the with-openui example in npx assistant-ui create now that @openuidev/react-headless widened its ai peer to ^6 || ^7

Fixes1

avoid installing the incompatible legacy React UI package during upgrades

Chores2

replace stale example model ids with gpt-5.6-luna
update dependencies
view on github
>4 maintenance releasesdependency updates and chores
>@assistant-ui/agent-launcher@0.1.11update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/mcp-docs-server@0.2.2update dependencies2 changes

Chores2

update dependencies
update dependencies
view on github
>@assistant-ui/react-o11y@0.0.40@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>create-assistant-ui@0.0.74[email protected]1 change

Aug 12, 2026

16 releases

>@assistant-ui/cloud-ai-sdk@0.1.33clear stale thread lists when the Cloud client changes3 changes

Fixes3

clear stale thread lists when the Cloud client changes
include archived Cloud threads when requested and preserve archive filters
settle thread loading when automatic fetching becomes disabled
view on github
>@assistant-ui/core@0.3.13give the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.14 changes

Features3

give the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.
accept providerMetadata on image and file message parts, the channel text, reasoning and source parts already carry. A runtime adapter reads its own namespace off it, so a part can carry provider-specific data (an upload id, a document handle) without a field per provider.
wire threads.reloadMainThread through the tap ExternalThread path via a new onRefetchThread callback, with the refetchThread capability derived from its presence

Fixes11

prevent pending ExternalThread attachment additions from restoring cleared drafts
make a cancelled run move its trailing user message instead of dropping it. the message now leaves the thread only when the composer actually accepts it, so cancelling while a draft is already being written keeps the message in the thread rather than deleting it and handing it back nowhere, and what comes back carries the attachments and quote instead of the text alone. a message carrying content the composer has no home for, such as an image or file part, is left in the thread untouched. adapters keep the existing setMessages guard: without it the runtime cannot see its own removal survive, so an adapter that removes the cancelled message itself owns handing it back.
reconcile cancelRun's deferred resync with store updates that land before it flushes, instead of stamping a pre-cancel snapshot over them
gate interactable state snapshots at dispatch instead of at enqueue. a message sent while a run is in flight waits in a queue lane but carried the snapshot taken when the user sent it, so a run that landed its own update_{name} in the meantime was folded over by a stale user-edit version: a full snapshot replaced the model's edit outright, and a partial one merged the older diff on top of it, producing a state that never existed. every send path now stamps exactly once, when the message is dispatched rather than when it is queued. LocalThreadRuntimeCore stamps in _runAppend, the point both the direct send and the queue flush pass through, and ExternalThreadQueueAdapter gained an optional __internal_setDispatchTransform that createMessageQueue implements and ExternalStoreThreadRuntimeCore installs, so a queued message is re-gated against the thread tail it actually lands on. an adapter that does not implement the transform is stamped at enqueue as before.
pause an external store's message queue when the user cancels. cancelling left the queue running, so the aborted run's settle dispatched the next pending message at the moment the user pressed Stop; the pending items now survive and the next send drains them, matching what the local runtime does under unstable_queueClearOnCancel: false and the behaviour that flag becomes once it is removed.
hide external thread cancellation when no handler is configured
preserve ExternalThread composer state while attachments are prepared for send
stamp interactable state snapshots on every send, not just composer sends. the gate ran in the thread and edit composer cores, so a send that skipped the composer carried metadata.custom = {}: a Suggestions entry with send goes through thread.append, as does user code calling assistant.thread.append(...). the model then saw an update_{name} tool whose required id is documented as coming from a state snapshot, found no snapshot in the conversation, and could not call the tool at all. gating now runs in BaseThreadRuntimeCore.enrichAppendMetadata, applied by both thread runtime cores on append, deriving the branch prefix from the message's parentId so the previous composer behavior is reproduced exactly (the thread tail for an ordinary send, the edited message's parent for an edit). the remove operation's item id description in generated array-update schemas no longer reuses the instance-addressing wording that told the model each removable list item was an interactable instance.
keep trailing user messages out of the composer when an external store cannot persist deletions
deliver threadListItem.switchedTo to default-scope listeners (#5699). the thread list item client now emits the switch from its own observed selection transition, after the flush that rebinds the derived scopes, instead of relaying the runtime's synchronous notification. scoped listeners now resolve their scope against the host's current client at delivery time, so a listener subscribed before a structural swap follows the scope's present binding; the notification manager re-reads the listener set at flush time per the documented live-set semantics. listeners that need a pinned instance subscribe on an id-scoped client instead.
derive the suggestions scope from the thread so runtime-provided suggestions render through ThreadPrimitive.Suggestions (#5529)
view on github
>@assistant-ui/eve@0.0.13hand a cancelled queued send back to the composer instead of dropping it. hitting Stop while a message waits behind a streaming turn now restores that message as the composer draft, superseding the 0.0.10 note that cancelling a run drops queued sends. a turn cancelled before it streamed still hands its own message back to the composer first, so the queued one is dropped in that window. cancelled tool approvals are still discarded, and unmounting the runtime still drops whatever is queued.1 change

Fixes1

hand a cancelled queued send back to the composer instead of dropping it. hitting Stop while a message waits behind a streaming turn now restores that message as the composer draft, superseding the 0.0.10 note that cancelling a run drops queued sends. a turn cancelled before it streamed still hands its own message back to the composer first, so the queued one is dropped in that window. cancelled tool approvals are still discarded, and unmounting the runtime still drops whatever is queued.
view on github
>@assistant-ui/react@0.15.14give the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.5 changes

Features2

give the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.
wire threads.reloadMainThread through the tap ExternalThread path via a new onRefetchThread callback, with the refetchThread capability derived from its presence

Fixes3

release replay response readers after completion, cancellation, and errors
generate unique in-memory thread IDs
derive the suggestions scope from the thread so runtime-provided suggestions render through ThreadPrimitive.Suggestions (#5529)
view on github
>@assistant-ui/react-a2a@0.2.29reject synchronous message responses with invalid A2A roles1 change

Fixes1

reject synchronous message responses with invalid A2A roles
view on github
>@assistant-ui/react-ag-ui@0.0.54round-trip a part's providerMetadata.agui through AG-UI's content metadata. An image or file part, whether it sits on the message or inside an attachment, now reaches the agent with whatever the host put in that namespace, and an inbound item puts it back on the rebuilt part, so a snapshot echo resends it instead of dropping it. A file part's own filename still wins over a key of the same name. Text is unchanged, its AG-UI schema has no metadata field.5 changes

Features1

round-trip a part's providerMetadata.agui through AG-UI's content metadata. An image or file part, whether it sits on the message or inside an attachment, now reaches the agent with whatever the host put in that namespace, and an inbound item puts it back on the rebuilt part, so a snapshot echo resends it instead of dropping it. A file part's own filename still wins over a key of the same name. Text is unchanged, its AG-UI schema has no metadata field.

Fixes4

preserve image filenames through AG-UI snapshots
preserve queued messages when cancelling an active run
preserve encrypted-only reasoning records across the AG-UI round trip. Under zero data retention an agent sends a ReasoningMessage whose readable content is empty and whose payload is entirely in encryptedValue, and both the adapter and the core normalizer dropped it: the import guarded on empty text, and a reasoning part with neither text nor summary is removed by fromThreadMessageLike. Such a record now rides on metadata.custom.agui.opaqueReasoning of the neighbouring message instead of becoming an unrenderable part, and is replayed into the run input adjacent to that message. A record that sat between an assistant message and its own tool result is replayed after that result, since import folds the result into the assistant message and that boundary no longer exists at export. A runtime configured with showThinking: false is affected too: it previously emitted no reasoning records at all, and now emits { role: "reasoning", content: "", encryptedValue } for each imported record that carried a value, since that option hides reasoning from the UI rather than discarding state the agent needs back.
keep reasoning, and its signature, across the AG-UI round trip. toAgUiMessages built the run input from extractText, which reads text parts only, so an imported reasoning-only assistant message was discarded as a blank turn and a live assistant message silently lost its reasoning; reloading a thread and sending one more message deleted the reasoning history from what the agent received. Reasoning parts now leave as the standalone reasoning records they arrived as. The runtime also consumes REASONING_ENCRYPTED_VALUE and stores the blob at providerMetadata.agui.encryptedValue, so reasoning from a live run and from an imported ReasoningMessage are both re-emitted with their signature intact rather than replayed unsigned.
view on github
>@assistant-ui/react-generative-ui@0.0.14report the depth warning against the 32 levels of element nesting the Slack and Teams converters actually allow, instead of the 64 traversal units that ceiling is spent in7 changes

Fixes7

report the depth warning against the 32 levels of element nesting the Slack and Teams converters actually allow, instead of the 64 traversal units that ceiling is spent in
report the content the Slack and Teams converters were discarding silently. A ListView or Carousel child that would have rendered, a malformed Select or RadioGroup option, and a table column without a string label all warn dropped now, while a child that renders nothing anyway stays silent. A Slack column without a label also keeps its position now, so the header stays aligned with the data, and a discarded child no longer spends the shared markdown and data-table budgets or reserves a Teams input id that renames a control which survives
let a composition read as one answer instead of a stack of boxes
raise the Slack data_table caps to the current platform ceiling (200 data rows, 20,000 characters) so large tables are no longer clamped below what Slack accepts
report a reshaped Slack carousel card accurately. The reshape is a fallback rather than a clamped, since a card holding only text loses nothing; the images, tables, charts, and controls a reshape really does lose are reported separately as dropped; and the title and body are clamped through the warning path instead of being sliced silently
stop reporting clamped for Teams conversions that remove nothing. A renamed input id and buttons moved past the primary cap now report fallback, and the row-width recommendation and the payload byte budget report a new advisory code
report the Teams payload warning against the 80,000-byte soft budget it actually crosses instead of Teams' 100 KB message limit
view on github
>@assistant-ui/react-native@0.1.36respect prevented composer key events1 change

Fixes1

respect prevented composer key events
view on github
>@assistant-ui/react-pi@0.0.17release event stream readers after completion, cancellation, and errors1 change

Fixes1

release event stream readers after completion, cancellation, and errors
view on github
>@assistant-ui/store@0.3.9scoped event listeners under a derived-only provider filter against the child's own bindings instead of the parent's, in both directions and through scope-less intermediate hosts3 changes

Fixes3

scoped event listeners under a derived-only provider filter against the child's own bindings instead of the parent's, in both directions and through scope-less intermediate hosts
publish hosted scope rebinds before descendant layout effects
deliver threadListItem.switchedTo to default-scope listeners (#5699). the thread list item client now emits the switch from its own observed selection transition, after the flush that rebinds the derived scopes, instead of relaying the runtime's synchronous notification. scoped listeners now resolve their scope against the host's current client at delivery time, so a listener subscribed before a structural swap follows the scope's present binding; the notification manager re-reads the listener set at flush time per the documented live-set semantics. listeners that need a pinned instance subscribe on an id-scoped client instead.
view on github
>@assistant-ui/tap@0.9.12mountOnSubscribe1 change

Features1

mountOnSubscribe
view on github
>assistant-cloud@0.1.40include archived Cloud threads when requested and preserve archive filters1 change

Fixes1

include archived Cloud threads when requested and preserve archive filters
view on github
>assistant-ui@0.0.110clarify malformed package.json errors from the info command1 change

Fixes1

cli
clarify malformed package.json errors from the info command
view on github
>3 maintenance releasesdependency updates and chores
>@assistant-ui/react-mcp@0.1.12@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>@assistant-ui/react-o11y@0.0.39@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github
>create-assistant-ui@0.0.73[email protected]1 change

Aug 9, 2026

13 releases

>@assistant-ui/cloud-ai-sdk@0.1.32clear a selected Cloud thread when archiving removes it from the list1 change

Fixes1

clear a selected Cloud thread when archiving removes it from the list
view on github
>@assistant-ui/core@0.3.12move ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core1 change

Refactors1

move ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core
view on github
>@assistant-ui/core@0.3.11name the offending input when an external message converter returns an invalid message3 changes

Fixes2

name the offending input when an external message converter returns an invalid message
expose additional Cloud thread pages through the thread list runtime

Other1

Republish: 0.3.10 was left staged on npm by a failed publish and cannot be re-pushed.
view on github
>@assistant-ui/eve@0.0.12isolate observe-only Eve lifecycle callbacks1 change

Fixes1

isolate observe-only Eve lifecycle callbacks
view on github
>@assistant-ui/react@0.15.13move ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core1 change

Refactors1

move ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core
view on github
>@assistant-ui/react-langgraph@0.14.23skip RemoveMessage explicitly in convertLangChainMessages2 changes

Fixes1

skip RemoveMessage explicitly in convertLangChainMessages

Chores1

drop dependencies that are never imported
view on github
>@assistant-ui/react-lexical@0.2.9clear stale composer text when switching to a thread with an empty draft1 change

Fixes1

clear stale composer text when switching to a thread with an empty draft
view on github
>@assistant-ui/react-pi@0.0.16isolate runtime error callback failures1 change

Fixes1

isolate runtime error callback failures
view on github
>assistant-stream@0.3.37support ioredis 6 alongside 5 in the resumable stream store2 changes

Features1

support ioredis 6 alongside 5 in the resumable stream store

Fixes1

isolate tool execution lifecycle callback errors from stream settlement
view on github
>4 maintenance releasesdependency updates and chores
>@assistant-ui/react@0.15.12drop dependencies that are never imported1 change

Chores1

drop dependencies that are never imported
view on github
>@assistant-ui/react-google-adk@0.0.25drop dependencies that are never imported1 change

Chores1

drop dependencies that are never imported
view on github
>@assistant-ui/react-mcp@0.1.11@assistant-ui/[email protected]1 change
>@assistant-ui/react-mcp@0.1.10@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github

Aug 8, 2026

55 releases

>@assistant-ui/cloud-ai-sdk@0.1.30clear the selected Cloud thread after deleting it1 change

Fixes1

clear the selected Cloud thread after deleting it
view on github
>@assistant-ui/core@0.3.9route sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler1 change

Fixes1

route sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler
view on github
>@assistant-ui/core@0.3.8preserve app-authored reasoning summaries on message parts2 changes

Features1

preserve app-authored reasoning summaries on message parts

Other1

Edit composer send always emits: an unchanged edit re-sends the message on a new branch instead of silently closing the composer.
view on github
>@assistant-ui/eve@0.0.10serialize eve sends so approvals and sends during an active turn no longer crash or drop messages. Cancelling a run or unmounting the runtime drops sends still queued behind the active turn.1 change

Fixes1

serialize eve sends so approvals and sends during an active turn no longer crash or drop messages. Cancelling a run or unmounting the runtime drops sends still queued behind the active turn.
view on github
>@assistant-ui/react@0.15.9feedback adapter support in ExternalThread6 changes

Features3

feedback adapter support in ExternalThread
speech synthesis adapter support in ExternalThread
preserve app-authored reasoning summaries on message parts

Fixes2

allow failed live completion searches to be retried
clear dropped assistant transport resume requests

Other1

Edit composer send always emits: an unchanged edit re-sends the message on a new branch instead of silently closing the composer.
view on github
>@assistant-ui/react@0.15.11ExternalThread edit composer reads editing state live, so a same-tick beginEdit + setText + send dispatches the edit; send before beginEdit and double beginEdit now throw (legacy runtime parity)2 changes

Fixes1

ExternalThread edit composer reads editing state live, so a same-tick beginEdit + setText + send dispatches the edit; send before beginEdit and double beginEdit now throw (legacy runtime parity)

Chores1

update dependencies
view on github
>@assistant-ui/react@0.15.10route sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler1 change

Fixes1

route sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler
view on github
>@assistant-ui/react-ag-ui@0.0.52send description: "" for a tool registered without one, so RunAgentInput stays valid against the AG-UI schema. previously the key was dropped from the payload entirely and validating servers rejected the run. also types the runAgent call site against the upstream parameters.2 changes

Fixes2

send description: "" for a tool registered without one, so RunAgentInput stays valid against the AG-UI schema. previously the key was dropped from the payload entirely and validating servers rejected the run. also types the runAgent call site against the upstream parameters.
isolate runtime lifecycle callback failures
view on github
>@assistant-ui/react-data-stream@0.12.25isolate lifecycle callback failures from stream control flow1 change

Fixes1

isolate lifecycle callback failures from stream control flow
view on github
>@assistant-ui/react-langgraph@0.14.21isolate stream event callback errors1 change

Fixes1

isolate stream event callback errors
view on github
>@assistant-ui/react-lexical@0.2.8support lexical 0.492 changes

Features1

support lexical 0.49

Chores1

update dependencies
view on github
>@assistant-ui/react-pi@0.0.15support pi 0.842 changes

Features1

support pi 0.84

Chores1

update dependencies
view on github
>@assistant-ui/react-pi@0.0.14isolate initial subscription callback errors1 change

Fixes1

isolate initial subscription callback errors
view on github
>@assistant-ui/store@0.3.7createAssistantClient accepts an AssistantConfigSource, re-read in the root render so bindings can deliver config changes (updated element args, added or removed scopes) without remounting surviving scopes2 changes

Features1

createAssistantClient accepts an AssistantConfigSource, re-read in the root render so bindings can deliver config changes (updated element args, added or removed scopes) without remounting surviving scopes

Fixes1

answer Vue reactivity introspection probes (__v_raw, __v_isRef, __v_isReactive, __v_isReadonly, __v_isShallow, __v_skip) on client proxies with undefined instead of an error accessor, so Vue's toRaw/isRef checks and its dev warning formatter no longer throw when a client crosses a Vue boundary
view on github
>assistant-stream@0.3.35preserve app-authored reasoning summaries on message parts3 changes

Features1

preserve app-authored reasoning summaries on message parts

Fixes2

preserve streamed tool arguments when other content is interleaved
carry a reasoning summary on the data stream. a reasoning part opened with unstable_summary previously lost it on that wire, and a summary-only part produced no frames at all, so it never reached the client. the encoder now emits a reasoning part-start frame when there is a summary to carry; a stream that does not use the field is unchanged, and one that does requires a decoder that understands the frame.
view on github
>40 maintenance releasesdependency updates and chores
>@assistant-ui/agent-launcher@0.1.10update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/cloud-ai-sdk@0.1.31update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/core@0.3.10update dependencies2 changes

Chores2

update dependencies
reformat with oxfmt 0.62
view on github
>@assistant-ui/eve@0.0.11update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/mcp-docs-server@0.2.1update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/metro@0.0.8update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/next@0.0.15update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-a2a@0.2.28update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ag-ui@0.0.53update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ai-sdk@1.4.5update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-data-stream@0.12.26update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-devtools@1.2.13update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-generative-ui@0.0.13update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-google-adk@0.0.24update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-hook-form@0.12.27update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ink@0.0.37update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-ink-markdown@0.0.36update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-langchain@0.0.25update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-langgraph@0.14.22update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-markdown@0.14.10update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-mcp@0.1.9update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-mcp@0.1.8@assistant-ui/[email protected]1 change
>@assistant-ui/react-mcp@0.1.7[email protected]1 change
>@assistant-ui/react-native@0.1.35update dependencies2 changes

Chores2

update dependencies
reformat with oxfmt 0.62
view on github
>@assistant-ui/react-o11y@0.0.38update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-o11y@0.0.37@assistant-ui/[email protected]1 change
>@assistant-ui/react-opencode@0.2.18update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-streamdown@0.3.10update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/react-syntax-highlighter@0.14.5update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/store@0.3.8update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/tap@0.9.11update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/vite@0.0.12update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/x-buildutils@0.0.22update dependencies1 change

Chores1

update dependencies
view on github
>@assistant-ui/x-generative-compiler@0.0.12update dependencies1 change

Chores1

update dependencies
view on github
>assistant-cloud@0.1.39update dependencies1 change

Chores1

update dependencies
view on github
>assistant-stream@0.3.36update dependencies1 change

Chores1

update dependencies
view on github
>assistant-ui@0.0.109update dependencies1 change

Chores1

update dependencies
view on github
>create-assistant-ui@0.0.72[email protected]1 change
>heat-graph@0.0.15update dependencies1 change

Chores1

update dependencies
view on github
>safe-content-frame@0.0.27update dependencies1 change

Chores1

update dependencies
view on github

Aug 6, 2026

23 releases

>@assistant-ui/core@0.3.6AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.5 changes

Features2

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
two-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes3

preserve falsy tool results
drop the react type dependency from the core default entry and pin the framework neutral boundary with a contract test
accept all valid image data URLs in sanitizeImageContent instead of a hardcoded format list
view on github
>@assistant-ui/eve@0.0.8export toEveInputResponse from the package barrel for custom approval flows5 changes

Features1

export toEveInputResponse from the package barrel for custom approval flows

Fixes4

render connector authorization parts and map auth-suspended turns to requires-action
convert inbound eve file parts instead of dropping them
reconcile staged messages with live session updates and promote staged prefixes on reload
map cancelled and failed turns to terminal message statuses instead of a permanent running state
view on github
>@assistant-ui/metro@0.0.7AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.1 change

Features1

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
view on github
>@assistant-ui/next@0.0.14only run the use-generative loader on modules carrying the directive1 change

Fixes1

only run the use-generative loader on modules carrying the directive
view on github
>@assistant-ui/react@0.15.5AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.10 changes

Features2

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
two-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes8

allow callers to override the default type="button" on action button primitives
hydrate assistant transport resumes from their retained initial state
AttachmentPrimitive.Thumb now renders custom children and supports asChild instead of always overriding them with the automatic label
AttachmentPrimitive.Thumb no longer renders a bare "." for extension-less filenames; falls back to the attachment type
ignore Escape during IME composition in ComposerPrimitiveInput so dismissing a composition candidate no longer cancels the composer
defer blob URL revocation in ActionBarPrimitive.ExportMarkdown so the download fetch can start before the URL is revoked
settle assistant transport runs when finish callbacks fail
compose SelectionToolbarRoot onMouseDown with composeEventHandlers so user handlers run before preventDefault
view on github
>@assistant-ui/react-a2a@0.2.27restore inbound file and audio parts as file message parts instead of text placeholders4 changes

Fixes4

restore inbound file and audio parts as file message parts instead of text placeholders
keep the wire filename on inbound image parts
preserve replacement run state when an aborted run settles late
isolate runtime callback failures from A2A stream processing
view on github
>@assistant-ui/react-ag-ui@0.0.51add unstableenableMessageQueue so a send during a run is buffered instead of swallowed3 changes

Features2

add unstable_enableMessageQueue so a send during a run is buffered instead of swallowed
two-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes1

abort AG-UI HTTP requests when cancelling runs
view on github
>@assistant-ui/react-generative-ui@0.0.12keep chart strokes crisp under viewBox stretching and stop outlining area baselines1 change

Fixes1

keep chart strokes crisp under viewBox stretching and stop outlining area baselines
view on github
>@assistant-ui/react-google-adk@0.0.22keep ADK stream error events reliable when error callbacks fail1 change

Fixes1

keep ADK stream error events reliable when error callbacks fail
view on github
>@assistant-ui/react-hook-form@0.12.26submit forms registered with standard and nested inputs1 change

Fixes1

submit forms registered with standard and nested inputs
view on github
>@assistant-ui/react-ink@0.0.36AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.3 changes

Features2

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
two-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes1

AttachmentPrimitive.Thumb now renders custom children instead of always overriding them with the automatic label
view on github
>@assistant-ui/react-langchain@0.0.24isolate LangChain stream options between thread runtimes1 change

Fixes1

isolate LangChain stream options between thread runtimes
view on github
>@assistant-ui/react-langgraph@0.14.20two-lane, placement-aware message queue with steer-by-default mid-run sends1 change

Features1

two-lane, placement-aware message queue with steer-by-default mid-run sends
view on github
>@assistant-ui/react-mcp@0.1.4AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.3 changes

Features1

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes2

handle rejected MCP server removal actions
serialize custom server persistence updates
view on github
>@assistant-ui/react-native@0.1.34AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.3 changes

Features1

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes2

AttachmentPrimitive.Thumb now renders custom children instead of always overriding them with the automatic label
AttachmentPrimitive.Thumb no longer renders a bare "." for extension-less filenames; falls back to the attachment type
view on github
>@assistant-ui/react-o11y@0.0.34AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.2 changes

Features1

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes1

prevent cyclic span parent links from crashing observability trees
view on github
>@assistant-ui/react-pi@0.0.13two-lane, placement-aware message queue with steer-by-default mid-run sends1 change

Features1

two-lane, placement-aware message queue with steer-by-default mid-run sends
view on github
>@assistant-ui/react-streamdown@0.3.9merge user rehypePlugins after the security hardening pipeline instead of dropping it2 changes

Fixes2

merge user rehypePlugins after the security hardening pipeline instead of dropping it
preserve Streamdown sanitization extensions with security
view on github
>@assistant-ui/store@0.3.4AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.3 changes

Features3

AuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
add a framework-neutral client entry with createAssistantClient over a standalone tap root
make the react peer optional; react-less consumers alias react to @assistant-ui/tap/standalone-shim instead
view on github
>@assistant-ui/tap@0.9.10add a react-free standalone shim entry and make the react peer optional1 change

Features1

add a react-free standalone shim entry and make the react peer optional
view on github
>@assistant-ui/x-buildutils@0.0.21only run the react compiler on tap-dependent packages that declare a react peer, so non-React framework bridges do not gain memo caches that run outside any render the compiler understands1 change

Fixes1

only run the react compiler on tap-dependent packages that declare a react peer, so non-React framework bridges do not gain memo caches that run outside any render the compiler understands
view on github
>assistant-stream@0.3.34await resumable reader cleanup during cancellation1 change

Fixes1

await resumable reader cleanup during cancellation
view on github
>1 maintenance releasedependency updates and chores
>@assistant-ui/react-ink-markdown@0.0.35@assistant-ui/[email protected]1 change

Other1

@assistant-ui/[email protected]
view on github