The pre-release notes for WooCommerce 11.1 have officially landed, outlining key platform changes, API enhancements, performance fixes, and accessibility improvements ahead of the final release on September 01, 2026. This release introduces dedicated functionality for European Union order withdrawal requirements, streamlines server-side REST API refund processing, and implements context-based block registration guards to eliminate overhead on non-rendering requests.
For extension developers and theme authors, WooCommerce 11.1 requires careful review of context assumptions, query structures, DOM updates, and deprecated utility methods. Below is an in-depth breakdown of the architecture updates, feature flags, and breaking changes shipped in this version.
EU Right of Order Withdrawal Flow and Configuration
To support compliance with European Union consumer protection standards, WooCommerce 11.1 introduces an end-to-end order withdrawal workflow for shoppers. The feature allows customers to initiate a formal request to withdraw from an order directly through an unauthenticated endpoint located at /my-account/withdraw-order/.
When a customer submits a withdrawal request via this form, WooCommerce automatically dispatches an email notification to the store merchant and generates an internal inbox notification within the WordPress admin dashboard to facilitate merchant follow-up.
Because store requirements vary by region, this functionality is opt-in and disabled by default. Store administrators and developers can enable the workflow by navigating to WooCommerce > Settings > Advanced > Features and toggling the order withdrawal setting.
REST API Refund Calculations and Store API Total Validation
WooCommerce 11.1 updates the administrative refund architecture within the REST API, shifting calculations away from client-side logic to server-enforced calculations.
Server-Side Refund Endpoints
When issuing a POST request to /wc/v3/orders/{id}/refunds, developers can now pass compute_totals: true inside the JSON request payload. When this flag is set, the server calculates itemized and total refund values automatically, eliminating the need for manual tax and line-item math in client integrations.
Additionally, a preview endpoint has been added at POST /wc/v3/orders/{id}/refunds/preview. This endpoint runs the complete calculation engine and returns the calculated output without creating a database record or applying the refund to the order.
Store API Total Safeguards
To prevent price drift or race conditions during checkout, Store API checkout endpoints now accept an optional integer field named expected_total. This value represents the total order cost presented to the buyer in the frontend interface.
If the calculated backend cost differs from the submitted expected_total during request execution, the Store API rejects the transaction and responds with an HTTP 409 Conflict status code and a woocommerce_rest_checkout_total_mismatch error code. This mechanism is integrated natively into the WooCommerce Checkout block.
Block Registration Performance via Context Guards
Prior to version 11.1, WooCommerce registered block types and patterns on almost every incoming request, including system operations where blocks were never evaluated or rendered. WooCommerce 11.1 introduces a BlockRegistrationContext guard system (PR #65781) to eliminate this unnecessary overhead.
Under the new guard mechanism, block and pattern registration is automatically skipped during:
- WordPress Cron tasks (
wp-cron.php) - AJAX requests
- REST API calls
Block registration remains fully active across standard frontend page loads, the WordPress admin interface, and block editor contexts. Extensions or custom integrations that rely on block types being registered globally during REST or AJAX requests must adjust their code. Developers can force block registration in skipped contexts using the new woocommerce_should_register_blocks filter:
add_filter( 'woocommerce_should_register_blocks', function( $should_register ) {
if ( my_custom_condition() ) {
return true;
}
return $should_register;
} );
Variable Product Query Optimization and Performance Fixes
WooCommerce 11.1 addresses database bottlenecks related to high-cardinality variable products. A collection of pull requests (PRs #66084, #66675, #66774, #67152, #66875) eliminates N+1 query patterns that previously occurred when resolving variation attributes and variations in both the block editor and frontend views.
These updates also optimize query volume executed during price caching routines. Sites managing extensive variable product catalogs will observe reduced query counts per page load and lower database load during administrative edits and store browsing.
Experimental Unified Block Editor Assets and Video Storage
WooCommerce 11.1 includes two major features behind experimental feature flags, allowing developers to test upcoming infrastructure ahead of general availability.
Unified Block Editor Assets
The unified block editor assets feature (PRs #66200, #67055, #67365) consolidates individual, per-block scripts and stylesheets into shared core bundles for the block editor. Benchmarks collected during testing demonstrated:
- A 91.7% reduction in the number of individual editor asset requests.
- A 48.3% reduction in overall network transfer size.
- A 62.3% reduction in editor CSS bundle sizes.
When enabled via WooCommerce > Settings > Advanced > Features > Experimental features, WooCommerce blocks register under the single wc-block-library JavaScript handle and wc-block-library-style CSS handle. Legacy per-block handles remain registered as lightweight placeholders that trigger a deprecation warning if enqueued directly. Frontend asset delivery remains unchanged.
Product Gallery Video Storage
Initial storage architecture for product gallery video integration is included behind a feature flag (PR #65396). Developers can opt in to test video gallery storage structures by navigating to WooCommerce > Settings > Advanced > Features > Product gallery videos (Beta).
Email Editor Block Embeds and Escaping Callbacks
The WooCommerce Block Email Editor receives updates to embed handling and personalization tag rendering (PRs #66968, #66937, #67079, #66801, #66727).
- Supported Embed Providers: The
core/embedblock can now be inserted into email templates for providers offering clickable thumbnail views, including YouTube, Vimeo, VideoPress, TikTok, Dailymotion, and standard WordPress link cards. Audio providers are explicitly excluded. - Fallback Behavior: Enqueueing or pasting embeds from unsupported providers displays an editor warning and falls back to rendering a text link in the delivered email.
- Context-Aware Tag Escaping: Personalization tag callbacks now receive an optional destination content type parameter (e.g.,
HTML,plain text, orhref). The parameter defaults toHTML, and automatic context escaping applies by default to newly registered text-typed tags.
Product Import/Export Bug Fixes and Media Storage Adjustments
The built-in Product CSV Importer and Exporter includes targeted fixes across PRs #66903, #66213, #66946, #66205, and #66295:
- Preserves taxonomy terms and categories when re-uploading existing store products.
- Correctly clears image associations when specified by the CSV file payload.
- Respects defined store currency settings during data parsing.
- Improves variation generation logic when parent products already exist in the database.
Developer Advisories: REST Routing, Order Items, and Deprecations
Several underlying functions and data structures have been updated, requiring attention from plugin and theme developers:
- REST Request Detection:
is_rest_api_request()(PR #66816) now checks for non-empty?rest_route=query parameters. Previously, the helper only recognized REST requests structured with pretty permalinks under/wp-json/. - Gallery Deprecations:
ProductGalleryUtils::get_product_gallery_image_count()is deprecated (PR #66550). It remains available as a compatibility shim emitting a deprecation notice and pointing developers toget_product_gallery_media_count(). - Order Item Variation Logic: Calling
WC_Order_Item_Product::set_product()now resets the internalvariation_id(PRs #66734, #67343). Partial REST order updates retain existing variation IDs if the rootproduct_idremains unchanged. Passing an explicitvariation_id: 0demotes the order line item to a standard parent product. - Global JS Namespaces: The
@woocommerce/entitiespackage no longer exposes internal utility methods on the globalwindow.wc.wcEntitiesobject (PR #66978).
Analytics Endpoints, Search Logic, and Accessibility Updates
WooCommerce 11.1 introduces essential infrastructure fixes spanning admin performance, database query parsing, and accessibility standards:
- Analytics Endpoint Consolidation: A new endpoint,
GET /wc-analytics/activity-panel/counts(PR #66276), combines three previous endpoint queries into a single call. This reduces admin header requests from six to one per page load. - Analytics Caching Privacy: Analytics page outputs no longer emit request-derived properties (PR #67003), preventing cached admin pages from exposing request data across different user sessions.
- Product Search Logic: The
search_products()utility (PR #67420) now wraps its inner OR-group disjunction in parentheses. This ensures that parameters such asinclude,exclude,status, andtypeapply universally across all query clauses, modifying returned result sets where disjunctions previously caused loose scoping. - Quantity Stepper Accessibility: The DOM order of the quantity stepper component now matches its visual display order, resolving WCAG 1.3.2 and WCAG 2.4.3 accessibility violations (PR #66670). Theme developers with CSS rules relying on the previous DOM node order should test and update their selectors accordingly.
- Currency Symbol Updates: Default currency symbols have been updated for the Macanese Pataca (MOP changed from
PtoMOP$) and the Zambian Kwacha (ZMW changed fromZKtoK). Custom symbol override filters remain unaffected.
Frequently asked questions
When will WooCommerce 11.1 be released?
WooCommerce 11.1 is scheduled for its final release on September 01, 2026, following its beta testing phase.
How do merchants enable the EU order withdrawal feature?
Order withdrawal is disabled by default. Store administrators can enable it by going to WooCommerce > Settings > Advanced > Features in the WordPress admin panel.
How do REST API refund calculations work in WooCommerce 11.1?
By passing compute_totals: true in the POST request body to /wc/v3/orders/{id}/refunds, WooCommerce calculates refund totals on the server. Developers can also preview calculations without committing them using POST /wc/v3/orders/{id}/refunds/preview.
Why are my extension's blocks not registering during REST or AJAX requests?
WooCommerce 11.1 introduced BlockRegistrationContext, which skips block and pattern registration on non-rendering requests (cron, AJAX, and REST API) to improve performance. You can use the woocommerce_should_register_blocks filter to re-enable block registration for specific contexts.
What function replaces get_product_gallery_image_count()?
ProductGalleryUtils::get_product_gallery_image_count() has been deprecated in favor of get_product_gallery_media_count().
Primary reference: Review the original announcement for exact release details. This article is an independent explanation and does not reproduce the source text.