# Deprecations — `@sixtyninecommerce/client`

Every symbol of this package marked `@deprecated`: what replaces it, the release that deprecated
it, and the release that removes it. A deprecated symbol keeps working, unchanged, until then.
`pnpm check:invariants` (`storefront-client-deprecations`) keeps this table and the source in step: a
`@deprecated` tag with no row here, a row with no tag, or a tag that does not name the replacement
fails it.

## When a symbol goes

A symbol goes in the first major release published **at least 60 days after the release that
deprecated it** (rulings H3 and G88), announced in this package's changelog:

- `1.0.0` ships no sooner than 2026-12-07, 60 days after 0.31.0 (published 2026-10-08), which
  deprecated `client.graphql()`. Every symbol deprecated by then goes in `1.0.0`.
- A symbol whose notice is younger than 60 days on the day `1.0.0` ships stays, still warning,
  through `1.x` and goes in `2.0.0`. `1.0.0` does not wait for it. That is what "1.0.0 or 2.0.0"
  below means: which one depends on the date `1.0.0` ships.

The deprecated methods also say so at runtime, once per process (`console.warn`, naming the
replacement), unless `createStorefrontClient({ onDeprecation })` (or
`createCommerceAdminClient({ onDeprecation })`) routes or silences the notice.

## The 1.0 regroup

The storefront methods added in wave 8 were placed in `client.commerce` (ruling F1). Their home is
now the design's groups (`client.auth`, `client.checkout`, `client.store`, `client.orders`), under
the names of headless spec §9.1. Each old name calls the very same method: same arguments, same
request, same result. The full map, with migration notes, is
[`docs/headless/storefront/regroup-1.0.md`](../../docs/headless/storefront/regroup-1.0.md).

## The resolved head (0.38.0)

The platform resolves a storefront page's whole head (`client.seo.resolve()`), so the SDK-side
head builders are deprecated: `seo.metaTagsFor`, `seo.metaFor` and `seo.robotsDirectiveFor`, and
their Next adapters `toNextMetadata`, `extraOpenGraphTags` and `NextCompatibleMetadata`. Render
the resolved head with `resolveMetadata`, `headPropertyTags`, `jsonLdScriptProps` and
`integrationScriptProps` (`@sixtyninecommerce/client/next`) or `renderHeadTags` (`/web`). The URL
builders (`seo.canonicalFor`, `seo.alternatesFor`, `seo.buildUrl`) stay: a storefront still builds
links with them.

## Table

| Symbol | Deprecated in | Notice published | Replacement | Removed in |
|---|---|---|---|---|
| `CommerceModule.addPayment` | 0.37.0 | unreleased | `client.checkout.addPayment` | 1.0.0 or 2.0.0 |
| `CommerceModule.authenticate` | 0.37.0 | unreleased | `client.auth.authenticate` | 1.0.0 or 2.0.0 |
| `CommerceModule.getActivePaymentMethods` | 0.37.0 | unreleased | `client.store.activePaymentMethods` | 1.0.0 or 2.0.0 |
| `CommerceModule.getActiveShippingMethods` | 0.37.0 | unreleased | `client.store.activeShippingMethods` | 1.0.0 or 2.0.0 |
| `CommerceModule.getCapabilities` | 0.37.0 | unreleased | `client.store.capabilities` | 1.0.0 or 2.0.0 |
| `CommerceModule.getNextOrderStates` | 0.37.0 | unreleased | `client.orders.nextStates` | 1.0.0 or 2.0.0 |
| `CommerceModule.setOrderCurrency` | 0.37.0 | unreleased | `client.checkout.setCurrency` | 1.0.0 or 2.0.0 |
| `CommerceModule.setOrderCustomFields` | 0.37.0 | unreleased | `client.checkout.setOrderCustomFields` | 1.0.0 or 2.0.0 |
| `CommerceModule.subscribeToStockNotification` | 0.37.0 | unreleased | `client.commerce.requestStockNotification` | 1.0.0 or 2.0.0 |
| `CommerceModule.transitionOrder` | 0.37.0 | unreleased | `client.orders.transition` | 1.0.0 or 2.0.0 |
| `CommerceModule.unsetBillingAddress` | 0.37.0 | unreleased | `client.checkout.unsetBillingAddress` | 1.0.0 or 2.0.0 |
| `CommerceModule.unsetShippingAddress` | 0.37.0 | unreleased | `client.checkout.unsetShippingAddress` | 1.0.0 or 2.0.0 |
| `createCommerceAdminClient` | 0.37.0 (the runtime notice; the editor tag since 0.25.0) | unreleased | `createAdminClient` from `@sixtyninecommerce/admin` | 1.0.0 or 2.0.0 |
| `createRevalidateHandler` | 0.23.0 | 2026-09-10 | `createEventRevalidateHandler` | 1.0.0 |
| `extraOpenGraphTags` | 0.38.0 | unreleased | `headPropertyTags` | 1.0.0 or 2.0.0 |
| `FieldError` | 0.27.0 | 2026-09-16 | `ErrorDetail` | 1.0.0 |
| `NextCompatibleMetadata` | 0.38.0 | unreleased | `NextHeadMetadata` | 1.0.0 or 2.0.0 |
| `PricingModule.validateOrderMinimums.constraints.minOrderAmount` | 0.10.0 | 2026-07-09 | `minOrderAmountGross` | 1.0.0 |
| `ProductListOptions.collectionSlug` | 0.17.0 | 2026-07-31 | `getProductsInCollection(slug, options)` | 1.0.0 |
| `ProductListOptions.enabled` | 0.17.0 | 2026-07-31 | `filter` (leave `enabled` out) | 1.0.0 |
| `RevalidateHandlerOptions` | 0.23.0 | 2026-09-10 | `EventRevalidateHandlerOptions` | 1.0.0 |
| `RevalidateWebhookPayload` | 0.23.0 | 2026-09-10 | `PlatformEventEnvelope` (`@sixtyninecommerce/client/events`) | 1.0.0 |
| `SeoModule.metaFor` | 0.38.0 | unreleased | `seo.resolve` | 1.0.0 or 2.0.0 |
| `SeoModule.metaTagsFor` | 0.38.0 | unreleased | `seo.resolve` | 1.0.0 or 2.0.0 |
| `SeoModule.robotsDirectiveFor` | 0.38.0 | unreleased | `seo.resolve` | 1.0.0 or 2.0.0 |
| `StorefrontClient.graphql` | 0.31.0 | 2026-10-08 | `commerce.getProductById`, `checkout.setCurrency`, `store.capabilities` and the other typed methods (the editor's tag names one per use) | 1.0.0 |
| `toNextMetadata` | 0.38.0 | unreleased | `resolveMetadata` | 1.0.0 or 2.0.0 |
| `validateOrderMinimums.constraints.minOrderAmount` | 0.10.0 | 2026-07-09 | `minOrderAmountGross` | 1.0.0 |

`Symbol` is the declaration path in the source: an interface member is `Interface.member`, a
function's parameter field is `function.parameter.field`. `Deprecated in` is the first release
that carried the notice; "0.37.0" is the release this regroup ships in, set when its changeset was
written. `Notice published` is the day that release was versioned onto `main` (its Version PR
merge, which publishes it), or `unreleased`. The inventory spec holds `Removed in` to it: `1.0.0`
only for a notice at least 60 days old on 2026-12-07, otherwise `1.0.0 or 2.0.0`.
