Vercel API breaking changes (2026): complete tracker and fixes
vercel 98 breaking / deprecation entries 2026
Vercel ships API and SDK changes continuously. Most are additive — but the ones that are not can silently break integrations that worked yesterday. This page is the complete, continuously regenerated record of every Vercel breaking change and deprecation in the mendapi change database: 98 entries (98 breaking, 0 deprecation), each linked to its upstream source and, where possible, to a concrete fix.
How to read this page
Every entry carries a fixability verdict from the mendapi adjudication pipeline: code-fixable means a mechanical code change repairs the break (73 entries); not code-fixable means the change requires a business decision, credential provisioning, or upstream action that no codemod can produce (25 entries). Entries marked auto-fix pack have a deterministic, gold-tested migration pack that mendapi fix can apply locally.
Am I affected?
Reading a changelog tells you what changed — not whether your code uses the affected surface. The mendapi scanner answers that locally, in about 30 seconds, without any code leaving your machine:
npx mendapi sync # -> one network call: pulls the change feed into a local database npx mendapi scan # -> N findings: file, line, provider, confidence mendapi deps --match # -> which of the changes below actually hit your endpoints
See Getting Started for the full workflow and the security model for why zero code upload is the default and only mode.
Complete Vercel breaking change timeline
| Date | Change | Ref |
|---|---|---|
| 2026-08-10 | typescript - v1.28.17 - 2026-08-10 16:28:37 breaking code-fixable |
source |
| 2026-08-05 | typescript - v1.28.16 - 2026-08-05 22:46:17 breaking not code-fixable |
source |
| 2026-08-01 | typescript - v1.28.15 - 2026-08-01 16:47:55 breaking not code-fixable |
source |
| 2026-07-31 | path-removed: /v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/edge-config breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/tokens breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/token/{token} breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/token breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/schema breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/items breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/item/{edgeConfigItemKey} breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}/restore breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId} breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId}/backups breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config/{edgeConfigId} breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | path-removed: /v1/edge-config breaking code-fixable auto-fix pack |
spec diff |
| 2026-07-31 | typescript - v1.28.14 - 2026-07-31 02:12:56 breaking not code-fixable |
source |
| 2026-07-30 | typescript - v1.28.13 - 2026-07-30 00:46:21 breaking not code-fixable |
source |
| 2026-07-28 | response-prop-removed: POST /v13/deployments -> 200 anonymous.expiresAt breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: POST /v13/deployments -> 200 anonymous breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 201 connections[].edgeConfigItemKey breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 201 connections[].edgeConfigId breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 201 connections breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections[].edgeConfigItemKey breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections[].edgeConfigId breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: PATCH /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v13/deployments/{idOrUrl} -> 200 anonymous.expiresAt breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v13/deployments/{idOrUrl} -> 200 anonymous breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/teams/{teamId}/feature-flags/settings -> 200 data[].connections[].edgeConfigItemKey breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/teams/{teamId}/feature-flags/settings -> 200 data[].connections[].edgeConfigId breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/teams/{teamId}/feature-flags/settings -> 200 data[].connections breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections[].edgeConfigItemKey breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections[].edgeConfigId breaking code-fixable |
spec diff |
| 2026-07-28 | response-prop-removed: GET /v1/projects/{projectIdOrName}/feature-flags/settings -> 200 connections breaking code-fixable |
spec diff |
| 2026-07-28 | typescript - v1.28.12 - 2026-07-28 21:14:11 breaking not code-fixable |
source |
| 2026-07-27 | typescript - v1.28.11 - 2026-07-27 16:55:40 breaking not code-fixable |
source |
| 2026-07-25 | typescript - v1.28.10 - 2026-07-25 01:15:51 breaking not code-fixable |
source |
| 2026-07-24 | typescript - v1.28.9 - 2026-07-24 21:53:52 breaking not code-fixable |
source |
| 2026-07-03 | typescript - v1.28.8 - 2026-07-03 16:03:19 breaking not code-fixable |
source |
| 2026-07-02 | typescript - v1.28.7 - 2026-07-02 16:50:11 breaking not code-fixable |
source |
| 2026-06-30 | typescript - v1.28.6 - 2026-06-30 16:25:12 breaking not code-fixable |
source |
| 2026-06-29 | typescript - v1.28.5 - 2026-06-29 15:09:58 breaking not code-fixable |
source |
| 2026-06-26 | typescript - v1.28.4 - 2026-06-26 01:58:05 breaking not code-fixable |
source |
| 2026-06-25 | typescript - v1.28.3 - 2026-06-25 01:11:06 breaking not code-fixable |
source |
| 2026-06-24 | typescript - v1.28.2 - 2026-06-24 23:50:27 breaking not code-fixable |
source |
| 2026-06-19 | typescript - v1.28.1 - 2026-06-19 15:09:15 breaking not code-fixable |
source |
| 2026-06-18 | typescript - v1.28.0 - 2026-06-18 15:35:32 breaking not code-fixable |
source |
| — | response-prop-removed: POST /v11/projects -> 200 defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: POST /v11/projects -> 200 resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: POST /v11/projects -> 200 publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: POST /v11/projects -> 200 avatar breaking code-fixable |
spec diff |
| — | request-prop-removed: POST /v11/projects resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: POST /v1/projects/{idOrName}/avatar -> 200 defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: POST /v1/projects/{idOrName}/avatar -> 200 resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: POST /v1/projects/{idOrName}/avatar -> 200 publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: POST /v1/projects/{idOrName}/avatar -> 200 avatar breaking code-fixable |
spec diff |
| — | request-prop-removed: POST /v1/connect/connectors data.publicKeyFingerprint breaking not code-fixable |
spec diff |
| — | request-prop-removed: POST /v1/connect/connectors data.publicKeyPem breaking not code-fixable |
spec diff |
| — | request-prop-removed: POST /v1/connect/connectors data.serviceRole breaking not code-fixable |
spec diff |
| — | request-prop-removed: POST /v1/connect/connectors data.serviceUsername breaking not code-fixable |
spec diff |
| — | response-prop-removed: PATCH /v9/projects/{idOrName} -> 200 defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: PATCH /v9/projects/{idOrName} -> 200 resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: PATCH /v9/projects/{idOrName} -> 200 publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: PATCH /v9/projects/{idOrName} -> 200 avatar breaking code-fixable |
spec diff |
| — | request-prop-removed: PATCH /v9/projects/{idOrName} resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: PATCH /v1/projects/{projectId}/microfrontends -> 200 defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: PATCH /v1/projects/{projectId}/microfrontends -> 200 resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: PATCH /v1/projects/{projectId}/microfrontends -> 200 publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: PATCH /v1/projects/{projectId}/microfrontends -> 200 avatar breaking code-fixable |
spec diff |
| — | response-prop-removed: GET /v9/projects/{idOrName} -> 200 defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v9/projects/{idOrName} -> 200 resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v9/projects/{idOrName} -> 200 publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: GET /v9/projects/{idOrName} -> 200 avatar breaking code-fixable |
spec diff |
| — | response-prop-removed: GET /v7/deployments -> 200 deployments[].projectSettings.publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v3/events -> 200 events[].payload.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | enum-value-removed: GET /v3/events -> 200 events[].type = project-functions-extended-max-duration-updated breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v10/projects -> 200 projects[].defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v10/projects -> 200 projects[].resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v10/projects -> 200 projects[].publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v10/projects -> 200 [].resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v10/projects -> 200 [].publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: GET /v10/projects -> 200 projects[].avatar breaking code-fixable |
spec diff |
| — | response-prop-removed: GET /v1/microfrontends/groups/{groupId}/projects -> 200 projects[].defaultResourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/microfrontends/groups/{groupId}/projects -> 200 projects[].resourceConfig.enableFunctionsExtendedMaxDuration breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/microfrontends/groups/{groupId}/projects -> 200 projects[].publicSource breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-became-nullable: GET /v1/microfrontends/groups/{groupId}/projects -> 200 projects[].avatar breaking code-fixable |
spec diff |
| — | enum-value-removed: GET /v1/events/types -> 200 types[].name = project-functions-extended-max-duration-updated breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v3/events -> 200 events[].payload.managedAccountId breaking not code-fixable |
spec diff |
| — | response-prop-removed: GET /v3/events -> 200 events[].payload.personalAccountId breaking not code-fixable |
spec diff |
| — | response-prop-removed: GET /v1/query/web-analytics/visits/count -> 200 data.dheCipherSuite breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/query/web-analytics/visits/aggregate -> 200 data[].dheCipherSuite breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/query/web-analytics/events/count -> 200 data.dheCipherSuite breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/query/web-analytics/events/aggregate -> 200 data[].dheCipherSuite breaking code-fixable auto-fix pack |
spec diff |
| — | enum-value-removed: GET /v3/events -> 200 events[].type = team-emu-account-split breaking not code-fixable |
spec diff |
| — | operation-removed: GET /v1/vcr/repository/{idOrName}/images/{imageId} breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/installations/{integrationConfigurationId}/resources/{resourceId} -> 200 protocolSettings.experimentation.edgeConfigTokenId breaking code-fixable auto-fix pack |
spec diff |
| — | response-prop-removed: GET /v1/installations/{integrationConfigurationId}/resources/{resourceId} -> 200 protocolSettings.experimentation.edgeConfigSyncingEnabled breaking code-fixable auto-fix pack |
spec diff |
| — | enum-value-removed: GET /v1/events/types -> 200 types[].name = team-emu-account-split breaking not code-fixable |
spec diff |
| — | response-prop-removed: POST /v1/storage/stores/integration/direct -> 200 store.product.agentSkillUrl breaking code-fixable auto-fix pack |
spec diff |
Automated migration packs for Vercel
mendapi ships 7 deterministic migration packs for Vercel — verified, idempotent codemods you can apply locally with mendapi fix. Full details in the pack catalog.
vercel-web-analytics-dhe-cipher-suite-removal— Vercel Web Analytics: dheCipherSuite response dimension discontinued (v1.28.9) (upstream reference)vercel-project-extended-max-duration-removal— Vercel Projects: enableFunctionsExtendedMaxDuration flag withdrawn from the API surface (v1.28.0) (upstream reference)vercel-project-public-source-removal— Vercel Projects: publicSource dropped from all project response schemas (v1.28.0) (upstream reference)vercel-store-agent-skill-url-to-agent-skills— Vercel Marketplace stores: product.agentSkillUrl reshaped into the agentSkills array (v1.28.3) (upstream reference)vercel-vcr-image-id-or-digest-rename— Vercel VCR: single-image fetch path parameter widened from imageId to imageIdOrDigest (v1.28.9) (upstream reference)vercel-integration-resource-edge-config-read-move— Vercel Marketplace: experimentation edge-config fields dropped from the single-resource read (v1.28.9) — reads move to the list endpoint (upstream reference)vercel-edge-config-to-global-config-path-rename— Vercel REST API: the /v1/edge-config resource family renamed to /v1/global-config (v1.28.14) (upstream reference)
Measured: when the release notes cry breaking and the spec disagrees
The release notes for @vercel/sdk v1.28.15 flag vercel.user.listUserEvents() and vercel.user.listEventTypes() as Breaking. Diffing the OpenAPI spec behind that release (vercel-oas-v1.28.14-to-v1.28.15) tells a different story: 44 raw diff records and 0 breaking changes — 18 enum-value-added, 17 response-prop-added, 9 request-prop-added. Every record is additive surface growth: new enum values, new response properties, new request properties.
Why the mismatch? The SDK is generated by Speakeasy, and adding a member to a TypeScript union type changes the generated type shape — which the generator dutifully labels breaking at the language-type level. At the wire-contract level nothing an existing caller sends or reads stopped working. A team that trusts the release-note label alone schedules migration work it does not need; a team that ignores it will one day miss a real removal (the v1.28.14 corridor in the timeline above shipped 12 genuine endpoint removals in a patch release). Measuring the spec is how you tell the two apart, per release, in seconds.
Monitoring Vercel going forward
This page is regenerated from the change database, which is fed by release feeds, changelog capture and OpenAPI spec diffing — so it does not depend on Vercel writing a perfect changelog. mendapi monitors 84125 change records across 20 providers; hosted plans watch your repos continuously and open fix PRs when a change lands. See pricing.
Frequently asked questions
How do I check if my codebase is affected by Vercel breaking changes?
Run npx mendapi scan in your repo. It statically matches your files against the 98 Vercel breaking changes and deprecations in this tracker and reports file, line and confidence for every hit — locally, in about 30 seconds, with zero network calls.
How many Vercel API breaking changes are on record?
This tracker records 98 entries for Vercel (98 breaking changes and 0 deprecations, 2026). Each entry is adjudicated: 73 are code-fixable, 25 require a decision no codemod can make.
Are there automated fixes for Vercel breaking changes?
Yes — mendapi ships 7 deterministic migration packs for Vercel. mendapi fix applies them locally as reviewable diffs; every pack is gold-tested and idempotent.
Does my code get uploaded when scanning for Vercel changes?
No. mendapi scan, deps and fix run with zero network code, mechanically enforced by the test suite. Optional hosted reporting is metadata-only, secrets-redacted, and requires an explicit flag.
Related
- Vercel SDK v1.28 migration — the full migration guide with pack-backed fixes.
- 11 Vercel spec pairs: a real 12-endpoint removal, and the release notes that cried breaking — the long-form methodology report behind this provider's tracked changes.
- API breaking change detection — how upstream breakage is caught before it ships, and why default severity gates stay silent.
- All breaking-change reports — per-change deep dives with migration guides.
- All monitored providers — live change counts.
- Migration pack catalog — every deterministic fix mendapi ships.