---
title: "@clerk/backend Breaking Changes on npm | Since.dev"
description: "What each @clerk/backend release removed, renamed or changed: 77 breaking changes in 8 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/@clerk/backend
last_updated: 2026-02-27
---

# @clerk/backend breaking changes

Every breaking API change we have recorded in @clerk/backend on npm: 77 breaking changes in 8 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change February 27, 2026

## 2.33.0

7 breaking changes, first published February 27, 2026.

- **Removed** `internal:getMachineTokenType`  

getMachineTokenType was removed in @clerk/backend 2.33.0 [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Removed** `internal:isMachineTokenType`  

isMachineTokenType was removed in @clerk/backend 2.33.0 [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Signature changed** `errors:MachineTokenVerificationError`  

Was class MachineTokenVerificationError extends Error; now class MachineTokenVerificationError extends ClerkError. [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Signature changed** `errors:MachineTokenVerificationError.action`  

Was action?: TokenVerificationErrorAction; now readonly action?: TokenVerificationErrorAction. [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Signature changed** `errors:MachineTokenVerificationError.code`  

Was code: MachineTokenVerificationErrorCode; now readonly code: MachineTokenVerificationErrorCode. [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Signature changed** `errors:MachineTokenVerificationError.status`  

Was status?: number; now readonly status?: number. [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)
- **Signature changed** `verifyToken`  

Was const verifyToken: (token: string, options: {audience?: string | string\[\] | undefined; authorizedParties?: string\[\] | undefined; clockSkewInMs?: number | undefined; headerType?: string | string\[\] | undefined; secretKey?: string |... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.33.0)

## 2.31.0

1 breaking change, first published February 13, 2026.

- **Signature changed** `ExternalAccount.constructor`  

Was constructor(id: string, provider: string, identificationId: string, externalId: string, approvedScopes: string, emailAddress: string, firstName: string, lastName: string, imageUrl: string, username: string | null, phoneNumber: string |... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.31.0)

## 2.29.3

1 breaking change, first published January 16, 2026.

- **Signature changed** `OauthAccessToken.constructor`  

Was constructor(externalAccountId: string, provider: string, token: string, publicMetadata: Record<string, unknown> | undefined, label: string, scopes?: string\[\] | undefined, tokenSecret?: string | undefined, expiresAt?: number |... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.29.3)

## 2.29.0

1 breaking change, first published December 19, 2025.

- **Signature changed** `internal:constants`  

Was const constants: {readonly Attributes: {readonly AuthToken: "\_\_clerkAuthToken"; readonly AuthSignature: "\_\_clerkAuthSignature"; readonly AuthStatus: "\_\_clerkAuthStatus"; readonly AuthReason: "\_\_clerkAuthReason"; readonly AuthMessage... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.29.0)

## 2.26.0

5 breaking changes, first published December 8, 2025.

- **Signature changed** `errors:MachineTokenVerificationError.constructor`  

Was constructor({message, code, status}: {message: string; code: MachineTokenVerificationErrorCode; status: number;}); now constructor({message, code, status, action}: {message: string; code: MachineTokenVerificationErrorCode; status?... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.26.0)
- **Signature changed** `errors:MachineTokenVerificationError.status`  

Was status: number; now status?: number. [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.26.0)
- **Signature changed** `errors:MachineTokenVerificationErrorCode`  

Was const MachineTokenVerificationErrorCode: {readonly TokenInvalid: "token-invalid"; readonly InvalidSecretKey: "secret-key-invalid"; readonly UnexpectedError: "unexpected-error";}; now const MachineTokenVerificationErrorCode: {readonly... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.26.0)
- **Signature changed** `jwt:VerifyJwtOptions`  

Was type VerifyJwtOptions = {audience?: string | string\[\]; authorizedParties?: string\[\]; clockSkewInMs?: number; key: JsonWebKey | string;}; now type VerifyJwtOptions = {audience?: string | string\[\]; authorizedParties?: string\[\]... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.26.0)
- **Signature changed** `verifyToken`  

Was const verifyToken: (token: string, options: {audience?: string | string\[\] | undefined; authorizedParties?: string\[\] | undefined; clockSkewInMs?: number | undefined; secretKey?: string | undefined; apiUrl?: string | undefined... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.26.0)

## 2.23.0

2 breaking changes, first published November 17, 2025.

- **Signature changed** `SessionWebhookEvent`  

Was type SessionWebhookEvent = Webhook<'session.created' | 'session.ended' | 'session.removed' | 'session.revoked', SessionJSON>; now type SessionWebhookEvent = Webhook<'session.created' | 'session.ended' | 'session.removed' |... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.23.0)
- **Signature changed** `UserWebhookEvent`  

Was type UserWebhookEvent = Webhook<'user.created' | 'user.updated', UserJSON> | Webhook<'user.deleted', DeletedObjectJSON>; now type UserWebhookEvent = Webhook<'user.created' | 'user.updated', UserJSON> | Webhook<'user.deleted'... [npmjs.com](https://www.npmjs.com/package/@clerk/backend/v/2.23.0)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
