Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vercel avatar

Migrate Ai Sdk V6 To V7

  • 2.3k installs
  • 25.8k repo stars
  • Updated July 28, 2026
  • vercel/ai

migrate-ai-sdk-v6-to-v7 is a skill for upgrading Vercel AI SDK from 6.x to 7.0.

About

The migrate-ai-sdk-v6-to-v7 skill walks developers through upgrading Vercel AI SDK packages from 6.x to 7.0 using the official migration guide as source of truth. It catalogs breaking changes, renamed APIs, streaming behavior updates, and package import path adjustments agents must apply across app code and tests. Workflows reference content/docs migration guide MDX from the AI SDK repo when exact examples are needed. Agents use the skill when users mention AI SDK v6, v7, upgrade errors, or migration failures during SDK bumps. AI SDK 6.x to 7.0 migration checklist and breaking changes. References official migration guide MDX as source of truth. Covers renamed APIs, streaming, and import path updates. Helps fix v7 migration errors across app and test code. Vercel AI SDK upgrade workflow for production apps.

  • AI SDK 6.x to 7.0 migration checklist and breaking changes.
  • References official migration guide MDX as source of truth.
  • Covers renamed APIs, streaming, and import path updates.
  • Helps fix v7 migration errors across app and test code.
  • Vercel AI SDK upgrade workflow for production apps.

Migrate Ai Sdk V6 To V7 by the numbers

  • 2,270 all-time installs (skills.sh)
  • +410 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #225 of 4,386 Backend & APIs skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
From the docs

What migrate-ai-sdk-v6-to-v7 says it does

Migrate applications from AI SDK 6.x to AI SDK 7.0.
SKILL.md
npx skills add https://github.com/vercel/ai --skill migrate-ai-sdk-v6-to-v7

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2.3k
repo stars25.8k
Security audit3 / 3 scanners passed
Last updatedJuly 28, 2026
Repositoryvercel/ai

How do I migrate my app from AI SDK v6 to v7 without breaking streaming?

Migrate Vercel AI SDK applications from version 6.x to 7.0 using official migration guide checklists.

Who is it for?

Teams upgrading Vercel AI SDK packages to version 7.

Skip if: Skip for greenfield AI SDK 7 projects without v6 legacy code.

When should I use this skill?

User upgrades AI SDK, hits v7 migration errors, or mentions v6 to v7 bump.

What you get

App code and tests updated per official AI SDK 7 migration guide.

Files

SKILL.mdMarkdownGitHub ↗

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

