Packages

@clerk/backend

3.26.1 · 21 Oct 2026MIT3.5M / weekRepositoryHomepagenpmAtom feed

418 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.

  1. 3.26.1

    21 Oct 2026
    • Stop accepting the legacy cl_I7d4PD111III JWT category as a session or handshake token. Clerk no longer issues it, so authenticateRequest() now returns a signed-out state with reason token-type-mismatch for a token carrying it, the same as for other non-session categories.

  2. 3.26.0

    20 Oct 2026
    • Add webhook types for transactional email delivery, delays, bounces, complaints, failures, and suppressions. Bounce events distinguish Permanent, Transient, and Undetermined classifications. verifyWebhook() preserves the original event timestamp and instance ID for outcome handlers. These types prepare for the transactional email pilot; receiving the events requires the corresponding backend rollout.

    • Clarify issuer validation for session tokens and document that machine token verification ignores the issuer option.

  3. 3.25.0

    16 Oct 2026
    • Added an optional issuer option to verifyJwt(), verifyToken(), and authenticateRequest() to validate the JWT iss claim against a string or list of allowed strings. For verifyToken() and authenticateRequest(), this applies only to session tokens. Omitting issuer preserves existing behavior.

  4. 3.24.0

    15 Oct 2026
    • Add deprovisioned to the Backend User object and UserJSON, so you can tell when Directory Sync has deactivated a user, including in user.updated webhook payloads, without casting. It's separate from banned: Directory Sync sets and clears deprovisioned, while you set banned through the Dashboard or Backend API.

  5. 3.23.1 – 3.23.22 releases that only update dependencies@clerk/shared 4.40.0Show each
  6. 3.23.0

    5 Oct 2026
    • Add clerkClient.invitations.deleteInvitation(invitationId), which permanently deletes an instance invitation and the stored copies of its invitation email. Unlike revokeInvitation, this removes the invitation record itself, so it can be used to honor a data erasure request from someone who was invited but never signed up.

    • Verified OAuth access tokens now expose act, the RFC 8693 actor chain, when the token was issued by an OAuth 2.0 Token Exchange. It is available on the IdPOAuthAccessToken returned for both opaque and JWT access tokens.

  7. 3.22.0

    1 Oct 2026
    • deprecated

      SAML connections can trust several Identity Provider signing certificates at once. SamlConnection and EnterpriseConnection.samlConnection now include idpCertificates, every trusted certificate with its validity window, and createSamlConnection(), updateSamlConnection(), createEnterpriseConnection() and updateEnterpriseConnection() accept an idpCertificates array that replaces the connection's whole set. The single idpCertificate parameter is deprecated in favor of the array; it keeps working and still replaces the whole set.

  8. 3.21.1

    30 Sep 2026
    • Update the allowedOrigins JSDoc on clerkClient.instances.update() and the Instance resource to note that Electron apps using @clerk/electron also need the renderer's dev server origin, for example http://localhost:5173, during development.

    • Update the lockUser() JSDoc to link the Dashboard's current Protect rules page.

  9. 3.21.0

    29 Sep 2026
    • verifyWebhook() now returns the event's top-level timestamp (milliseconds since epoch when the event occurred) and instance_id, so webhook handlers can order events and identify the instance that sent them.

    • Update the allowedOrigins JSDoc for Electron apps to describe the custom renderer scheme used by @clerk/electron.

    • Capture authentication timezones so Clerk emails can display timestamps in a stored user timezone.

  10. 3.20.1

    25 Sep 2026

    Only updates a dependency:@clerk/shared 4.36.0

  11. 3.20.0

    24 Sep 2026
    • Add an optional nameQuery filter to oauthApplications.list() to search OAuth applications by name or exact client ID.

  12. 3.19.0

    23 Sep 2026
    • Fixes an issue where OAuth token validation did not correctly validate audience (aud) claims. Previous usages that specified audience were falsely passing. This upgrade will cause those to start rejecting if the audience indeed does not match the OAuth token's aud claim, including cases where the aud claim is omitted.

    • Expose the optional aud audience on verified OAuth access tokens.

    • Clarify domain API documentation and deletion parameter names. The active domain cannot be deleted.

  13. 3.18.1

    15 Sep 2026

    Only updates a dependency:@clerk/shared 4.33.0

  14. 3.18.0

    15 Sep 2026
    • Add experimental emails.createBatch() for submitting up to 100 transactional emails. Each message supports its own idempotency key and returns an independent success or error result.

      Transactional messages now support sender and reply-to display names, cross-domain Reply-To addresses, CC/BCC recipients, attachments, and custom headers. These options require a backend deployment that supports them.

    • Update docs deep links in JSDoc comments to match clerk.com's new heading anchors (#get-token is now #gettoken, #o-auth-strategy is now #oauthstrategy, and so on).

    • Update the lockUser() JSDoc to point at the System page under Protect > Rules (/~/protect/rules/system), matching the Clerk Dashboard's Protect navigation.

  15. 3.17.2

    9 Sep 2026
    • Update Clerk Dashboard links in option descriptions, error messages, and READMEs to use the active-instance shortcut (https://dashboard.clerk.com/~/…) instead of the legacy /last-active?path=… URL.

  16. 3.17.1

    2 Sep 2026

    Only updates a dependency:@clerk/shared 4.31.0

  17. 3.17.0

    1 Sep 2026
    • Add experimental methods for sending and retrieving internal transactional emails, including Clerk suppression state and reasons.

    • Reject JWT-template tokens presented as session tokens in the Authorization header when acceptsToken is 'any' or an array that includes 'session_token'. authenticateRequest() now returns a signed-out state with reason token-type-mismatch for such a token, matching the existing acceptsToken: 'session_token' behavior.

  18. 3.16.13

    28 Aug 2026
    • Align JSDoc link targets with the docs link rules: internal docs links don't open in a new tab (removed {{ target: '_blank' }} from the Invitation Metadata link), while API reference links do (added it to the ExternalAccount Backend API link and the currentUser() endpoint link).

  19. 3.16.11 – 3.16.122 releases that only update dependencies@clerk/shared 4.30.1Show each
  20. 3.16.10

    20 Aug 2026
    • Mark the internal createBootstrapSignedOutState as deprecated. It is no longer used by @clerk/nextjs and is kept only for older published SDK versions.

  21. 3.16.9

    19 Aug 2026
    • Reject JWT-template tokens where a session or handshake token is expected. authenticateRequest() now returns a signed-out state with reason token-type-mismatch for such a token in the Authorization header or __session cookie. Tokens with no category tag, and instances configured to omit it, are unaffected.

  22. 3.16.8

    18 Aug 2026
    • Scope the JWKS cache per Clerk instance. The cache was keyed on the JWT kid alone and shared across the whole process, so an application verifying tokens for more than one Clerk instance (for example the Dynamic Keys / multi-tenant pattern) could resolve a signing key that was fetched for a different instance. Keys are now cached separately per secret key and API URL, so a token can only be verified against the instance whose credentials fetched its signing key.

      Networkless verification with jwtKey had the same flaw: the JWK derived from the PEM was cached by kid alone, so a process verifying tokens with different jwtKey values could resolve a key derived from another instance's PEM. The JWK is now always derived from the jwtKey that was passed in.

      The jwk-kid-mismatch error message no longer lists the key IDs currently held in the cache.

  23. 3.16.7

    18 Aug 2026
    • Fix Cookie header parsing in authenticateRequest() to follow RFC 6265 and guard against a non-string iss. Legitimate cookies and JWTs are unaffected.

  24. 3.16.6

    14 Aug 2026

    Only updates a dependency:@clerk/shared 4.29.1

  25. 3.16.5

    13 Aug 2026
    • Billing applied-discount snapshots now include optional durationInCycles. Payment attempt and statement UIs use the original discount length instead of cycles remaining, and omit the duration copy when it is unavailable.

  26. 3.16.4

    11 Aug 2026
    • Update the lockUser() documentation to link to the current Rules page in the Clerk Dashboard.

  27. 3.16.3

    10 Aug 2026

    Only updates a dependency:@clerk/shared 4.28.1

  28. 3.16.1

    7 Aug 2026
    • Use a root-relative link (/contact/support) for the passwordHasher "contact support" reference so the generated API reference renders it as an internal same-tab link instead of an external one.

  29. 3.16.0

    6 Aug 2026
    • Add clerkClient.users.removePassword(userId, params?) to remove a user's password through the Backend API. Password removal is allowed even when the user has no alternate sign-in method configured. Existing sessions remain active by default; pass { signOutOfOtherSessions: true } to revoke them.

    • Improve generated API reference links, expose BillingSubscriptionItemStatus, and clarify the createUser() identification status documentation.

  30. 3.15.1

    4 Aug 2026
    • Add the optional emailAddressIdentificationStatus and phoneNumberIdentificationStatus parameters to CreateUserParams. The Backend API has supported these arrays on POST /v1/users since they shipped, but createUser() had no way to pass them, so every email address and phone number was necessarily created verified. Each array runs parallel to emailAddress / phoneNumber — one item per identifier, applied by position — and an item set to 'reserved' creates that identifier unverified but still usable for sign-in and locked so no other user can claim it.

      The createUser() documentation is corrected accordingly: it stated unconditionally that created email addresses and phone numbers are automatically verified, which is only the default.

  31. 3.15.0

    31 Jul 2026
    • Update fields for BillingSubscription and BillingSubscriptionItem

    • Return a TokenVerificationError from decodeJwt and verifyToken for tokens whose header, payload, or signature cannot be decoded.

  32. 3.14.0

    29 Jul 2026
    • Align the EnterpriseConnection response resource with what the Backend API actually returns:

  33. 3.13.2

    27 Jul 2026

    Only updates dependencies, nothing else changes.

  34. 3.13.1

    24 Jul 2026

    Reading the note…

  35. 3.13.0

    23 Jul 2026

    Reading the note…

  36. 3.12.0

    21 Jul 2026

    Reading the note…

  37. 3.11.7

    16 Jul 2026

    Reading the note…

  38. 3.11.6

    15 Jul 2026

    Reading the note…

  39. 3.11.5

    14 Jul 2026

    Reading the note…

  40. 3.11.4

    10 Jul 2026

    Reading the note…

  41. 3.11.3

    9 Jul 2026

    Reading the note…

  42. 3.11.2

    9 Jul 2026

    Reading the note…

  43. 3.11.1

    7 Jul 2026

    Reading the note…

  44. 3.11.0

    6 Jul 2026

    Reading the note…

  45. 3.10.0

    1 Jul 2026

    Reading the note…

  46. 3.9.0

    30 Jun 2026

    Reading the note…

  47. 3.8.5

    29 Jun 2026

    Reading the note…

  48. 3.8.4

    25 Jun 2026

    Reading the note…