# What changed in @assistant-ui/react

> 455 changes in @assistant-ui/react 0.11 to 0.15 from its official release notes, upgrade guides and advisories: 79 breaking, 20 deprecations, 2 security, 159 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/@assistant-ui/react/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @assistant-ui/react 0.15

### Breaking changes

- Disposing a frame immediately tells its parent it is gone, causing waiting tool calls to be rejected instead of timing out after 30 seconds. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Attachment rendering now includes still-uploading attachments, so renderers receive Attachment rather than CompleteAttachment. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- The runtime state returned by ThreadRuntime.getState() now has a named exported type. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- @assistant-ui/core now requires assistant-cloud version 0.2.0 or newer. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- The function now returns a promise that rejects when the runtime cannot record the response, leaving refused requests retryable. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Moves useAssistantTransportRuntime into core/react, changing the package location developers use to import it. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- The Assistant augmentation namespace moved from @assistant-ui/react into @assistant-ui/core, so imports may need updating. (0.15.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.13)
- ExternalThread moved from @assistant-ui/react into @assistant-ui/core, so imports may need updating. (0.15.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.13)
- SingleThreadList moved from @assistant-ui/react into @assistant-ui/core, so imports may need updating. (0.15.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.13)
- ExternalThread edit composer now reads editing state live; same-tick beginEdit + setText + send dispatches the edit, while invalid send and duplicate beginEdit throw. (0.15.11) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.11)
- beginEdit now fails fast when no edit handler is configured. (0.15.10) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.10)
- Unchanged edits now resend the message on a new branch instead of silently closing the composer. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- AuiConfig(...) creates branded configurations accepted by AuiProvider, including top-level and nested client scopes. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Nested providers must pass extends with a client to extend or null to isolate; empty configs extend the parent client. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- ExternalThreadQueueAdapter clear(reason) is removed; queue clearing policy is host-owned. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- edit is now required on ExternalThreadQueueAdapter. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- ExternalThreadQueueAdapter enqueue no longer accepts steer options; steering is a separate operation. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- move is now required on ExternalThreadQueueAdapter. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- QueueItemState.parts is now required. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- ExternalThreadQueueAdapter steer(queueItemId) is replaced by move with a steer lane and null insertion point. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- steerItems is now required on ExternalThreadQueueAdapter. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Custom resources must return a stable object identity to avoid repeated refetches and loadingFallback during re-renders. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Unavailable scopes no longer throw during selection; check availability through source before reading other properties or calling. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)
- The mcp-app group key was removed; use standalone-tool-call instead. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)
- The component-only ToolsState.tools map was removed; use toolUIs instead. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)
- Legacy context hooks deprecated in v0.12/v0.14 were removed; use useAui or useAuiState instead. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)

### Security

- MCP App resource CSP metadata is enforced inside widget frames. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)

### Deprecations

