Skip to main content

New compare and swap syntax for the inventorySetQuantities mutation

This changelog is relates to concurrency protection features.

We're making the changeFromQuantity field introduced in 2026-01 mandatory and removing the compareQuantity and ignoreCompareQuantity fields for the inventorySetQuantities mutation.

This is a breaking change. Note that even though the changeFromQuantity field doesn't show up as mandatory at the schema level, calling these mutations without passing in null or passing in the current actual quantity will result in an error at runtime.

What you need to do

Before migrating to version 2026-04, update your application logic to include the changeFromQuantity argument:

  • To enable concurrency checks (Recommended): Pass the expected current quantity.
  • To opt-out (skip checks): Explicitly pass changeFromQuantity: null

Additionally, before migrating, you must remove the ignoreCompareQuantity argument and the compareQuantity argument from your mutation calls.

How to use the field

Previously, to bypass comparison checks, you set ignoreCompareQuantity to true.

Now, to bypass comparison checks, you explicitly pass null to the changeFromQuantity field. To enable checks, pass an integer that represents the initial quantity before it is updated to the desired value.

In the following example, the operation will only successfully set the new available quantity to 12 if the current available quantity is 5. If another process has modified the quantity in the meantime, you'll receive an error and can retry with the updated value.

  mutation {
    inventorySetQuantities(
      input: {
      quantities: [
        {
          quantity: 12,
          inventoryItemId: "gid://shopify/InventoryItem/2",
          locationId: "gid://shopify/Location/1",
          changeFromQuantity: 5
        }
      ],
      reason: "correction",
      name: "available"
    }
    ) {
      inventoryAdjustmentGroup {
        id
      }
      userErrors {
        code
        message
      }
    }
  }

Removing legacy fields

The compareQuantity and ignoreCompareQuantity fields will be removed in version 2026-04.

For more information on compare and swap, and when you should opt out of comparison checks, refer to our docs. We encourage users to avoid opting-out unless it's justified by their use-case.

Was this section helpful?