Developer changelog
Subscribe to the changelog to stay up to date on recent changes to Shopify’s APIs and other developer products, as well as preview upcoming features and beta releases.
RSS updatesThere are no entries for your filter criteria.
October 30, 2024
Metaobject and metaobject_list theme settings now available Themes
We've added two new theme setting types: metaobject
and metaobject_list
so theme and app developers can write sections and blocks that consume metaobjects of a specified type.
For theme store themes, developers must only use standard metaobject definitions since custom metaobject definitions are unique to a store.
Learn more about the new metaobject
and metaobject_list
theme settings on Shopify.dev.
October 30, 2024
Hydrogen October 2024 release Platform
Hydrogen v2024.10.0 is out today. The October 2024 Hydrogen release supports the 2024-10 Storefront API and contains several optimizations and bug fixes, including:
- Cart
warnings
support (#2572) - Product option updates (#2538)
- Hydrogen supports worker compatibility date (#2380)
- Shopify cookie banner no longer is the default set up in skeleton (#2588)
- Update
createWithCache
(#2546) - Release stable sitemaps utility functions (#2589)
- Decode product variant encoding functions (#2425)
- Route warnings (#2613)
- Analytics fixes (#2538)
- Optimistic cart banner (#2502)
- Aside improvements (#2503)
- Use datalist for query suggestions (#2506)
- Remove unstable re-exports from remix-oxygen package (#2551)
- Update MiniOxygen to latest workerd version (#2567)
<Image/>
local asset fix (#2573)- Update
<ProductPrice>
to remove deprecated code usage forpriceV2
andcompareAtPriceV2
. Remove export forgetCustomerprivacy
(#2601) - Remove deprecated
--worker
Shopify CLI flag (#2603) - Allow generated codegen files to be placed anywhere in the directory (#2600)
- Add optional headers param for customer logout redirect (#2602)
Check out our full Hydrogen October 2024 release blog post for more details. And please drop your comments, feedback, and suggestions in GitHub Discussions!
October 28, 2024
Action required
Change to metafield type handling in liquid Themes
Effectively immediately, metafields without a type
value will return "string" instead of blank
. For example, this check will no longer be true
liquid
{% if metafield.type == blank %}
This will no longer render.
{% endif %}
Instead, a value of string
will be returned:
liquid
{% if metafield.type == 'string' %}
This metafield is of type `string`.
{% endif %}
October 28, 2024
Action required
Updates to Theme Information Access in Shopify Themes
Action Required:
Developers currently using the BOOMR variables for theme identification and customization should begin transitioning to window.Shopify.theme
properties. The BOOMR variables will be removed on 31/01/2025, after which window.Shopify.theme.schema_name
and window.Shopify.theme.schema_version
should be used exclusively.
Deprecation of BOOMR Script:
The BOOMR (Boomerang) JavaScript library was used for collecting Web Performance data on storefronts and it’s now been replaced with a leaner and more conformant library.
Some theme and app developers had been relying on a few variables set by BOOMR. These variables include:
- BOOMR.themeName
- BOOMR.themeVersion
These variables will continue to be available until 31st Janurary 2025, allowing developers to transition to the new method of accessing theme information.
Introduction of Enhanced Theme Information on window.Shopify.theme:
In response to developer feedback, we are enhancing the window.Shopify.theme
object. Starting today, it will include two new properties:
- schema_name
: Reflects the name
attribute from the theme's settings_schema.json
.
- schema_version
: Reflects the version
attribute from the theme's settings_schema.json
.
These additions aim to provide a standardized and reliable method for accessing theme information directly from the Shopify global object.
October 28, 2024
Web pixels now support checkout error events API
We’re rolling out new standard events to web pixels that enable you to better understand the issues that buyers encounter in checkout. Merchants can now capture specific alerts seen by buyers, such as inline field validations and page-level alerts, and errors from Checkout UI Extensions. Any pixels subscribing to all standard events will automatically receive these new types.
Learn more about the new events here.
October 28, 2024
Action required
Breaking Changes to CAPTCHA protection on Storefront forms Platform
From the week commencing 28th October 2024, the following changes to CAPTCHA protection will occur:
Classic Customer Accounts: Removal of the /challenge
page for Login, Create Account and Reset Password flows
If hCaptcha is enabled in Admin for these forms, they will now require a valid hCaptcha token as part of the form submission, otherwise a 400 error response will be returned.
Form submissions that fail the hCaptcha assessment will also return a 400 error response.
The vast majority of form submissions already comply with this requirement, due to hCaptcha being automatically wired up to forms with the correct markup. More information is available in the dev docs
Full deprecation of reCAPTCHA on Storefront forms
The recent migration to hCaptcha on all Storefront forms is now complete. Applications or themes that have bespoke code that submits a reCAPTCHA v3 token (site key 6LeHG2ApAAAAAO4rPaDW-qVpPKPOBfjbCpzJB9ey
) will need to update to use hCaptcha. All form submissions containing a recaptcha-v3-token
field will result in a 400 error response.
Again, the vast majority of form submissions already comply with this requirement. If you application or theme invokes the reCAPTCHA api directly, ie via methods on window.grecaptcha
then you will need to make changes. More information on wiring forms with hCaptcha using methods supported by Shopify is available in the dev docs
October 24, 2024
Action required
Update to fulfillmentHold.heldByApp
field from fulfillmentHold.heldBy
field
API
As of the 2025-01
API version, the heldBy
string field on the fulfillmentHold
GraphQL object will be replaced by the newly introduced heldByApp
object field.
This new field provides access to all attributes of the App object, unlike the deprecated heldBy
field, which only indicated the app's title.
If you currently query fulfillmentHold.heldBy
, you should transition to querying fulfillmentHold.heldByApp.title
.
October 21, 2024
Limit for full-page extensions in customer accounts API
A full-page extension target (customer-account.page.render
or customer-account.order.page.render
) can no longer coexist with any other targets in the same extension. This change improves performance and provides a better merchant experience in the checkout and accounts editor. If your full-page extension is best used with other extensions in your app, create an editor extension collection to encourage merchants to add all the extensions in the collection.
This change will only impact the deployment of new extensions or new versions of existing extensions. Existing extensions will not be affected until a new version is deployed.
October 17, 2024
Built for Shopify update to grace period for programmatically assessed criteria Shopify App Store
The grace period for the following criteria have been extended to 60 days from the current 30:
- Minimizes impact on store speed
- Minimizes impact on checkout speed
- Admin performance: meets 75th percentile Web Vitals targets
- Minimum number of installs
- Minimum number of reviews
- Minimum app rating
The grace period for Fulfillment services and Carrier services criteria will also be set to 60 days when enforcement begins.
October 16, 2024
Storefront API Cart now supports removing Gift Cards API
As of version 2025-01 of the GraphQL Storefront API, Cart now supports removing Gift Cards by Id.
After a cart has been created and a Gift Card applied - perform the cartGiftCardCodesRemove
mutation to remove one or more gift cards.
October 15, 2024
Action required
Shopify App Store apps require the latest App Bridge Shopify App Store
Starting October 15th, 2025, all Shopify App Store apps that appear in the Shopify admin must use the latest Shopify App Bridge by adding the app-bridge.js
script tag to the <head>
of each document of your app.
October 14, 2024
API StringConnection
includes nodes
field
API
As of API version 2025-01
, you can access StringConnection.nodes
field shorthand to retrieve an array of strings directly instead of via edges
. This connection type is now consistent with other connection types in the schema.
Learn more about StringConnection
on GraphQL Admin API and Storefront API.
October 11, 2024
Deep link to editor extension collections Platform
You can now deep link to editor extension collections in the checkout and accounts editor. This is only available on development stores.
When editor extension collections are released to merchants, you can start deep linking to editor extension collections from your app onboarding to streamline the merchant experience.
Learn more on Shopify.dev
October 11, 2024
Checkout UI extensions - Extensions in the reductions render before/after targets will now render in the header order summary on 1 page mobile checkouts API
As of October 11, 2024, checkout UI extensions targeting the purchase.checkout.reductions.render-before
and purchase.checkout.reductions.render-after
extension targets will now render in the order summary at the top of the page for one page mobile checkouts. Previously, extensions in these targets would only appear in the order summary at the bottom of the page. This will apply to checkout UI extensions on all API versions.
For more details, please follow up in the github issue in our public repo
October 10, 2024
Shopify Payments Payout Summary GraphQL surfaces advance fees and advance gross fields API
As of GraphQL Admin API version 2024-10, ShopifyPaymentsPayoutSummary now surfaces ADVANCE_FEES
and ADVANCE_GROSS
fields.
Learn more about ShopifyPaymentsPayoutSummary
on Shopify.dev.
October 10, 2024
Shopify Function resource limits now scale with cart size Platform
Certain Shopify Function resource limits now scale proportionally to the number of line items in the cart. Starting at 200 line items, your Shopify Function runs will be able to use more resources than before.
This change applies to all Shopify Function runs that include cart lines in their input query.
Learn more about dynamic resource limits and how they're calculated for Shopify Functions on Shopify.dev.
October 09, 2024
Install Attributions in Partners Merchant Export Shopify App Store
The merchant export in Partners now provides an "Attribution" column that specifies installs that are attributable to Shopify App Store ad clicks. For more information on the Partners merchant export, see here
October 07, 2024
Built for Shopify 2025 Admin performance and Carrier services criteria Shopify App Store
The 2025 versions of the admin performance and carrier services criteria are now displayed in the Partner Dashboard distribution page along with the rest of the Built for Shopify automated criteria. Carrier services criteria will only be visible to those using the related API.
October 07, 2024
lineItem
connection is no longer deprecated on FulfillmentOrderLineItem
resource
API
As of today, you can use the lineItem
on FulfillmentOrderLineItem
without planning for deprecation. This applies to all API versions.
Learn more about FulfillmentOrderLineItem.lineItem
on Shopify.dev.
October 07, 2024
Updated CalculateExchangeLineItemInput and CalculatedExchangeLineItem Variant nullability API
As of Admin GraphQL API 2025-01
version, CalculateExchangeLineItemInput.variantId
and CalculatedExchangeLineItem.variant
fields are nullable at schema level.
This is in preparation of future feature changes. In the current state CalculateExchangeLineItemInput.variantId
will still be validated via a returned error if not present.
Learn more about CalculateExchangeLineItemInput and CalculatedExchangeLineItem.
October 04, 2024
Add accountOpenerName
to shopifyPaymentsAccount
API
As of GraphQL Admin API version 2025-01, the accountOpenerName
field will be added to shopifyPaymentsAccount
October 02, 2024
Bulk query operation userErrors now includes code field API
As of version 2025-01, the Admin API bulk query operation userErrors
GraphQL type will change to BulkOperationUserError
. The new type includes the same fields as the old type, with the addition of a code
field.
October 01, 2024
Shopify Payments Balance Transaction GraphQL type supports advance and advance funding type API
As of GraphQL Admin API version 2024-10, ShopifyPaymentsTransactionType now includes ADVANCE
and ADVANCE_FUNDING
type.
Learn more about ShopifyPaymentsTransactionType
on Shopify.dev.
October 01, 2024
Exposing Business Entity fields on Admin API API
As of GraphQL Admin API version 2024-10, Business Entity attributes will be available for use as a GraphQL object and across relevant types.
You will now be able to query for properties related to the Business Entities that are enabled on your shop and request for these fields on objects that can be associated to a Business Entity.
Business Entity identifiers will also be available on the Order REST Admin API version 2024-10 as well as on webhook payloads.
October 01, 2024
Shopify Payments GraphQL Admin API supports querying a list of disputes API
As of GraphQL Admin API version 2024-10, querying for all disputes for a given shop will be available for use as a GraphQL connection.
Learn more about ShopifyPaymentsDispute
on Shopify.dev
October 01, 2024
Added variant_strategy
for productOptionsCreate
API
In the version 2024-10 release of the Admin GraphQL API, the productOptionsCreate
mutation will include a variantStrategy
parameter, enhancing control over variant management when adding new product options. This new parameter allows for two strategies:
LEAVE_AS_IS
: Maintains existing variants, updating them to include new option values without creating new variants as necessary.CREATE
: Generates new variants for all possible combinations of option values. This enhancement allows for more precise control over product variant configuration and inventory management.
For more detailed information and examples, visit our productOptionsCreate documentation on Shopify.dev.
October 01, 2024
Adding requiresComponents
field to ProductVariantsBulkInput
API
As of the 2024-10 version of the GraphQL Admin API, the requiresComponents
field available in ProductVariantInput
has been added to ProductVariantsBulkInput
.
This field allows variants to be marked as bundles that require components in order to be sold.
Learn more about requiresComponents
and ProductVariantsBulkInput
on Shopify.dev.
October 01, 2024
New CollectionsCount
query in the GraphQL Admin API
API
As of 2024-10
version, we are adding CollectionsCount
query to the Admin GraphQL API.
Learn more about CollectionsCount on Shopify.dev.
October 01, 2024
Metafield Definition Webhooks API
As of GraphQL Admin API Version 2024-10, you can subscribe to MetafieldDefinition changes under the webhook topics metafield_definitions/create
, metafield_definitions/update
, and metafield_definitions/delete
October 01, 2024
Action required
Starting April 2025, new public apps submitted to Shopify app store must use GraphQL Tools
GraphQL is now the primary API to interact with the Shopify admin. REST Admin API will be marked as legacy, and new feature development and improvements will be focused on GraphQL.
April 1 2025: All new apps will default to GraphQL
- Organizations created after this date will only be permitted to use GraphQL for their custom apps
- All new public apps submitted to the App Store after this date must only use GraphQL
Migration timelines for existing apps (outside of the required migration to the new GraphQL product APIs that have already been announced), will be announced in 2025. We will make sure ample time is provided for a smooth transition.
Learn more about Shopify’s API strategy and direction into GraphQL.
October 01, 2024
Theme Store ranking update Themes
As of October 1st, 2024 we have update the Theme Store algorithm. This new ranking system will refine how themes are discovered, prioritizing factors like recency, quality, and trust signals to help merchants find themes more effectively.
October 01, 2024
ShopifyPaymentsBankAccount GraphQL Admin API unused fields removed API
As of GraphQL Admin API version 2025-01, we're cleaning up the shopifyPaymentsBankAccount
endpoint and removing several unused fields.
October 01, 2024
Storefront API support for Combined Listings API
Merchants using the Storefront API can now offer Combined Listings with Shopify. The Shopify Combined Listings app is available to merchants on Plus plans, helping merchants better merchandise products that come in multiple variations such as colors, materials or lengths, all from the same product listing.
Learn more about the Shopify Combined Listings app in the Shopify Help Center.
October 01, 2024
Added new field recurring_cycle_limit
and applies_on_subscription
to DiscountAutomaticApp and DiscountAutomaticAppInput
API
As of 2024-10
, you can use the recurring_cycle_limit
and applies_on_subscription
field on the DiscountAutomaticApp object type so that subscriptions can use function based discounts for a specified number of occurrences
Learn more about DiscountAutomaticApp
on Shopify.dev.
October 01, 2024
New has_variants_that_requires_components
field on Product Webhooks
API
As of 2024-10, the product create and update webhook payloads contain information indicating if the product has a variant that is a product bundle.
The new boolean field, has_variants_that_requires_components
, mirrors what is already available on the Product GraphQL response.
To receive has_variants_that_requires_components
in the webhook payload, specify 2024-10 or greater as the webhook API version in your App Partner Dashboard.
Learn more about Product Bundles.
October 01, 2024
New field and queries for the StaffMember
object in the GraphQL Admin API
API
The 2024-10
version of the GraphQL Admin API brings improvements to the StaffMember
object:
- New
accountType
field. - You can retrieve the staff member making the API request with the
currentStaffMember
query. - You can list all staff members with the
staffMembers
connection query. Shop.staffMembers
was deprecated in favor of thestaffMembers
query.
This allows apps using the User
REST Admin API resource to migrate to GraphQL's StaffMember
object.
October 01, 2024
Action required
Removal fulfillment service shipping method API
As of 2024-10, you can no longer use the deprecated shippingMethods
field on the fulfillmentService
query or include it as an argument in the fulfillmentOrderSubmitFulfillmentRequest mutation
.
The shipping method associated with the fulfillment service provider applied only to Fulfill By Amazon fulfillment service. The Fulfillment by Amazon feature is not supported as of March 30, 2023. To continue using Amazon fulfillment, merchants need to set up a Multi-Channel Fulfillment solution recommended by Amazon.
To learn more see https://help.shopify.com/manual/shipping/fulfillment-services/amazon#activate-fulfillment-by-amazon
October 01, 2024
New mutation to create an order API
As of GraphQL Admin API 2024-10 version, you can make use of a new mutation to create an order.
Learn more about orderCreate
on Shopify.dev.
October 01, 2024
POS UI Extensions 2024-10 Update API
As of October 1, we added the following updates to POS UI Extensions:
- Added support for iOS debugging with the Safari dev tools.
- Added support for the
pos.product-details.block.render
target. - Added support for the
pos.purchase.post.block.render
target. - Added support for the
pos.order-details.block.render
target. - Added support for the
pos.customer-details.block.render
target. - Introduced a
POSBlock
component. It's the required parent component for block extension targets. - Introduced a
POSBlockRow
component. It's the required child component forPOSBlock
, and can be used to wrap other components. - Deprecated the
ActionItem
component. Please use theButton
component instead. - Added support for windowed modals.
All of the changes are available for POS UI extensions version 2024-10 and POS app version 9.19.0. See the version log for all version details.
October 01, 2024
Action required
Fulfillment Constraints can now be associated with one or multiple delivery methods API
You can now associate a Fulfillment Constraint function with one or multiple delivery method types. The function will only run within the context of those specific delivery methods.
As of Admin GraphQL API version 2024-10
and unstable
, you can
- Use the FulfillmentConstraintRuleCreate mutation to register your new Fulfillment Constraint function and associate it with one or multiple delivery methods. A new required input field
delivery_method_types
will be added. - Use the FulfillmentConstraintRuleUpdate mutation to update delivery method(s) for an existing registered function.
Existing fulfillment constraint functions will continue to run for SHIPPING
, LOCAL
and PICKUP_POINT
.
October 01, 2024
Fulfillment Constraints now support Local Pickup API
As of Admin GraphQL API version 2024-10
and unstable
, you can setup your Fulfillment Constraint function to run for Local Pickup delivery method.
Use the FulfillmentConstraintRuleCreate mutation to register your new Fulfillment Constraint function with the PICK_UP
delivery method.
Or, use the FulfillmentConstraintRuleUpdate mutation to update your existing registered function to include PICK_UP
.
October 01, 2024
Admin API update on fulfillmentOrder.destination
and FulfillmentOrderDestination
object
API
Breaking Changes
As of the Admin API version 2024-10 and unstable release, fulfillmentOrder.destination
will return a FulfillmentOrderDestination
object instead of null
for fulfillment orders lacking an associated shipping address. In such cases, the address related fields within the FulfillmentOrderDestination
object will be set to null.
Non Breaking Changes
As of GQL Admin API version 2024-10 and unstable release, you can use new field fulfillmentOrder.destination.location
to retrieve the pickup location for the fulfillment order.
You can learn more about fulfillmentOrder.destination
here and fulfillmentOrderDestination
here
October 01, 2024
New CompanyLocationStaffMemberAssignments API endpoints for managing staff member assignments on a Company Location API
As of 2024-10, we've added a CompanyLocationStaffMemberAssignment
to the CompanyLocation
object for viewing the staff members assigned to the company location.
You can assign and remove staff members for a company location using the CompanyLocationAssignStaffMembers
and CompanyLocationRemoveStaffMembers
mutations.
October 01, 2024
Action required
Removal of the priceRule
resource from GraphQL Admin API
API
As of 2024-10
, the priceRule
resource is being removed. The queries and mutations have been deprecated since 2023-03
.
The discount resource can be used to achieve the same operations.
October 01, 2024
Action required
Breaking changes to returns API: Deprecate reverseDeliveryDispose
mutation
API
As of GraphQL Admin API version 2024-10, the reverseDeliveryDispose
mutation will be deprecated. Use the reverseFulfillmentOrderDispose
mutation instead.
Learn more about managing reverse fulfillment orders on Shopify.dev.
October 01, 2024
Notify customers when their return requests are approved or declined API
As of the 2024-10 API version, you can notify customers that their return request was approved or declined.
You can submit a notifyCustomer
argument when approving a return request using the returnApproveRequest
mutation.
You can also submit a notifyCustomer
argument when declining a return request using the returnDeclineRequest
mutation. To include a custom message to the buyer in the email notification, use the declineNote
argument.
When notifyCustomer
is true
, an email notification is sent to the Order.email
. If this field is null, the notification is not sent.
October 01, 2024
Action required
Exposing the order adjustments connection on a Refund API
As of the 2024-10 Admin GraphQL API, you can use the Refund.orderAdjustments
connection to query for the difference between calculated and actual refund amounts. The REFUNDS_CREATE
webhook topic will include order adjustments too. As of 2024-10, the webhook payload for REFUNDS_CREATE
will not include the kind
field.
Please note that the OrderAdjustment.kind
field is now deprecated in the Admin GraphQL API. It is also deprecated in the legacy refund.order_adjustments
resource in the Admin REST API.
For this reason, refunded shipping costs will not be included in the Refund.orderAdjustments
connection. To query for refunded shipping costs, use the Refund.refundShippingLines
connection instead. This connection has been updated as of July 18, 2024 to include refunded shipping costs; more info here. Refunded shipping costs will not be present in the webhook payload for REFUNDS_CREATE
as of 2024-10 for the same reason.
The OrderAdjustment.kind
field will be present on the unstable
API version for 6 months to allow apps to migrate to the 2024-10 API version.
October 01, 2024
Introducing Payment Groups and Sessions to SubscriptionBillingAttempts API
As of GraphQL Admin API version 2024-10, the SubscriptionBillingAttempt object will have two new fields: paymentgroupid and paymentsessionid.
This will allow your subscription apps to have better insights into how billing attempts correlate for merchant-facing statistics.
The payment group is defined as: - Attempts belonged to the same subscription contract identity. - The attempts were all failures, or ended in a success. If two sequential successes occur with all the same attributes, then they're treated as separate groups. It can be used for correlated retried billing attempts together.
The payment session for subscriptions is defined as: - Attempts used the same payment group - Attempts used the same payment method - Attempts used the same currency - Attempts were for the same amount We expect any merchant facing statistics regarding payment success rates to only show a single success or failure per paymentsessionid.
October 01, 2024
Introducing Session ID to StartPaymentSession API
As of Payments Apps API version 2024-10, the StartPaymentSession payload for all payment extension types will have one new field: session_id.
This identifier is shared across payment sessions that belong to the same payment group, buyer session, and share payment details. It can be used to power auth rate calculations.
October 01, 2024
Admin API includes discountNodesCount
API
As of Admin GraphQL API version 2024-10
, you can access the QueryRoot.discountNodesCount
field to retrieve the total count of discounts in the shop.
Learn more about discountNodesCount
on Shopify.dev.