1. Ensure the user has a clean backup or committed baseline before editing. 2. Inspect package.json and lockfiles to identify installed ai, @ai-sdk/*, provider, UI, MCP, and telemetry packages. 3. Upgrade AI SDK packages to latest versions, and add @ai-sdk/otel only if the project uses OpenTelemetry spans. 4. Update runtime and module assumptions: Node.js must be >=22, and AI SDK packages are ESM-only. Replace require() imports with ESM imports and add "type": "module" or use .mjs where needed. 5. 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_output option/result -> output option/result.
  • CallSettings -> LanguageModelCallOptions & Omit<RequestOptions, 'timeout'>; prepareCallSettings -> prepareLanguageModelCallOptions.
  • stepCountIs -> isStepCount.

Prompts and Steps

  • Rename top-level system to instructions for generateText, streamText, generateObject, streamObject, and streamUI.
  • Move { role: 'system' } messages from prompt or messages into top-level instructions. Only use allowSystemInMessages: true for trusted persisted messages.
  • Rename experimental_prepareStep to prepareStep.
  • In prepareStep, rename returned system to instructions.
  • In experimental_repairToolCall, use { instructions } instead of { system }.
  • Audit prepareStep behavior: returned instructions and messages now carry forward into later steps. If code depended on one-step-only overrides, rebuild from initialInstructions, initialMessages, and responseMessages explicitly.

Lifecycle Callbacks

  • experimental_onStart -> onStart.
  • experimental_onStepStart -> onStepStart.
  • onFinish -> onEnd.
  • onStepFinish -> onStepEnd.
  • For embed, embedMany, and rerank, experimental_onFinish -> onEnd.
  • Callback event fields use instructions instead of system.

Usage, Telemetry, and Include Options

  • usage.cachedInputTokens -> usage.inputTokenDetails.cacheReadTokens.
  • usage.reasoningTokens -> usage.outputTokenDetails.reasoningTokens.
  • OpenTelemetry moved out of ai; install @ai-sdk/otel and call registerTelemetry(new OpenTelemetry(...)) at app startup.
  • Telemetry is enabled by default once an integration is registered. Remove redundant isEnabled: true; use isEnabled: false to opt out per call.
  • Move experimental_telemetry.tracer into the OpenTelemetry constructor.
  • 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.body or response.body, opt in with include.requestBody and, for generateText, include.responseBody.

Streaming, Messages, and Tools

  • StreamTextResult.fullStream -> stream.
  • streamText onChunk now receives all stream parts, including lifecycle, boundary, finish, abort, and error parts. Guard by chunk.type before assuming text/tool/raw content.
  • step.response.messages is no longer accumulated across previous steps. Use result.responseMessages for the full response message history, or flatten result.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 runtimeContext for orchestration state, declare per-tool contextSchema, and pass per-tool values through toolsContext.
  • Move needsApproval from tool() / dynamicTool() into per-call or agent toolApproval.
  • experimental_activeTools -> activeTools.
  • ToolCallOptions -> ToolExecutionOptions.
  • isToolOrDynamicToolUIPart -> isToolUIPart.

Content Parts and Reasoning

  • Tool result { type: 'media' } is removed; use { type: 'file-data' }.
  • Migrate toModelOutput image-*, file-*, file-id, and image-file-id variants 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-file content type in exhaustive switches, renderers, serializers, and validators.
  • When adopting top-level reasoning, remove overlapping provider-specific reasoning settings from providerOptions unless provider-specific settings intentionally take precedence.

Multi-Step Result Shape

  • result.usage now includes all steps; result.totalUsage is deprecated. Use result.finalStep.usage for final-step-only usage.
  • Top-level content, toolCalls, staticToolCalls, dynamicToolCalls, toolResults, staticToolResults, dynamicToolResults, files, sources, and warnings now include all steps. Use finalStep for previous final-step-only behavior.
  • Top-level reasoning, reasoningText, request, response, and providerMetadata are deprecated for final-step data. Use result.finalStep.*; for streamText, await result.finalStep.
  • Apply the same result-shape rules to onEnd events.

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(...) plus createUIMessageStreamResponse({ stream }).
  • result.pipeUIMessageStreamToResponse(response, ...) -> toUIMessageStream(...) plus pipeUIMessageStreamToResponse({ response, stream }).
  • result.toTextStreamResponse() -> toTextStream({ stream: result.stream }) plus createTextStreamResponse({ stream }).
  • result.pipeTextStreamToResponse(response) -> toTextStream({ stream: result.stream }) plus pipeTextStreamToResponse({ response, stream }).

Package-Specific Checks

  • MCP: MCPTransportConfig.redirect now defaults to 'error'. Only set redirect: 'follow' for trusted MCP servers that rely on redirects.
  • Vue: @ai-sdk/vue Chat class is deprecated. Prefer useChat, including getter/ref init for reactive chat inputs.
  • Anthropic and @ai-sdk/google-vertex/anthropic: providerMetadata.anthropic.cacheCreationInputTokens was removed. Use usage.inputTokenDetails.cacheWriteTokens; raw Anthropic usage remains at finalStep.providerMetadata?.anthropic?.usage.
  • Google: rename GoogleGenerativeAI* types, classes, and functions to Google*, e.g. createGoogleGenerativeAI -> createGoogle. The google entry 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.

Related skills

FAQ

What is the source of truth?

The official AI SDK migration guide 7-0 MDX in the Vercel AI repo.

Which versions does it cover?

Migration from AI SDK 6.x to AI SDK 7.0.

What areas break most often?

Renamed APIs, streaming behavior, and package import paths per the checklist.

Is Migrate Ai Sdk V6 To V7 safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.