Migrate AI SDK V6 To V7
DevOps & deploy5.8K installs
What it does
Migrate applications from AI SDK 6.x to AI SDK 7.0. Use when upgrading Vercel AI SDK packages, fixing v7 migration errors, or when the user mentions AI SDK v6, v7, upgrade, migration, breaking changes, system to instructions, fullStream, telemetry, tool context, or finalStep.
Install
npx skills add https://github.com/vercel/ai --skill migrate-ai-sdk-v6-to-v7Website
www.skills.sh/vercel/ai/migrate-ai-sdk-v6-to-v7Details
From the skill’s SKILL.md or README, by its authors. View the original
AI SDK 6 to 7 Migration
Use content/docs/08-migration-guides/23-migration-guide-7-0.mdx from the AI SDK repo as the source of truth. This skill is the working checklist; read the guide for exact examples or when behavior is unclear.
Migration Workflow
- Ensure the user has a clean backup or committed baseline before editing.
- Inspect
package.jsonand lockfiles to identify installedai,@ai-sdk/*, provider, UI, MCP, and telemetry packages. - Upgrade AI SDK packages to latest versions, and add
@ai-sdk/otelonly if the project uses OpenTelemetry spans. - Update runtime and module assumptions: Node.js must be
>=22, and AI SDK packages are ESM-only. Replacerequire()imports with ESM imports and add"type": "module"or use.mjswhere needed. - Search for the v6 patterns below, migrate only the code that exists, then run typecheck and targeted tests.
Prefer behavior-preserving changes. When v7 changes semantics, decide whether the app wants the new all-steps behavior or the previous final-step-only behavior.
Core API Changes
experimental_customProvider->customProvider.experimental_generateImage->generateImage;Experimental_GenerateImageResult->GenerateImageResult.experimental_transcribe->transcribe;Experimental_TranscriptionResult->TranscriptionResult.experimental_generateSpeech->generateSpeech;Experimental_SpeechResult->SpeechResult.experimental_outputoption/result ->outputoption/result.CallSettings->LanguageModelCallOptions & Omit;prepareCallSettings->prepareLanguageModelCallOptions.stepCountIs->isStepCount.
Prompts and Steps
- Rename top-level
systemtoinstructionsforgenerateText,streamText,generateObject,streamObject, andstreamUI. - Move
{ role: 'system' }messages frompromptormessagesinto top-levelinstructions. Only useallowSystemInMessages: truefor trusted persisted messages. - Rename
experimental_prepareSteptoprepareStep. - In
prepareStep, rename returnedsystemtoinstructions. - In
experimental_repairToolCall, use{ instructions }instead of{ system }. - Audit
prepareStepbehavior: returnedinstructionsandmessagesnow carry forward into later steps. If code depended on one-step-only overrides, rebuild frominitialInstructions,initialMessages, andresponseMessagesexplicitly.
Lifecycle Callbacks
experimental_onStart->onStart.experimental_onStepStart->onStepStart.onFinish->onEnd.onStepFinish->onStepEnd.- For
embed,embedMany, andrerank,experimental_onFinish->onEnd. - Callback event fields use
instructionsinstead ofsystem.
Usage, Telemetry, and Include Options
usage.cachedInputTokens->usage.inputTokenDetails.cacheReadTokens.usage.reasoningTokens->usage.outputTokenDetails.reasoningTokens.- OpenTelemetry moved out of
ai; install@ai-sdk/oteland callregisterTelemetry(new OpenTelemetry(...))at app startup. - Telemetry is enabled by default once an integration is registered. Remove redundant
isEnabled: true; useisEnabled: falseto opt out per call. - Move
experimental_telemetry.tracerinto theOpenTelemetryconstructor. experimental_telemetry->telemetry.- Telemetry integration callbacks:
onRerankFinish->onRerankEnd,onEmbedFinish->onEmbedEnd. Update tracing-channel subscribers for the same event type names. experimental_include->include.includeRawChunks->include.rawChunks.- Request and response bodies are excluded by default. If code reads
request.bodyorresponse.body, opt in withinclude.requestBodyand, forgenerateText,include.responseBody.
Streaming, Messages, and Tools
StreamTextResult.fullStream->stream.streamTextonChunknow receives all stream parts, including lifecycle, boundary, finish, abort, and error parts. Guard bychunk.typebefore assuming text/tool/raw content.step.response.messagesis no longer accumulated across previous steps. Useresult.responseMessagesfor the full response message history, or flattenresult.steps.- Tool execution callbacks:
experimental_onToolCallStart->onToolExecutionStart,experimental_onToolCallFinish->onToolExecutionEnd. - Tool callback
experimental_context->context. - Split shared runtime data from tool-specific data: use top-level
runtimeContextfor orchestration state, declare per-toolcontextSchema, and pass per-tool values throughtoolsContext. - Move
needsApprovalfromtool()/dynamicTool()into per-call or agenttoolApproval. experimental_activeTools->activeTools.ToolCallOptions->ToolExecutionOptions.isToolOrDynamicToolUIPart->isToolUIPart.
Content Parts and Reasoning
- Tool result
{ type: 'media' }is removed; use{ type: 'file-data' }. - Migrate
toModelOutputimage-*,file-*,file-id, andimage-file-idvariants to canonical{ type: 'file', mediaType, data: { type: 'data' | 'url' | 'reference', ... } }. - User message
{ type: 'image', image, mediaType? }is deprecated; use{ type: 'file', mediaType: 'image' | 'image/*', data }. - Add support for the new
reasoning-filecontent type in exhaustive switches, renderers, serializers, and validators. - When adopting top-level
reasoning, remove overlapping provider-specific reasoning settings fromproviderOptionsunless provider-specific settings intentionally take precedence.
Multi-Step Result Shape
result.usagenow includes all steps;result.totalUsageis deprecated. Useresult.finalStep.usagefor final-step-only usage.- Top-level
content,toolCalls,staticToolCalls,dynamicToolCalls,toolResults,staticToolResults,dynamicToolResults,files,sources, andwarningsnow include all steps. UsefinalStepfor previous final-step-only behavior. - Top-level
reasoning,reasoningText,request,response, andproviderMetadataare deprecated for final-step data. Useresult.finalStep.*; forstreamText, awaitresult.finalStep. - Apply the same result-shape rules to
onEndevents.
Stream Response Helpers
The streamText result helper methods are deprecated. Replace result methods with top-level stateless helpers:
result.toUIMessageStream(...)->toUIMessageStream({ stream: result.stream, ... }).result.toUIMessageStreamResponse(...)->toUIMessageStream(...)pluscreateUIMessageStreamResponse({ stream }).result.pipeUIMessageStreamToResponse(response, ...)->toUIMessageStream(...)pluspipeUIMessageStreamToResponse({ response, stream }).result.toTextStreamResponse()->toTextStream({ stream: result.stream })pluscreateTextStreamResponse({ stream }).result.pipeTextStreamToResponse(response)->toTextStream({ stream: result.stream })pluspipeTextStreamToResponse({ response, stream }).
Package-Specific Checks
- MCP:
MCPTransportConfig.redirectnow defaults to'error'. Only setredirect: 'follow'for trusted MCP servers that rely on redirects. - Vue:
@ai-sdk/vueChatclass is deprecated. PreferuseChat, including getter/ref init for reactive chat inputs. - Anthropic and
@ai-sdk/google-vertex/anthropic:providerMetadata.anthropic.cacheCreationInputTokenswas removed. Useusage.inputTokenDetails.cacheWriteTokens; raw Anthropic usage remains atfinalStep.providerMetadata?.anthropic?.usage. - Google: rename
GoogleGenerativeAI*types, classes, and functions toGoogle*, e.g.createGoogleGenerativeAI->createGoogle. Thegoogleentry point is unchanged.
Validation
Run the project typecheck after edits, then the smallest relevant test suite. Also smoke-test streaming, chat UI, tool execution, telemetry, and multi-step flows if the migration touched them. If type errors remain, search the migration guide for the exact removed or renamed symbol before inventing a workaround.
More DevOps & deploy skills
See allDevOps & deploy
Debug Azure production issues using AppLens, Azure Monitor, resource health, and safe triage, including evidence-only diagnosis without live access. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot…
653.9K installsnpx skills add https://github.com/microsoft/azure-skills --skill azure-diagnosticsDevOps & deploy
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an…
653K installsnpx skills add https://github.com/microsoft/azure-skills --skill azure-prepareDevOps & deploy
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform…
651.9K installsnpx skills add https://github.com/microsoft/azure-skills --skill azure-deployDevOps & deploy
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight…
651.1K installsnpx skills add https://github.com/microsoft/azure-skills --skill azure-validate
Skills are shared by members and not reviewed by us. Read a skill’s code before you install it.