releases.shpreview

Org and user metadata replacement added; partial updates preferred

@clerk/backend@3.7.0

2 features2 enhancementsThis release2 featuresNew capabilities2 enhancementsImprovements to existing featuresAI-tallied from the release notes

Minor Changes

  • Add clerkClient.organizations.replaceOrganizationMetadata(organizationId, params) for replacing an organization's metadata fields in full. (#8787) by @brunol95

    Use replaceOrganizationMetadata when the provided metadata should become the complete value for that metadata field:

    await clerkClient.organizations.replaceOrganizationMetadata(organizationId, {
      publicMetadata: { plan: 'pro' },
    });

    Use clerkClient.organizations.updateOrganizationMetadata(organizationId, params) when you want to partially update metadata with deep-merge semantics:

    await clerkClient.organizations.updateOrganizationMetadata(organizationId, {
      publicMetadata: { onboardingComplete: true },
    });

    The publicMetadata and privateMetadata parameters on clerkClient.organizations.updateOrganization() are now deprecated. They continue to work, but new code should use updateOrganizationMetadata() for partial updates or replaceOrganizationMetadata() for full replacement.

  • Add clerkClient.users.replaceUserMetadata(userId, params) for replacing a user's metadata fields in full. (#8587) by @brunol95

    Use replaceUserMetadata when the provided metadata should become the complete value for that metadata field:

    await clerkClient.users.replaceUserMetadata(userId, {
      publicMetadata: { plan: 'pro' },
    });

    Use clerkClient.users.updateUserMetadata(userId, params) when you want to partially update metadata with deep-merge semantics:

    await clerkClient.users.updateUserMetadata(userId, {
      publicMetadata: { onboardingComplete: true },
    });

    The publicMetadata, privateMetadata, and unsafeMetadata parameters on clerkClient.users.updateUser() are now deprecated. They continue to work, but new code should use updateUserMetadata() for partial updates or replaceUserMetadata() for full replacement.

Patch Changes

  • Migrate the build pipeline to tsdown and TypeScript 6.0. This is an internal tooling change with no intended changes to the public API or runtime behavior. (#8177) by @dstaley

  • Updated dependencies [f046c49, b5fa9f6, 3d5b2fe]:

    • @clerk/shared@4.17.1

Fetched June 11, 2026

Org and user metadata replacement added; partial updates preferred (@clerk/backend@3.7.0) — JavaScript SDK — releases.sh