- The Unstable_TriggerPopover aliases are now struck through as deprecated in TypeScript. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Experimental APIs are marked deprecated since their experimental date so editors strike them through and no-deprecated checks report them. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- The unused history adapter option on useAssistantTransportRuntime is deprecated. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- ThreadState remains a runtime-state alias for now but is deprecated ahead of its store-state meaning in 0.16. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Primitive.Empty is deprecated on react-native and react-ink in favor of AuiIf. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Primitive.If is deprecated on react-native and react-ink in favor of AuiIf. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Deprecated in favor of threads.selectionChanged, which also covers selection changes previously missed by the switched events. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Deprecated in favor of threads.selectionChanged, which also covers selection changes previously missed by the switched events. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- The value prop is deprecated and now exposes a new client extending the given one rather than the exact instance. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- The useAui extension overload is deprecated. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Audio message parts are deprecated in favor of file parts with an audio/* MIME type. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Nullary scope accessors are now properties; calling them still works but is deprecated. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)

### New APIs and options

- Adds an adapter for direct browser voice sessions with streamed transcripts, typed input, mute controls, and cancellable WebRTC setup. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Tool approvals can ask multiple questions or allow multiple answers, with validation and recorded answers exposed to response handlers and converters. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Long threads can be virtualized per part using stable thread rows, reducing rerenders while tokens stream and enabling turn-duration footers. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Threads can open on their latest page and load older messages on demand through external-store, runtime, primitive, and React Native APIs. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Converter metadata can be invalidated at message scope. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Reasoning parts now expose optional start and end timing, enabling hosts and grouped parts to show agent thinking duration. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Visible component action settle delays can be configured. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- The package now re-exports MessageRole, RunConfig, RuntimeCapabilities, RemoteThreadListOptions, ThreadsState, JoinStrategy, title adapters, and ChainOfThoughtPartByIndexProvider. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- The package now re-exports additional runtime, voice, tool, generative UI, message queue, and cloud thread list APIs. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- The package now re-exports voice, cloud thread list, generative UI, runtime state, and adapter types. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- CloudRendererHost can render stored conversations in the Assistant Cloud dashboard using the app's components. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Voice sessions can accept typed text through sendText, committing it as a typed turn. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Recorded tool interactions are kept on the part and stored in cloud history. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- External stores receive recorded tool interactions through a new callback. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Tool UIs can record user actions on tool calls, with records persisted according to the runtime or external store. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- useAssistantTransportRuntime accepts cloud, enabling Assistant Cloud thread lists and cloud thread IDs on requests. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- VoiceSessionState exposes canSendText so composers can determine whether typed text is accepted. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- An opt-in cache preserves unchanged ThreadMessage objects across calls, avoiding rebuilds for nested streamed transcripts. (0.15.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.20)
- Voice transcript messages are marked with metadata.modality. (0.15.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.20)
- Cloud files now provide a presigned download URL generator. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Custom scores can now be created through cloud.scores.create. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- CloudAPIError now exposes an error code, including plan_limit_reached for a 402 response. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- CloudAPIError now exposes structured error details. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- A createRunReport builder assembles expanded Assistant Cloud run report bodies for the runtime and cloud SDK. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Engagement events are batched without message content, and telemetry.events: false opts out. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Upload responses now include the object key. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- useCloudChat now exposes message feedback alongside the assistant-ui FeedbackAdapter. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Trace metadata can be applied so browser reports and server spans merge into one run. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Renderer options can now be resolved per part, including host context, display-related fallbacks, sandbox, host information, and handlers. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Sandboxed frames that never finish loading are reported through onError with re-exported error types. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Sandboxed frames that never finish loading are reported through onError with re-exported error types. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Approval requests can describe their prompt, display mode, and freeform-answer support so renderers can distinguish questions from permission gates. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Tool approval responses can include a text answer, resolving the request as answered rather than approved. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Adds a provider for publishing frontend tools to a WebMCP-capable browser. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- createSuggestionAdapter and its option types are exported from the distribution packages. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- Adds a remote thread-list store entry that lets AssistantClient hosts run remote thread lists using an adapter and thread factory. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Adds unstable_useAdapters so RemoteThreadList can load per-thread history without rendering unstable_Provider. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Adds a selectionChanged event carrying threadId and previousThreadId for thread-selection changes. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- ThreadSuggestion gains an optional label, allowing adapters to display a separate label while preserving the full prompt. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- ThreadSuggestion gains an optional title so adapters can display a short pill while sending the full prompt. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Moves useCloudThreadListRuntime into core/react and removes the unused React copy of the aui/v0 codec. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- ExternalThread can wire threads.reloadMainThread() through onRefetchThread, with refetchThread capability derived from the callback’s presence. (0.15.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.14)
- ExternalThread now supports feedback adapters. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- ExternalThread now supports speech synthesis adapters. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- AssistantRuntimeProvider accepts an optional config prop whose scopes are provided alongside the runtime scope. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- The ref prop exposes the resulting client. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Decoders and the state accumulator support opt-in strict: false mode to reconcile malformed stream input instead of throwing. (0.15.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.4)
- File message parts can opt in to source types so attachment adapters can send URL or ID file references. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Thread list rows can determine whether their own thread is running, including background runs. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Runtimes that keep background threads alive can report per-thread running state through a new optional runtime method. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- The open thread's remote state can be refetched in place. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)

### Performance

- Sparse suggestion lists are compacted before per-suggestion lookup. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)

### Behavior and default changes

- MCP App ui/initialize parameters, including declared display modes, are passed to onInitialized as McpAppInitializeParams. (0.15.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.27)
- Composer trigger popover primitives and related types receive stable names, while Unstable_ names remain deprecated aliases. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Tool execution and model output use successful Standard Schema output while preserving original arguments for validation errors and stored calls. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- thread.tasks is derived from tool calls carrying nested conversations, with a task scope. (0.15.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.20)
- Anonymous threads can move into an authenticated Assistant Cloud workspace after sign-in. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- The store now emits composer, message, and thread events consumed by engagement reporting. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- The default handler accepts MCP Apps `{ role, content }` parameters and appends text blocks in order, while preserving legacy result fields. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Rejected sendMessage results now include the MCP Apps `isError: true` field while retaining legacy `ok` and `reason` fields. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Assistant frame messaging now defaults to the current origin. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- Trigger popovers can override query matching. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- When configured with cloud, AISDKThreads uses RemoteThreadList and remounts each thread like useChatRuntime. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Selection-driven scrolling now engages for InMemoryThreadList changes, new threads, and resolved deep links. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- App-authored reasoning summaries are now preserved on message parts. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- Custom children are rendered and asChild is supported instead of always replacing content with an automatic label. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Message queues now use two lanes, placement awareness, and steer-by-default mid-run sends. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Accessor identity is stable across renders until a structural binding change, making accessor-keyed memoization invalidate precisely. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)
- Scope accessors expose source, query, and name selection metadata as properties, reserving those names for scope methods. (0.15.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.0)

### Fixes and other changes

- Selections made before an active thread change are ignored so files do not enter the replacement conversation. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Runs no longer move focus into the composer when focus starts outside the thread, while preserving the existing composer selection. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Frame tools and pending calls are cleared when the iframe document changes or reloads. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Pending attachment selections are preserved when unrelated assistant scopes change. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Sparse MCP Apps message content is handled without scanning array holes. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- Disposes the host when its iframe is removed, rejects pending calls immediately, removes tools from model context, and serves a newly mounted iframe. (0.15.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.29)
- On React 18, inert composers now render the inert attribute so the cancel focus loop skips them as on React 19. (0.15.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.28)
- Typing, attachments, sends, and message editing are blocked while a thread is disabled. (0.15.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.27)
- MCP Apps are rendered through ToolUIDisplay across Parts, grouped, native, and ink rendering modes. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Grouped message parts are rendered through the core part renderer, keeping rendering behavior aligned with core. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Layout effects no longer cause React 18 server-render warnings while client layout timing remains unchanged. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- The scroll-to-bottom control now appears after a wheel interrupts smooth scrolling. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- The selection toolbar now appears after a window blur and when a selection ends at offset zero at the start of the next message. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Cancelling a message edit with Escape or keyboard or assistive-technology activation restores focus to the thread composer. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- The thread viewport follows content that grows without DOM changes and updates isAtBottom so the scroll-to-bottom button can appear. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- The viewport stops following the thread bottom when a user expands a disclosure inside a message, keeping the opened card in view. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- User scrolls coalesced with programmatic bottom scrolling are now recognized correctly. (0.15.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.26)
- Streaming text, tool durations, and stall detection no longer read wall-clock time during render, allowing cacheComponents prerendering. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Cancelled and pre-load failed sandbox frame renders are cleaned up correctly. (0.15.25) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.25)
- Enter or Escape ending an IME composition is ignored, preventing Safari conversion commits from sending messages and cancellations from cancelling runs or stopping read-aloud. (0.15.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.24)
- Message parts are keyed by id when same-type parts do not share it, preventing replaced or reordered parts from retaining another part's component state. (0.15.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.24)
- Scopes Escape-triggered speech cancellation to the targeted thread. (0.15.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.23)
- Honors user={false}, assistant={false}, and system={false} by migrating them to matching AuiIf inequalities. (0.15.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.23)
- Modified arrow keys remain available to application shortcuts while ordinary thread-list focus navigation is preserved. (0.15.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.23)
- Publishes committed WebMCP tool implementations before layout effects. (0.15.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.23)
- Component, tool, and data-part registries only resolve own keys, preventing inherited Object.prototype names from rendering. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Disabled attachment dropzones no longer navigate to dropped files or retain drag state. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- The download anchor is attached to the document so Firefox starts Markdown downloads. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Feedback submission state is now exposed to assistive technology. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Native MessageContent and grouped parts now honor registered data-part fallbacks. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Without cloud, this environment variable selects Assistant Cloud for useAssistantTransportRuntime, matching useLocalRuntime. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- The transport request body is now typed, and threadId is an optional string rather than string | null. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Read-only threads report themselves disabled, disable their composer, and ignore composer input instead of throwing. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Typed turns in voice sessions retain their own modality and are no longer persisted as spoken messages. (0.15.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.22)
- Bottom following now resumes when auto-scroll is enabled at runtime. (0.15.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.21)
- Pending animation frames are canceled during teardown and between selection events. (0.15.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.21)
- Pending frame tool calls are settled when cancellation fails. (0.15.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.20)
- Scroll listeners continue receiving notifications after one listener fails. (0.15.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.20)
- MCP App bridge messages stop after disposal. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Flat mention items are ignored when categories is an empty list. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Message part text now renders inside the supplied render element. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Explicit render elements now control message part text rendering. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Stall detection resets when content changes without changing its length. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Every part renderer option is forwarded through MessagePrimitive.Parts, preserving data renderers through ChainOfThought. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Controlled and uncontrolled modal owners are notified when a run opens a closed modal. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Parent IDs are no longer conflated with ungrouped message parts. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Queued live completion requests no longer start after the component unmounts. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Quote selections crossing excluded content are rejected. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Sandbox teardown now finishes even when bridge cleanup reports errors. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Requested scroll behavior is preserved across nested viewport providers. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Tool allowlist changes now apply to mounted MCP app frames. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Root scrollers now measure viewport scrollbar width correctly to prevent horizontal page shifting during collapsible animations. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- WebMCP tool cancellation works below the AbortSignal.any browser floor and with non-native caller signals. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- WebMCP tools are cancelled while asynchronous validation is pending. (0.15.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.19)
- Newly mounted MCP Apps are loaded through the committed host. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Model-context mentions remain current during updates. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Explicit tool categories are honored without requiring custom categories. (0.15.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.18)
- Committed MCP App host options remain active during interrupted renders. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- MCP App renderer handlers are exposed for integrations that need access to them. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- MCP App server routing remains scoped to committed renders. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- Sandbox bridge options remain scoped to committed renders. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- Slash commands remain scoped to committed renders, and search now matches the displayed label or /id fallback. (0.15.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.17)
- DevTools updates continue flowing when a subscriber throws. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Rejected asynchronous Markdown exports are handled. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Render failures after teardown are contained. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Unrevealed smooth text is drained when a message completes before any frame. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- ThreadIf now uses the loading-aware thread.isEmpty field instead of checking messages.length. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- The trigger popover cursor is resynchronized after selection. (0.15.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.16)
- Assistant transport lifecycle callback failures are isolated so one failing callback does not disrupt transport handling. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Transport response callbacks are awaited, and unfinished responses are canceled when callbacks fail. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Data message parts are now persisted in aui/v0 cloud history. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Deleting the last thread creates a fresh thread, notifies the new onDelete callback, and applies deletes safely in batches. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Live completion results refresh after their data source changes, including synchronous live completion failures. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- MCP App error replies remain reliable when error callbacks or notification callbacks throw. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Validates MCP App resource responses, improving reliability for integrations returning invalid resources. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Sandbox frames are disposed when bridge setup fails, preventing failed integrations from retaining frame resources. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- Custom compositions must mount ThreadPrimitive.Root for Escape-to-stop-speaking to remain active when message action bars are hidden. (0.15.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.15)
- In-memory thread IDs are now generated uniquely. (0.15.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.14)
- A runtime rejecting onNew with MessageNotSentError restores the composer’s text, quote, and attachments when the send never reached the backend. (0.15.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.14)
- Replay response readers are released after completion, cancellation, and errors. (0.15.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.14)
- Suggestions scope is derived from the thread, allowing runtime-provided suggestions to render through ThreadPrimitive.Suggestions. (0.15.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.14)
- Edits carrying sourceId are routed to onEdit instead of the queue adapter. (0.15.10) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.10)
- Dropped assistant transport resume requests are now cleared. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- Failed live completion searches can now be retried. (0.15.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.9)
- Blob URL revocation is deferred so the download fetch can start before revocation. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Hydrated assistant transport resumes now use their retained initial state. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Transport runs settle even when finish callbacks fail. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Extension-less filenames no longer render a bare period; the attachment type is used instead. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Escape during IME composition is ignored, preventing composition dismissal from cancelling the composer. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- User onMouseDown handlers run before preventDefault through composed event handling. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Action button primitives no longer force type="button"; callers can override the default. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- useAui({}) now mounts a rooted host so its scope set can grow across renders. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Object.keys and spread enumeration now includes scopes inherited from parent clients. (0.15.5) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.5)
- Assistant transport now skips add-message commands containing no supported parts. (0.15.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.4)
- Assistant-transport resume always decodes leniently, including when stream input is malformed. (0.15.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.4)
- Renaming a thread now persists the new title instead of dropping it. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Tool results such as false, 0, empty string, or null remain distinguishable from unfinished calls across the cloud round trip. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- Using send no longer overwrites the composer draft during a run, and is disabled mid-run when queue support is unavailable. (0.15.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.3)
- The encoder now persists only enumerated attachment content fields, keeping per-part status out of the stored shape. (0.15.2) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.15.2)

## @assistant-ui/react 0.14

### Breaking changes

- Invoking an unset optional callback now throws a capability error. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Public enums are represented as as-const objects to support erasableSyntaxOnly. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Copied message text now excludes reasoning parts and includes only type: "text" content. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- hitl moves from @assistant-ui/next to @assistant-ui/react and remains a build-time-stripped no-op marker. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.13)
- The groupBy callback now accepts only a part and must return an array of group keys or null; bare-string returns are no longer supported. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Removed; use AuiIf instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed registerModelConfigProvider; use registerModelContextProvider instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed reset; use thread.reset instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed switchToNewThread; use threads.switchToNewThread instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed switchToThread; use threads.switchToThread instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed threadList; use threads instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed config; use context instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed; use toToolsJSONSchema from assistant-stream instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the singular API; use getExternalStoreMessages instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the submittedFeedback field; use message.metadata.submittedFeedback instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed onSwitchToThread; use load instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed getModelConfig; use getModelContext instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the positional parentId overload; pass { parentId } instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed unstable_loadExternalState; use importExternalState instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed unstable_resumeRun; use resumeRun instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed; use toToolsJSONSchema from assistant-stream instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the unstable_ alias; use InMemoryThreadListAdapter instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the unstable_ alias; use RemoteThreadListAdapter instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the unstable_ alias; use useCloudThreadListAdapter instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the unstable_ alias; use useRemoteThreadListRuntime instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed; use useAui instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed; use useAuiEvent instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed; use useAuiState instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)
- Removed the alias; use useLocalRuntime instead. (0.14.0) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.0)

### Security

- Adds a primitive for rendering agent-described React UI from JSON using a consumer-provided component allowlist. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)

### Deprecations

- fromThreadMessageLike is now marked experimental and may change without notice. (0.14.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.23)
- generateId is now marked experimental and may change without notice. (0.14.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.23)
- hitlTool is deprecated in favor of humanTool, while compatibility aliases remain available. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- humanTool replaces hitlTool as the preferred tool name, with compatibility aliases retained. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)

### New APIs and options

- ExternalThread adds assistant-transport props for loading, state, extras, resume, tool results, external state, tool calls, and attachments, plus importExternalState. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- ToolInvocationTracker is exported from core internal. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- AssistantModalPrimitive Trigger, Anchor, and Content now support render props. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- ComposerPrimitive.Root now supports compact mode. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- Quote selection now supports exclusions using data-aui-quote-selectable="false". (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- MCP toolkit entries can now be disabled. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- MCP toolkit now supports prefixed tool names. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- MCP toolkit tools can now be disabled. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- The selection toolbar now supports opt-in quote regions. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- MCP Apps metadata and host calls now accept an optional serverId for multi-MCP routing. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- ThreadListItemMorePrimitive.Root adds sharedFocusGroup to extend keyboard focus handling into the menu, make it non-modal, and restore row focus on close. (0.14.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.26)
- Adds an isLoading prop so asynchronous completion sources can render a loading state. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.22)
- Exported from the public API so developers can materialize a ThreadMessageLike without reaching into internals. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.22)
- Exported from the public API so developers can generate IDs for hand-built messages without reaching into internals. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.22)
- Adds minCommitMs to throttle committed reveal updates while preserving per-frame commits by default. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.22)
- Bridges async completion sources into the synchronous Unstable_TriggerAdapter with debounced fetching and stale-request cancellation. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.22)
- A compiler-runtime subpath now mirrors react/compiler-runtime's c export for compiled packages. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- ExternalThread now provides an onRespondToToolApproval callback for handling tool approval responses. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- respondToApproval now accepts optionId, resolving core approval behavior from the selected option kind. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- External-store hosts can now provide tool-call timing through ThreadMessageLike. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Tool approval responses can record the selected option through optionId. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Tool approval requests can now include machine-readable options for allow-once, allow-always, reject-once, reject-always, and custom kinds. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Tool approvals can now record cancelled or expired terminal outcomes. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Tool calls now expose startedAt and optional completedAt epoch milliseconds, automatically populated during streaming. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- The new hook reports mid-run output stalls using a configurable threshold and message content fingerprint. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- The React shim exports useMemoCache with tap and React compiler-runtime behavior, including a React 18 polyfill. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- The new hook returns elapsed tool-call milliseconds and updates once per second while the call is running. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Adds an optional branches adapter for retrieving sibling branches and switching the visible branch. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- The smooth prop now accepts boolean or SmoothOptions for tunable text reveal behavior. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- The smooth prop now accepts boolean or SmoothOptions for tunable text reveal behavior. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Adds terminal-style ArrowUp and ArrowDown history navigation for thread composer input while preserving drafts and yielding to other input behaviors. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Exports useSmooth and SmoothOptions publicly, adding tunable backlog draining, reveal intervals, and per-frame character limits. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Messages sent during a run are queued and processed once the run settles. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- Queued messages can be rendered through ComposerPrimitive.Queue and QueueItemPrimitive APIs. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- External-store adapters can opt into message queuing with a queue adapter built using createMessageQueue. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- Adds externalTool for render-only generative toolkit entries. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- useLangGraphRuntime and useLocalRuntime can opt into message queuing with this option. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- Provides defineToolkit() from @assistant-ui/react for authoring permissive toolkits; its marker is stripped by the use generative compiler. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.13)
- Adds permissive ToolkitDeclaration and ToolkitDeclarationDefinition types for authoring toolkits whose backend tools may declare description, parameters, or execute. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.13)
- Tool-call parts in approval-requested state now expose approval metadata containing an id and optional automatic flag. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Adds a typed helper for mapping part types to group-key paths, with support for MCP app routing and inline reconstruction. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Tool components can acknowledge AI SDK v6 approval gates through a first-class prop without threading chatHelpers through application context. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Adds a message part containing a named component tree that supports streaming partial specs. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)
- Adds the components.generativeUI option for composing generative UI rendering with MessagePrimitive.Parts. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)
- Adds an unarchive option so callers can keep an archived thread archived when switching to it; the default remains true. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)
- Adds an unarchive option so callers can keep an archived thread archived when switching through the item runtime. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)
- Adds newline insertion on plain Enter for touch-primary devices while preserving existing submitMode behavior. (0.14.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.8)
- The default directive formatter is re-exported so downstream packages need not depend directly on @assistant-ui/core. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)
- The directive formatter is re-exported so downstream packages need not depend directly on @assistant-ui/core. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)
- The directive segment is re-exported so downstream packages need not depend directly on @assistant-ui/core. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)
- The trigger item is re-exported so downstream packages need not depend directly on @assistant-ui/core. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)

### Behavior and default changes

- Attachment-add rejections are no longer logged per file to the console when the structured event already surfaces them. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- ExternalThread edit composers now receive the attachment adapter. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Runs paused for tool approval are now persisted. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Clicking blank space in ComposerPrimitive.Root now focuses the composer input. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Thread list items support Up/Down navigation and Right navigation to an item's More button, with RTL mirroring; every item remains a Tab stop. (0.14.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.26)
- The kit approval bar now renders supplied options and can show an opt-in confirmation step describing persistent grants. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- The ToolFallback trigger now renders tool-call duration when timing information is present. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- defineToolkit and hitl markers move from @assistant-ui/next to @assistant-ui/react and are shipped across distributions as build-time no-op markers. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.13)
- Inline groupBy functions are now safe to use because memoization uses a helper fingerprint or rebuilds the tree cheaply per render. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)

### Tooling

- aui-build now runs React Compiler over packages that depend on tap, allowing compiled hooks and components to work in tap resource renders. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)

### Fixes and other changes

- onError now reads live in-transit commands at error time instead of a stale render snapshot. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- parentId is consumed once per run, preventing unrelated later runs from resending it. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Follow-up runs with empty command queues now no-op instead of throwing an error. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- In-transit commands are marked delivered when a run completes successfully without state chunks. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Commands queued during resume runs are flushed by a follow-up run instead of remaining starved. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- In-flight runs are aborted on unmount to prevent fetch leaks. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- The adapter accept string is validated on every addAttachment entry point. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- clearAttachments and reset now call adapter.remove for pending attachments. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Queue-adapter sends now stamp the thread head as parentId. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Failed sends are merged back into the draft with text, attachments, and quote preserved. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Duplicate message ids are deduplicated with a warning; the last occurrence wins instead of throwing. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Rejected file picker attachment additions are now handled. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Thread-list position is preserved when an on-demand fetch settles after a concurrent list call. (0.14.29) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.29)
- Controlled assistant-visible inputs remain synchronized after edits. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Attachments work without requiring a global File constructor. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Prevents instant auto-scroll from interrupting active top-anchored runs. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Transient part-type mismatches no longer throw during thread switches and unmount the app. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Part selectors should not throw; transient part-type mismatches are handled stably during React Ink rendering. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- The top-anchor reserve is preserved between turns. (0.14.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.28)
- Cloud history now preserves user attachments. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- MCP App host request errors now include error context. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- providerMetadata now survives conversion on text, reasoning, and tool-call message parts. (0.14.27) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.27)
- Opening and closing a menu preserves focus on the thread row so the focus-visible highlight remains continuous. (0.14.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.26)
- Compiled context store hooks no longer skip subscriptions, preventing missed updates for developers using them. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.21)
- Peer and dependency ranges were updated for @assistant-ui/tap 0.9, affecting compatible package configurations. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.20)
- Typecheck regressions were resolved, preventing related type-checking failures for developers. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.20)
- useSubscribable now builds on useSyncExternalStore so store reads remain visible to the React Compiler. (0.14.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.19)
- Empty running messages now emit the streaming indicator so the assistant slot shows loading feedback immediately after sending. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Scrollbar gutter compensation prevents collapsible animations from shifting centered content on classic scrollbars. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Preserves the original part type for reasoning parts instead of always returning type: "text". (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- Pointer interaction now clears pending bottom-scroll intent, preventing collapsible interactions from moving the thread to the bottom. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.18)
- MCP app bridge messages now support the 2026-01-26 dialect so spec widgets initialize and receive tool results. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- defineToolkit now works with plain runtime toolkits. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- ExternalThreadQueueAdapter now lives in @assistant-ui/core while remaining re-exported from @assistant-ui/react. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.15)
- Removes a transient requires-action flicker when tool calls reach the approval-responded state. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Distinguishes interrupt and pending tool calls using explicit interrupt or approval fields instead of an undefined result. (0.14.9) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.9)
- Resyncs displayed text during render when the part changes or streaming continuity breaks, preventing one frame of stale text after a thread switch. (0.14.7) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.7)
- Copy operations no longer throw when navigator.clipboard is unavailable or permission is denied. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)
- External store synchronization removes message ids that disappeared, preventing phantom assistant siblings. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)
- Thread initialization timing was fixed so scrollToBottomOnInitialize works reliably. (0.14.6) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.14.6)

## @assistant-ui/react 0.12

### Breaking changes

- Adds hierarchical adjacent grouping of message parts through a new primitive. (0.12.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.28)
- The CSS class aui-mention-chip is renamed to aui-directive-chip. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Mention data attributes are renamed from data-mention-* to data-directive-*. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The react-lexical mentionChip prop is renamed to directiveChip. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- react-lexical MentionChipProvider is renamed to DirectiveChipProvider. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- react-lexical mention node APIs are renamed to directive node APIs. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- react-lexical MentionPlugin is renamed to DirectivePlugin. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Replaces action onSelect handlers with the Action primitive and onExecute prop. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Replaces the insertDirective onSelect form with the Directive primitive and formatter prop. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The renamed mention adapter accepts a categories option. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The renamed mention adapter accepts includeModelContextTools. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The renamed mention adapter accepts an items option. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The slash command adapter now returns adapter and action, with execute retained in the hook closure. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- The tool-specific mention adapter hook is renamed to unstable_useMentionAdapter. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Adds a generic trigger-popover resource supporting multiple trigger characters. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Removes the aui-source export condition from package.json exports. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Removes makeInteractable and its related types. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Renames useInteractable to useAssistantInteractable for registration, with the hook returning an id. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Renames UseInteractableConfig to AssistantInteractableProps. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)

### Deprecations

- The legacy ToolGroup prop on Parts is deprecated but continues working for backwards compatibility. (0.12.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.28)
- The legacy adjacent-grouping component is deprecated but continues working for backwards compatibility. (0.12.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.28)
- The legacy top-level request-body spread remains supported for backward compatibility but will be removed in a future version. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)

### New APIs and options

- Accepts a user-supplied groupBy function to coalesce adjacent parts by key-path prefixes. (0.12.28) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.28)
- Exposes highlightIndex(index) on the TriggerPopover scope for programmatic highlighting. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Adds reload() to ThreadListRuntime and aui.threads() to refresh threads after asynchronous authentication completes. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- composer.send() accepts a startRun flag through SendOptions. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Introduces a plugin protocol that decouples ComposerInput from mention-specific code. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds slash-command primitives for slash command support. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds trigger-popover primitives for building generic trigger interactions. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds an EditComposerRuntimeCore interface extending ComposerRuntimeCore. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- EditComposerState exposes parentId for edit lineage. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- EditComposerState exposes sourceId for edit lineage. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds the slash command adapter type. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds the slash command item type. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds a generic trigger adapter type supporting multiple trigger characters. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds a generic trigger category type for the trigger popover architecture. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds a generic trigger item type for the trigger popover architecture. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- Adds a hook for building slash command adapters. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- ThreadListRuntime now exposes getLoadThreadsPromise() as a public API. (0.12.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.23)
- useRemoteThreadListRuntime now accepts an initialThreadId option. (0.12.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.23)
- Adds per-id error tracking for interactable persistence. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds interactable state export for persistence. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds immediate synchronization for interactable persistence. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds interactable state import for persistence. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds per-id pending-state tracking for interactable persistence. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds a realtime voice adapter with VoiceOrb UI and mode and volume support. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- All primitives now support render props for compatibility with the shadcn Base component library. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds a debounced persistence adapter for interactable state synchronization. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds callback-based context providers that inject computed text into the system prompt using current application state. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds a hook for reading and writing interactable state. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds a hook that derives per-property streaming completion status from tool-call arguments. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Adds a scope resource that generates update tools and injects a system prompt. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Adds a factory for registering AI-controllable UI interactables. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Adds selection support that marks an interactable as focused and surfaces it in the system prompt. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Adds a hook for registering AI-controllable UI interactables. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Adds a hotkey that sends with steer enabled and interrupts the current run. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a steer flag to send messages while interrupting the current run. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds queueItem() for accessing queue items through composer methods. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a composer primitive for rendering the queue list. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds queue state to the composer. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a queue adapter for runtimes that support message queuing. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds clear with edit, reload, and cancel-run reasons for queue management. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds cursor-aware triggers, keyboard navigation, search, and Lexical rich editor support for mentions. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a primitive for rendering removable queue items. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a primitive for rendering steer queue items. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds a primitive for rendering text queue items. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds queue capability detection to runtime capabilities. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds the queueItem scope for queue item rendering. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Adds the SingleThreadList resource for developers to use. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Primitives now support a children API with part.toolUI, part.dataRendererUI, and MessagePrimitive.Quote. (0.12.19) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.19)

### Behavior and default changes

- Dropped attachments are processed in parallel so multiple files appear together instead of one by one. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- callSettings and config are now nested objects in the request body; the old top-level spread remains temporarily for backward compatibility. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Interactable persistence now automatically flushes when a component unregisters. (0.12.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.22)
- Interactables with the same name and different IDs receive separate update tools. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Auto-generated tools use partial schemas so AI sends only changed fields. (0.12.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.21)
- Routes thread.append through queue.enqueue when a queue adapter is present. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)

### Fixes and other changes

- TriggerPopover now synchronizes mouse hover with keyboard highlighting and accessibility state. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- Dropdown menu primitives now support render props. (0.12.26) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.26)
- MessagePrimitive.Root now forwards viewport slack props. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- The text-unchanged guard is bypassed when startRun is explicitly set. (0.12.24) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.24)
- EMPTY_THREAD_CORE.isLoading is now true to prevent a Welcome page flash during thread switching. (0.12.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.23)
- Remains enabled during runs when queue support is available. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Cancel, edit, and reload operations now clear the queue with the appropriate reason. (0.12.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.20)
- Prevents double-submit when ComposerPrimitive.Send is a submit button. (0.12.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.16)
- ActionBarMorePrimitive no longer disappears when ActionBarPrimitive.Root uses autohide="not-last" on non-last messages. (0.12.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.15)
- External message conversion no longer crashes when orphaned tool results lack a matching tool call. (0.12.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.15)
- Consecutive assistant snapshots no longer produce duplicate toolCallId parts during external message conversion. (0.12.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.15)
- Tool invocation argument stream rewrites recover safely and avoid premature closure for non-executable client tools. (0.12.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.12.15)

## @assistant-ui/react 0.11

### Breaking changes

- ResourceElementConstructor was renamed to Resource. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- ResourceElement.type now uses Resource instead of ResourceFn. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- toolUIs was renamed to tools. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- The ToolUI API was removed. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- Introduces the Toolkit API for developers using the technology. (0.11.36) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.36)

### Deprecations

- All old context API hooks are now deprecated, so developers should avoid using them for new code. (0.11.36) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.36)

### New APIs and options

- AI SDK v5 data parts are integrated into message content. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- ThreadHistoryAdapter can store runConfig. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- AssistantCloudThreads gains get for retrieving individual threads. (0.11.38) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.38)
- RemoteThreadListAdapter gains fetch for retrieving individual threads. (0.11.38) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.38)
- Adds a scroll lock hook for the reasoning component. (0.11.37) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.37)
- Introduces the AssistantTransport wire format for transporting assistant interactions. (0.11.35) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.35)
- Introduces useAssistantTransportState for managing assistant transport state. (0.11.35) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.35)
- ThreadMessageLike support was added. (0.11.33) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.33)
- Adds submittedFeedback to ThreadAssistantMessage. (0.11.30) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.30)

### Behavior and default changes

- Commands can now be enqueued from onError and onCancel handlers. (0.11.41) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.41)
- Queued commands are canceled when an error occurs. (0.11.41) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.41)
- switchToThread now fetches and loads threads missing from the current list. (0.11.38) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.38)
- The technology now displays AI SDK errors, making these errors visible to developers or users. (0.11.36) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.36)
- submittedFeedback moved to metadata. (0.11.33) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.33)

### Fixes and other changes

- Fixed LocalThreadRuntime deleting branches during message reloads. (0.11.39) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.39)
- The scroll-to-bottom button is now separate from autoScroll behavior. (0.11.38) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.38)
- The scroll-position check used by autoscroll was corrected. (0.11.38) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.38)
- Added support for submittedFeedback in the external message converter. (0.11.34) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.34)
- Fixes enqueueing a chunk into a readable stream that is closed or has been requested to be closed. (0.11.32) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react%400.11.32)
