← All provider guides

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

DateChangeRef
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

Every entry on this page is generated from the mendapi change database at build time and links its upstream source.