NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2684 most downloaded on npm
AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.
Last release 3 days ago
01 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Some releases are documented
notes for 26 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
1568 releases · first in 2014
158a718: feat(ai): select and rank eligible deferred tools via 'search()' callback in tool search
4f3d236: fix: clear tool approvals when addToolOutput runs
addToolOutput runsOne column per quarter.
8c65988: feat(ai): add telemetry to speech generation and transcription, including provider usage propagation and experimental streaming lifecycle cal
05cdac6: fix(ai): keep idle UI message streams open with optional SSE heartbeats
f3575f8: Clarify that provider-executed tool execution errors bypass the UI stream's onError callback to preserve provider error data and harness runt
onError callback to preserve provider error data and harness runtime messages. Stream errors and invalid tool calls still use the callback. Runtime behavior is unchanged.. and .. IDs before fetching. Custom URLs returned by prepareReconnectToStreamRequest remain unchanged.b032d70: fix(ai): preserve tool metadata from tool output chunks
33e94ba: fix(ai): cancel response streams when clients disconnect
33e94ba: fix(ai): cancel response streams when clients disconnect
34d869e: fix(ai): prevent unhandled stream completion rejections in non-Node runtimes
def4df8: fix(ai): store static tool input errors in the current input field
525efc5: feat(provider): advertise image model file and mask input support
Use confirmed model IDs for capability declarations so unrecognized model names remain unknown. Include Together AI FLUX.2 Pro and Flex single-image editing, and allow asynchronous capability lookups and middleware overrides to resolve to unknown.
Advertise QuiverAI Arrow 2 and Arrow 2 Telos file-input support, and mark Together AI Gemini image inputs unsupported by the current single-image request mapping.
Updated dependencies [e3605f6]
Updated dependencies [525efc5]
### Patch Changes - Updated dependencies [e6a7996] - Updated dependencies [e19f0fc] - @ai-sdk/gateway@4.0.96
### Patch Changes - Updated dependencies [b67b1b7] - @ai-sdk/gateway@4.0.95
af9597b: Compile packages for ES2022 runtime target
b5679a7: fix(ai): filter tracing-channel context with telemetry allowlists
allowSystemInMessages permits all system messages, including instruction text.dcdb011: fix(ai): route completed streamed tool input callbacks to repaired tools
dcdb011: fix(ai): route completed streamed tool input callbacks to repaired tools
8f72832: fix(ai): preserve video models from legacy fallback providers
fe07867: Fix Google embedMany calls with more than 100 values by keeping per-value multimodal content aligned across automatic batches, including text-only entries. Validate content length before sending requests and validate each batch's provider options after middleware transforms them.
b74c0cb: fix(ai): resume tool approvals from earlier messages
a4b0940: fix(ai): execute manually approved tool inputs produced by schema transforms
Preserve approved inputs during revalidation and reject histories whose reconstructed schema output differs, including signed approvals with missing original input. Validate transformed UI tool inputs against the reconstructed output before returning them as static tool parts.
2693319: Add Gemini 3.8 TTS support with structured speech metadata and per-turn speaker and style controls for prebuilt voices. Preserve native WAV responses without adding a second header, support explicit raw PCM, mu-law, and A-law output, and identify headerless audio formats correctly. Add the Gemini 3.8 speech model IDs to Google and Gateway types.
Share transcript and custom-voice inspection through the Google provider internal export, and reject empty speech transcripts before sending a request. Default newer and custom model IDs to structured speech while preserving the legacy format for Gemini 2.5 and 3.1.
c93ee90: fix(ai): preserve message history for direct transport stream callbacks
771e74b: chore: enable dead code lint rules
Updated dependencies [fe07867]
Updated dependencies [a4b0940]
Updated dependencies [2693319]
Updated dependencies [b73f2f9]
Updated dependencies [771e74b]
9a98fd9: fix(ai): prune reasoning file parts when removing reasoning
31d24ce: feat: add telemetry support to experimental_evaluate
experimental_evaluate### Patch Changes - Updated dependencies [49295bb] - @ai-sdk/gateway@4.0.89
0343bb1: fix(ai): keep replacement completion requests loading and cancellable when an earlier request settles
toolsContext to host-executed tools in alignment with ToolLoopAgent3f6852a: fix(ai): prevent direct execution of tools governed by tool callers
streamText from executing tool calls that violate tool choice79681c4: fix(ai): preserve provider file and skill upload APIs in wrapProvider
4775577: fix(ai): preserve provider metadata when simulating text streams
6982e9d: Resolve evaluation model IDs through AI Gateway when no default provider is configured, including string aliases in custom providers.
a7dd893: Add experimental evaluation model aliases and registry resolution. customProvider accepts evaluationModels, registries expose evaluationModel
customProvider accepts evaluationModels, registries expose evaluationModel, and experimental_evaluate accepts string IDs when an evaluation-capable default provider is explicitly configured. Evaluation never implicitly falls back to Gateway. Model-resolution errors now identify evaluationModel while stable provider contracts remain unchanged.onError25a0447: feat(ai): deprecate rawInput in output-error UI message parts
experimental_evaluate and the isolated experimental v4 evaluation model specification for Choice, Score, and Boolean questions against shared state. Includes typed answers, optional Choice/Score distributions, required Boolean probabilities, validation, retries, cancellation, and Experimental_EvaluationUnsupportedQuestionTypeError for unsupported questions.5c0054d: Add optional browser-direct WebRTC for experimental client-delegated Live conversations alongside the existing WebSocket path. Exchange SDP t
5c0054d: Add optional browser-direct WebRTC for experimental client-delegated Live conversations alongside the existing WebSocket path. Exchange SDP through an application endpoint with api.session, configure server-owned data-channel permissions, and preserve committed React session ownership. Capture follows the selected sender track, borrowed tracks remain caller-owned, and disconnect recovery and finalization stay bounded. Applications continue to handle client delegation and submit context; Live session updates and Responses delegation remain unsupported.
Serialize microphone sender changes and close the peer if detachment fails, without stopping borrowed tracks. Validate nonempty SDP setup answers with a bounded response body, and document the same-origin broker authentication contract.
39535af: Add experimental OpenAI Live provider support through the unified openai.experimental_realtime factory for server WebSocket sessions with client delegation. Applications own their agents and tools, receive continuous audio/transcript events and delegation metadata, and return context through validated channels. Support immutable startup options, microphone mute controls, graceful session close, and cumulative voice usage. Responses delegation and Live session updates reject before sending.
Route known Live model IDs to Live, allow an OpenAI-specific api override for early-access models, and preserve legacy Realtime defaults for unknown IDs. Token minting follows the same selection rules and rejects Live before requesting unsupported credentials. Extend the realtime v4 specification with optional server WebSocket configuration, per-connection raw-event parsers, and model-wide startup/finalization capabilities. This provider layer supplies connection settings and protocol mapping for server adapters; browser lifecycle and UI integration belong to the core runtime and framework hooks.
Preserve Realtime client event IDs for session updates and audio appends, and correlate server errors with the originating client event.
8b92ba9: fix(ai): settle automatically denied tool calls in UI streams
4b306c2: Report abnormal realtime WebSocket close codes and reasons through the session error path.
4b306c2: Add the client-delegation-first realtime WebSocket runtime with session lifecycle, exact final duration, bounded event queues and command acknowledgement tracking, transcripts, context append, and reversible capture. Continuous sessions support PCM16 audio-chunk playback over an application relay with a recoverable live-edge buffer policy. Legacy turn-based WebSockets retain queued playback and frontend tool handling.
Remove the deferred managed Responses coordinator, autoContinueTools option, backend usage state, and Live tool-result aliases. Continuous text and delegation handling belong to the application; sendTextMessage and addToolOutput reject continuous sessions. Server-confirmed provider delegation and turn-based audio-delta on the continuous profile fail explicitly. maxPlaybackBufferSeconds is supported only for continuous PCM sessions.
Fence callbacks, startup publications, tool results, and teardown by connection attempt. Validate token setup before opening a client-secret socket, require explicit relay transport mode, and include WebSocket URL, protocol values, and runtime timeouts/buffer settings in React session configuration keys.
Retain immediate local capture for explicit legacy preconnect streams, including owned-track cleanup and capture continuity through asynchronous setup. Signal transport closing before draining accepted terminal events, share reentrant close settlement, and cancel stale readiness and deadlines. Enforce 128 KiB frame and combined buffered-send budgets only for Live continuous sessions, using actual encoded wire bytes; oversized manual operations remain recoverable while startup and automatic audio failures close the session. Legacy startup, text, tool output, and audio retain their pre-Live behavior without these byte caps. Live pending-audio overflow drains accepted terminal usage within the existing one-second drain window. Validate final provider-transformed WebSocket URL syntax without removing native authentication query parameters.
Updated dependencies [5c0054d]
Updated dependencies [39535af]
6aa7c54: fix(ai): serialize tool output JSON values
6431635: feat(ai): expose typed AI SDK errors for UI transport and completion failures
615ac89: feat(ai): use InvalidArgumentError for utility input validation
5ec21a6: fix: reject unsupported batch request types
validateUIMessagesef3bac4: Observe video webhook receiver rejections before generation starts to prevent unhandled rejections during or after a failed start. Preserve s
912fb01: feat: add batch cancel and list APIs
atob without a receiver for Cloudflare Workers compatibility27f6d7a: fix(ai): reject embedding model responses that contain no embeddings
a4ba394: feat: support per-request models in batch
df6c009: fix(ai): use new message ID when replacing a message in sendMessage
sendMessageonLanguageModelCallStart and onLanguageModelCallEnd in ToolLoopAgentSettings typea51cc94: fix(ai): preserve provider metadata from empty smooth stream deltas
smoothStream delays while the document is hidden802af1e: Add configurable recovery for provider errors received after streamText response streaming begins. Explicitly configuring streamRetries enabl
streamText response streaming begins. Explicitly configuring streamRetries enables isolated retry attempts, including one bounded callback-directed recovery through StreamTextOnErrorRetryCallback with streamRetries: 0; recovered results and metadata reflect only the successful attempt, while the existing StreamTextOnErrorCallback contract and logging-only observer behavior remain compatible.### Patch Changes - Updated dependencies [4d25a08] - Updated dependencies [6bcc0f8] - @ai-sdk/gateway@4.0.72 - @ai-sdk/provider-utils@5.0.36
5190b67: feat(provider): extend the FilesV4 interface with optional getFileMetadata, downloadFile (streaming), and deleteFile operations, plus abortSi
getFileMetadata, downloadFile (streaming), and deleteFile operations, plus abortSignal/headers call options and a { type: 'stream' } upload data variant; upload results now expose byteSize, createdAt, and expiresAt (also surfaced by the core uploadFile() helper, which now forwards abortSignal/headers); add postMultipartStreamToApi (streaming multipart uploads with deterministic part ordering and failure-path stream teardown), deleteFromApi, and createBinaryStreamResponseHandler to provider-utils8b6b756: fix(ai): prevent generateText from accepting responses that violate required tool choices
850d863: fix(ai): preserve approval descriptors in UI message streams
11109ae: feat(ai): support signed tool approvals in WorkflowAgent
55a9981: Ensure canonical hashes preserve undefined array element positions.
6669d69: Expose parsed structured output in streamText end callbacks.
streamText end callbacks.8dd86a9: Validate persisted typed tool calls against current input and output schemas. Schema-incompatible empty or error inputs and terminal history
output-denied state.3e125ba: Allow manual tool approval statuses to include a reason and preserve it across core, model, and UI approval requests. OPA requires-approval d
requires-approval decisions now
surface their reason to human approvers. UI request chunks serialize the
optional reason, while UI messages retain it as approval.requestReason
separately from an approver's response reason.b251584: Preserve active text and reasoning parts when another merged UI message stream finishes a step, and align workflow stream normalization with
experimental_startTextBatch accepts a webhookUrl, and the gateway provider registers it through the batch callbackUrl contract and exports typed async-job metadata. Direct Anthropic and OpenAI batch providers return an unsupported warning when the option is provided.96970bb: Continue approved generateText, streamText, and WorkflowAgent turns with a model-visible tool error when revalidated tool input is invalid.
generateText, streamText, and WorkflowAgent turns with a model-visible tool error when revalidated tool input is invalid.### Patch Changes - Updated dependencies [b74971f] - Updated dependencies [a371615] - @ai-sdk/provider-utils@5.0.29 - @ai-sdk/gateway@4.0.62
c6d57f3: fix(ai): prevent duplicate text and reasoning part ids
### Patch Changes - Updated dependencies [5941bd6] - Updated dependencies [9a4337d] - @ai-sdk/gateway@4.0.60
### Patch Changes - Updated dependencies [f607a12] - @ai-sdk/gateway@4.0.59
9a37469: Prevent exceptions in streaming onChunk and onError callbacks from terminating the stream or masking provider errors.
onChunk and onError callbacks from terminating the stream or masking provider errors.9566914: Stop multi-step text generation for client tool approval even when a provider-executed tool has a deferred result.
streamObject result promises and report failed completion when the provider stream errorsignoreIncompleteToolCalls is enabled.### Patch Changes - Updated dependencies [1f7a464] - @ai-sdk/gateway@4.0.55
### Patch Changes - Updated dependencies [257632b] - @ai-sdk/gateway@4.0.54
### Patch Changes - Updated dependencies [a0b1ffc] - @ai-sdk/gateway@4.0.53
0782259: Keep chat status submitted until response content begins streaming.
Output type.dc8caae: Avoid repeatedly cloning accumulated text in readUIMessageStream while preserving independent snapshots for mutable nested values.
readUIMessageStream while
preserving independent snapshots for mutable nested values.onFinish callback to the initiating request.### Patch Changes - Updated dependencies [ea75787] - Updated dependencies [b20de9e] - @ai-sdk/gateway@4.0.51
d0a5807: Preserve reasoning block IDs from UI message streams on reasoning UI parts.
Provider.e0bcf52: feat(ui): add typed custom bodies to Completion APIs
326054b: Prevent resumeStream from copying the previous assistant message into the resumed response.
resumeStream from copying the previous assistant message into the resumed response.Your coding agent can read these notes before it upgrades. Set up the MCP server →