All articles
Shopify Plus2 July 2026

Shopify deprecates useBuyerJourneyIntercept: what changes

With API version 2026-07, Shopify is deprecating the useBuyerJourneyIntercept hook and the block_progress capability in checkout UI extensions, forcing a move to server-side validation via Shopify Functions.

The change announced by Shopify

Blocking checkout progress on the client side has, until now, been a quick and widely used solution. With API version 2026-07, Shopify has made it clear that this approach is no longer sufficient.

The useBuyerJourneyIntercept hook and the block_progress capability, used in checkout UI extensions to interrupt the purchase flow, are now officially deprecated.

The deprecation doesn't mean an immediate shutdown: extensions using these APIs will keep working on current and previous API versions. However, final removal is already scheduled, and the migration path requires a real architectural change, not a simple patch.

Why the logic must move server-side

The core point of this deprecation is clear: validation logic must move from the client to the server.

This means that:

  • If useBuyerJourneyIntercept is used to block checkout progress — customer eligibility checks, cart content validation, merchant-specific business rules — the correct migration path is toward a cart and checkout validation Function.
  • If it's used instead to reject discount codes with a custom message, the recommended solution is the discount Function API, which now explicitly supports this scenario.

In both cases, the goal is to move business logic away from a UI extension running in the customer's browser, and into a Function executed server-side by Shopify.

Why this matters for Shopify Plus merchants

For those managing complex checkouts on Shopify Plus, this transition has concrete implications:

  • Functions run server-side and are applied consistently across all checkout surfaces, without depending on browser or device behavior.
  • Coverage also extends to express wallets like Shop Pay and Apple Pay, as well as agentic checkout scenarios, where client-side intervention isn't reliable.
  • UI-level validation could be bypassed, disabled, or simply not executed on certain purchase flows, creating a real risk to the integrity of business rules.
  • The shopify.extension.toml configuration file needs to be updated: the block_progress capability must be explicitly removed from the extension configuration.

This scenario is especially relevant for technical teams working on custom checkout development, often supported by specialized consulting to properly assess the architectural impact and related implementation costs, as outlined in the section on Shopify developer pricing.

What to do now

For those running Shopify Plus stores with custom checkout logic, it's advisable to act now, without waiting for the final removal of these APIs:

  • Inventory all extensions that use useBuyerJourneyIntercept or the block_progress capability.
  • Map out existing validation logic in detail, understanding which business rules are currently implemented client-side.
  • Plan the migration to Shopify Functions, distinguishing between cart/checkout validation logic and discount code handling.
  • Test behavior across all checkout surfaces, not just the standard flow, including express wallets and accelerated checkouts.

An opportunity to rethink the architecture

This deprecation shouldn't be seen merely as a technical obligation to meet before a deadline. It's an opportunity to rethink the entire checkout validation architecture, permanently moving critical logic to a more robust, secure server-side layer that's consistent across all purchase surfaces.

For teams managing complex checkouts on Shopify Plus, the time to act is now, before API removal turns this migration into an unplanned emergency.

FAQ

Frequently Asked Questions

They continue to work on current API versions and those prior to 2026-07. The deprecation doesn't cause an immediate disruption, but final removal is planned and requires a scheduled migration.

To block checkout progress based on customer eligibility, cart content, or business rules, the correct migration path is to a cart and checkout validation Function, executed server-side.

To reject discount codes with custom messages, you use the discount Function API, which now explicitly supports this scenario on the server side.