AI SDK 7.0.0 removes exports that earlier renames left behind as deprecated aliases, and deletes a long tail of internal types alongside them. Four experimental-prefixed functions, two names v6 already deprecated, and the types for streamText’s finish callbacks are gone or renamed. Anyone importing the old names from ai needs a typecheck to find every site before upgrading. Many more break code whose imports are already correct: four experimental_ option keys on the two generation calls, the two token counts v7 moved under detail objects, the property the response helpers take their stream on, the options object handed to a tool’s execute, and a middleware written against the v3 provider types.
What changed
- Two experimental-prefixed exports are gone outright.
experimental_customProviderandexperimental_generateImageare no longer published;customProviderandgenerateImageare the names. - Two more keep working under the old name, for now.
experimental_transcribeandexperimental_generateSpeechare still exported in v7, but deprecated:transcribeandgenerateSpeechare what the documentation uses. - Two names AI SDK 6.0 deprecated are deleted in v7.
ToolCallOptionsis gone;ToolExecutionOptionsis the type a tool’sexecutefunction receives.isToolOrDynamicToolUIPartis gone;isToolUIPartmeans what it meant. - Two more are renamed with the old name kept.
stepCountIsisisStepCountnow, andCallSettingsisLanguageModelCallOptions, which also split request-level options into a separateRequestOptionstype. streamText’s finish callbacks were retyped and renamed together.StreamTextOnFinishCallback,StreamTextOnStepFinishCallbackandTelemetrySettingsare no longer exported;onFinishbecameonEndandonStepFinishbecameonStepEndin the same release.UIMessageStreamOptionsandDirectChatTransportOptionsgain the sameonEnd, and onUIMessageStreamOptionsthe deprecatedonFinishis now typedUIMessageStreamOnEndCallback.DirectChatTransportOptions.agentalso takes the new runtime context type parameter, asAgent<CALL_OPTIONS, TOOLS, RUNTIME_CONTEXT, OUTPUT>.- Two keys on the telemetry options object stop type checking.
metadataandtracerunderexperimental_telemetryare both gone in v7, which renamed that type fromTelemetrySettingstoTelemetryOptions. These fire at the call rather than at an import, ongenerateText,streamText,generateObject,streamObject,embed,embedManyandrerank. - The
experimental_prefix comes off four options on the generation calls.experimental_activeTools,experimental_outputandexperimental_contextare gone from bothgenerateTextandstreamText, andexperimental_prepareStepfromgenerateText, which is the only one of the two that ever declared it. Three of them simply lose the prefix.experimental_contextbecomesruntimeContext, and v7 types that value through the call rather than asunknown.experimental_outputis gone fromgenerateText’s result as well, whereoutputis the read. - The two token counts moved under detail objects.
usage.reasoningTokensisusage.outputTokenDetails.reasoningTokensnow, andusage.cachedInputTokensisusage.inputTokenDetails.cacheReadTokens. Both are matched on theusageandtotalUsageof agenerateTextorstreamTextresult rather than on the property name alone, so a provider’s own usage object beside them is not reported. Tokens written to the cache are a separate count at v7,cacheWriteTokens, which 6.0.282 did not report at all. createTextStreamResponseandpipeTextStreamToResponserenamedtextStreamtostream. The value is the sameReadableStream<string>, andstatusandresponsebeside it are unchanged.generateObjectandstreamObjectno longer take atimeout. v7 takesOmit<RequestOptions, 'timeout'>for those two and no other member of the options intersection declares the name, so the option is gone rather than moved.generateTextandstreamTextkeep it, which is why the two object calls are named one at a time.- Two telemetry values are no longer copied onto each step.
functionIdandmetadataare gone fromStepResult. v7’scallIdis not the same value: it identifies the generation call the step belongs to rather than carrying your grouping key. A step’sexperimental_contextisruntimeContextthere too, matching the option. streamText’s result names its partsstream. The result declaresstreamat 7.0.0 and marksfullStreamdeprecated in its favour, with the sameTextStreamParttype and the same order. Nothing is removed:fullStreamis still declared at 7.0.105.streamObject’s result keepsfullStreamwith no marker, so a loop over that one is not a finding.- A tool’s
executerequires acontextin its options. v7 takes its tool types from@ai-sdk/provider-utils5.0.0, whoseToolExecutionOptionsdeclarescontextas required; 6.0.282 took them from 4.0.51, which declared an optionalexperimental_contextand nocontext. The SDK supplies the options for its own calls, so this lands on tests and wrappers that callexecutethemselves and build the literal by hand. LanguageModelMiddlewareis declared against the v4 provider types. v7 aliases it toLanguageModelV4Middlewarewhere v6 aliasedLanguageModelV3Middleware. The seven members keep their names, buttransformParams,wrapGenerate,wrapStream,overrideProvider,overrideModelIdandoverrideSupportedUrlsnow receive and returnLanguageModelV4values. v7 keepsspecificationVersionoptional and typed as a string on purpose, so a middleware declaring'v3'still checks; what stops checking is code inside the middleware that names a v3 type or reads a call option or result field v4 no longer carries.EmbeddingModelMiddlewareandImageModelMiddlewaremove the same way: every hook now receives anEmbeddingModelV4orImageModelV4, andspecificationVersionis an optional string where v6 required'v3'.- Two things late 6.x releases added are not in 7.0.0. The 6.x line kept shipping after 7.0.0, and the entries compare 7.0.0 with 6.0.288. Coming from there,
reconnectToStreamonChatTransport,DefaultChatTransportandTextStreamChatTransportno longer receivesabortSignal; andProvider.rerankingModelis required again, so aProviderwithout one stops type checking.ai@7.0.56restores the first, and AI SDK 7.0.63 makesProvider.rerankingModeloptional again. - A long tail of internal type exports, gone or newly deprecated. Telemetry hooks (
TelemetryIntegration,bindTelemetryIntegration,registerTelemetryIntegration),prepareToolsAndToolChoicefromai/internal, theabortSignaloption ofconvertToLanguageModelPromptin the same module,OutputInterface, and the callback and event types theon*Eventnaming replaced are removed or marked deprecated. The table below names each one.
Before and after
The clearest deterministic patch is the experimental-prefix rename, on a file that calls four of them and re-exports one under another name:
import { experimental_customProvider, experimental_generateImage, experimental_generateSpeech, experimental_transcribe,} from 'ai';
export const registry = experimental_customProvider({ languageModels: {} });export const image = () => experimental_generateImage({ model: null as never, prompt: 'a cat' });export const speech = () => experimental_generateSpeech({ model: null as never, text: 'hello' });export const text = () => experimental_transcribe({ model: null as never, audio: new Uint8Array() });
export { experimental_transcribe as transcribeAudio };After npx emendant fix, every import and every reference is renamed, including inside the re-export:
import { customProvider, generateImage, generateSpeech, transcribe,} from 'ai';
export const registry = customProvider({ languageModels: {} });export const image = () => generateImage({ model: null as never, prompt: 'a cat' });export const speech = () => generateSpeech({ model: null as never, text: 'hello' });export const text = () => transcribe({ model: null as never, audio: new Uint8Array() });
export { transcribe as transcribeAudio };The other four deterministic patches are the same specifier rewrite: ToolCallOptions to ToolExecutionOptions, isToolOrDynamicToolUIPart to isToolUIPart, stepCountIs to isStepCount, and CallSettings to LanguageModelCallOptions.
Fourteen more rename a property rather than an import specifier. One of them rewrites fullStream to stream, and only where the receiver is what streamText returned, so the read on streamObject’s result beside it is left alone:
const result = streamText({ model, prompt: 'hi' });for await (const part of result.fullStream) console.log(part);const object = streamObject({ model, prompt: 'hi', schema: undefined as never });for await (const part of object.fullStream) console.log(part);After the patch the first loop reads result.stream and the second is unchanged. A pipeThrough or a tee over the same read is the same site and needs no other edit.
The largest group of property renames is the four experimental_ options, reported at the key in the options literal:
return generateText({ model, prompt: 'hi', experimental_activeTools: ['weather'], experimental_output: undefined, experimental_prepareStep: () => undefined, experimental_context: { tenant: 'acme' },});After the patches, three keys have lost the prefix and the fourth has a new name:
return generateText({ model, prompt: 'hi', activeTools: ['weather'], output: undefined, prepareStep: () => undefined, runtimeContext: { tenant: 'acme' },});The token counts move a path rather than a name, so usage.reasoningTokens becomes usage.outputTokenDetails.reasoningTokens and usage.cachedInputTokens becomes usage.inputTokenDetails.cacheReadTokens, on the usage and the totalUsage of both results. generateText’s result.experimental_output becomes result.output. The two response helpers take stream where they took textStream, and a shorthand property is rewritten as a pair: createTextStreamResponse({ status: 200, textStream }) becomes createTextStreamResponse({ status: 200, stream: textStream }).
Thirty-eight changes are assisted rather than deterministic, and two of them are worth showing. The first is the streamText callback types. Emendant reports the import of StreamTextOnFinishCallback, StreamTextOnStepFinishCallback or TelemetrySettings, but writing the replacement means typing the callback from the option it fills (onEnd or onStepEnd) rather than from a name that no longer exists, and that needs a named model provider.
The second is the tool options literal, which is reported at the literal rather than at an import, because the key that would be the site is the one that is missing:
await weather.execute({ city: 'Exeter' }, { toolCallId: 'a', messages: [] });The value to add is the tool’s context, an empty object where the tool declares no contextSchema and otherwise a value of that schema’s type. toolCallId and messages stay as they are. An options object passed by name, or a literal holding a spread, is not reported, since the key may be there at runtime.
The other thirty-six assisted changes are the removed and newly deprecated exports the table names, and the option keys on consumeStream, experimental_generateVideo and the two internal helpers. Use assisted fixes for these sites and check each replacement against the migration guide.
Migration guidance and its limits
Apply the twenty-two deterministic patches. Eight rename an import specifier and fourteen rename a property, which is an option key in a literal or a read on a result. The values either side are unchanged, so the call sites are correct once the name is, with one thing to check after: runtimeContext is typed through the call’s own runtime context parameter where experimental_context was unknown, so a context object that carried no type of its own may now need one.
The forty-seven assisted changes need a model provider named on the command line or in emendant.json. Without one they are reported with their guidance and nothing is sent anywhere. For callbacks, use the type of the option they fill. For tool calls, supply context that matches the tool’s contextSchema. Review the remaining replacements against the release guidance.
Read those patches before applying them. Each patch is limited to the affected file and checked, in a copy of your repository moved to 7.0.0 and put through whichever of your own typecheck and tests it finds there, and a patch that fails is withheld. A repository declaring neither gets its patches graded structurally checked (what each patch grade means), which says the edits applied and the workspace matched again, and that nothing compiled or ran the code. Removed names without a documented replacement, such as OutputInterface and the telemetry hooks, may need developer changes instead of an offered patch.
Seven findings are report only, and each for its own reason. The two telemetry keys are the first: neither has a destination inside the call. A custom Tracer now goes to the OpenTelemetry constructor from @ai-sdk/otel and is registered once with registerTelemetry, which the migration guide places at application startup rather than in the file the finding is in. metadata has no replacement key at all; per-call attributes reach telemetry through includeRuntimeContext and includeToolsContext, which name properties of a runtime context rather than carrying a literal map.
timeout on generateObject and streamObject is report only because there is no option to rename it to. Pass an abortSignal from a timer instead, which both releases accept.
StepResult’s functionId and metadata are report only for the same reason as the telemetry keys: v7 keeps no per-step copy of what you passed in. Read them from the telemetry settings you handed to the call, which still declares both.
LanguageModelMiddleware is report only for a third reason: the edit is inside your middleware’s own body, wherever it names a v3 type or reads a field the v4 call options and results dropped. The finding says a value is built against the type, not which members that value names, which is why its confidence is medium and no patch is offered.
This page needs emendant@0.3.0 or later. Older clients cannot read all the coverage for this release and skip it with a coverage warning. Update the CLI before scanning for this migration.
This release also renamed the system prompt option to instructions, and moved onRerankFinish and onEmbedFinish to onRerankEnd and onEmbedEnd. Neither is a name the table below covers, so nothing here detects them. A clean scan says a file uses none of the constructs below, nothing more.
One measured 6.x to 7.0 migration of a public repository shows the completed migration, the patch Emendant prepared, and the additional developer changes needed to pass the repository checks.
What Emendant detects, fixes and verifies
77 changes in ai 7.0.0. 22 automatic fixes, 48 fixes requiring a model provider you choose, 7 report only. Each patch states which checks passed. Understand patch evidence.
| Change | Severity | Detects | Fix | Verified by |
|---|---|---|---|---|
experimental_customProvider was removedai-npm-7.0.0-experimental-customprovider-removed | Breaking |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
experimental_generateImage was removedai-npm-7.0.0-experimental-generateimage-removed | Breaking |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
ToolCallOptions was removedai-npm-7.0.0-toolcalloptions-removed | Breaking deprecated in 6.0.0 |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
isToolOrDynamicToolUIPart was removedai-npm-7.0.0-istoolordynamictooluipart-removed | Breaking deprecated in 6.0.0 |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
experimental_transcribe became transcribeai-npm-7.0.0-experimental-transcribe-renamed | Deprecation |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
experimental_generateSpeech became generateSpeechai-npm-7.0.0-experimental-generatespeech-renamed | Deprecation |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
stepCountIs became isStepCountai-npm-7.0.0-stepcountis-renamed | Deprecation |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
CallSettings became LanguageModelCallOptionsai-npm-7.0.0-callsettings-renamed | Deprecation |
| Patch, written by the replace-import-specifier transform | Your typecheck and tests |
The streamText callback types were removedai-npm-7.0.0-streamtext-callback-types-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed Experimental_GenerateImageResultai-npm-7.0.0-experimental-generate-image-result-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed GenerateTextOnToolCallFinishCallbackai-npm-7.0.0-generate-text-on-tool-call-finish-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed GenerateTextOnToolCallStartCallbackai-npm-7.0.0-generate-text-on-tool-call-start-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed OutputInterfaceai-npm-7.0.0-output-interface-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextOnStartCallbackai-npm-7.0.0-stream-text-on-start-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextOnStepStartCallbackai-npm-7.0.0-stream-text-on-step-start-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextOnToolCallFinishCallbackai-npm-7.0.0-stream-text-on-tool-call-finish-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextOnToolCallStartCallbackai-npm-7.0.0-stream-text-on-tool-call-start-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed TelemetryIntegrationai-npm-7.0.0-telemetry-integration-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed ToolLoopAgentOnFinishCallbackai-npm-7.0.0-tool-loop-agent-on-finish-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed ToolLoopAgentOnStepFinishCallbackai-npm-7.0.0-tool-loop-agent-on-step-finish-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed bindTelemetryIntegrationai-npm-7.0.0-bind-telemetry-integration-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed registerTelemetryIntegrationai-npm-7.0.0-register-telemetry-integration-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated Experimental_SpeechResultai-npm-7.0.0-experimental-speech-result-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated Experimental_TranscriptionResultai-npm-7.0.0-experimental-transcription-result-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated GenerateTextOnFinishCallbackai-npm-7.0.0-generate-text-on-finish-callback-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated GenerateTextOnStepFinishCallbackai-npm-7.0.0-generate-text-on-step-finish-callback-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnFinishEventai-npm-7.0.0-on-finish-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnStartEventai-npm-7.0.0-on-start-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnStepFinishEventai-npm-7.0.0-on-step-finish-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnStepStartEventai-npm-7.0.0-on-step-start-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnToolCallFinishEventai-npm-7.0.0-on-tool-call-finish-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated OnToolCallStartEventai-npm-7.0.0-on-tool-call-start-event-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated UIMessageStreamOnFinishCallbackai-npm-7.0.0-uimessage-stream-on-finish-callback-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Deprecated UIMessageStreamOnStepFinishCallbackai-npm-7.0.0-uimessage-stream-on-step-finish-callback-deprecated | Deprecation |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed prepareToolsAndToolChoiceai-npm-7.0.0-internal-prepare-tools-and-tool-choice-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextEndEventai-npm-7.0.0-stream-text-end-event-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed StreamTextOnEndCallbackai-npm-7.0.0-stream-text-on-end-callback-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed ToolChoiceViolationErrorai-npm-7.0.0-tool-choice-violation-error-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed UIMessageStreamOutcomeai-npm-7.0.0-uimessage-stream-outcome-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed UIMessageStreamWriterWithOutcomeai-npm-7.0.0-uimessage-stream-writer-with-outcome-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed abortSignal from the first argument of consumeStream()ai-npm-7.0.0-consume-stream-argument-1-abort-signal-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed frameImages from the first argument of experimental_generateVideo()ai-npm-7.0.0-experimental-generate-video-argument-1-frame-images-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed inputReferences from the first argument of experimental_generateVideo()ai-npm-7.0.0-experimental-generate-video-argument-1-input-references-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed timeout from the first argument of prepareCallSettings()ai-npm-7.0.0-internal-prepare-call-settings-argument-1-timeout-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Removed additionalRetryableError from the first argument of prepareRetries()ai-npm-7.0.0-internal-prepare-retries-argument-1-additional-retryable-error-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
metadata is gone from the telemetry optionsai-npm-7.0.0-telemetry-metadata-removed | Breaking |
| Report only | Not applicable |
tracer is gone from the telemetry optionsai-npm-7.0.0-telemetry-tracer-removed | Breaking |
| Report only | Not applicable |
streamText's result names its parts stream instead of fullStreamai-npm-7.0.0-stream-text-result-fullstream-deprecated | Deprecation |
| Patch, written by the rename-property transform | Your typecheck and tests |
A tool's execute takes a context in its optionsai-npm-7.0.0-tool-execution-options-context-required | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
LanguageModelMiddleware is declared against the v4 provider typesai-npm-7.0.0-language-model-middleware-members-changed | Breaking medium confidence |
| Report only | Not applicable |
generateText's result no longer declares experimental_outputai-npm-7.0.0-generate-text-result-experimental-output-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
LanguageModelUsage moved reasoningTokens under outputTokenDetailsai-npm-7.0.0-language-model-usage-reasoning-tokens-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
LanguageModelUsage replaced cachedInputTokens with inputTokenDetails.cacheReadTokensai-npm-7.0.0-language-model-usage-cached-input-tokens-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
generateText no longer accepts experimental_activeToolsai-npm-7.0.0-generate-text-argument-1-experimental-active-tools-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
streamText no longer accepts experimental_activeToolsai-npm-7.0.0-stream-text-argument-1-experimental-active-tools-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
generateText no longer accepts experimental_outputai-npm-7.0.0-generate-text-argument-1-experimental-output-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
streamText no longer accepts experimental_outputai-npm-7.0.0-stream-text-argument-1-experimental-output-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
generateText no longer accepts experimental_prepareStepai-npm-7.0.0-generate-text-argument-1-experimental-prepare-step-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
generateText renamed experimental_context to runtimeContextai-npm-7.0.0-generate-text-argument-1-experimental-context-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
streamText renamed experimental_context to runtimeContextai-npm-7.0.0-stream-text-argument-1-experimental-context-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
generateObject no longer accepts timeoutai-npm-7.0.0-generate-object-argument-1-timeout-removed | Breaking |
| Report only | Not applicable |
streamObject no longer accepts timeoutai-npm-7.0.0-stream-object-argument-1-timeout-removed | Breaking |
| Report only | Not applicable |
createTextStreamResponse renamed textStream to streamai-npm-7.0.0-create-text-stream-response-argument-1-text-stream-renamed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
pipeTextStreamToResponse renamed textStream to streamai-npm-7.0.0-pipe-text-stream-to-response-argument-1-text-stream-renamed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
StepResult no longer carries functionIdai-npm-7.0.0-step-result-function-id-removed | Breaking |
| Report only | Not applicable |
StepResult no longer carries metadataai-npm-7.0.0-step-result-metadata-removed | Breaking |
| Report only | Not applicable |
StepResult renamed experimental_context to runtimeContextai-npm-7.0.0-step-result-experimental-context-removed | Breaking |
| Patch, written by the rename-property transform | Your typecheck and tests |
Removed abortSignal from the first argument of convertToLanguageModelPrompt()ai-npm-7.0.0-internal-convert-to-language-model-prompt-argument-1-abort-signal-removed | Breaking |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of ChatTransportai-npm-7.0.0-chat-transport-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of DefaultChatTransportai-npm-7.0.0-default-chat-transport-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of DirectChatTransportOptionsai-npm-7.0.0-direct-chat-transport-options-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of EmbeddingModelMiddlewareai-npm-7.0.0-embedding-model-middleware-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of ImageModelMiddlewareai-npm-7.0.0-image-model-middleware-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of Providerai-npm-7.0.0-provider-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of TextStreamChatTransportai-npm-7.0.0-text-stream-chat-transport-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of UIMessageStreamOptionsai-npm-7.0.0-uimessage-stream-options-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of SerialJobExecutorai-npm-7.0.0-serial-job-executor-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.
The error TS lines are what TypeScript 5.9.3 printed when code that compiled against ai 6.0.309 was compiled against 7.0.0. A row without one is a change the compiler does not report, such as a deprecation or a change in behaviour.
Coverage
Requires emendant@0.3.0 or later. Run emendant feed update to get the latest coverage.
Coverage details
- Snapshot
2026-10-11.1, sequence 42, signed 11 October 2026- Feed entry
feed/npm/ai/7.0.0.json
emendant feed status shows the snapshot your machine holds.
Primary sources
- Migration guidevercel/ai at ai@7.0.0
- package.jsonvercel/ai at ai@7.0.0
- ai@7.0.0npm registry, the published package
- ai@6.0.258npm registry, the published package
- ai@6.0.279npm registry, the published package
- ai@6.0.280npm registry, the published package
- ai@6.0.0npm registry, the published package
- Changelogvercel/ai at ai@7.0.0
- ai@6.0.282npm registry, the published package
- ai@7.0.105npm registry, the published package
- @ai-sdk/provider-utils@5.0.0npm registry, the published package
- @ai-sdk/provider-utils@4.0.51npm registry, the published package
- @ai-sdk/provider@4.0.0npm registry, the published package
- @ai-sdk/provider@3.0.16npm registry, the published package
- ai@6.0.288npm registry, the published package
- ai@6.0.303npm registry, the published package
Scan your repository
Find affected code without editing your files.
npx emendant scanThen npx emendant fix writes the patches the table says exist. The getting started guide covers the flags and the patch grades.
Related release pages
- Earlier ai release: ai@6.0.312: metadata type changed on TelemetrySettings
- Later ai release: AI SDK 7.0.14: MockTranscriptionModelV4 gains a doStream member
The AI SDK migration guide lists every release page and says which to read for your upgrade.