WooCommerce 9.7 has been released on February 25, 2025. This post highlights what’s new in this version of WooCommerce.
See our update guide.
Download directly from WordPress.org.
Other important information:
This release does not include a database update.
- See more advisories and security updates
What’s coming in 9.7
New shipping method display
Add description and delivery time to shipping methods in the Cart and Checkout block #49643
We have improved the shipping method selection interface in the Checkout block so that extension developers can define a description and delivery time for each shipping method. We have added two new properties to the data of a WC_Shipping_Rate
: delivery_time
and description
.
The values for the delivery_time
and description
will be surfaced in the shipping options selector and the cart block sidebar. In the sidebar, only the delivery_time
value will be shown, in the interest of saving space.
New properties in shipping options selector

Cart block sidebar view with calculator

To leverage this new functionality, you will need to use the woocommerce_package_rates
filter. Checkout the example below 
add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
foreach ( $rates as $rate_id => $rate ) {
if ( 'flat_rate' === $rate->method_id ) {
$rate->description = 'This is a custom description for ' . $rate->label . '.';
$rate->delivery_time = 'This will be delivered in 1 day.';
}
if ( 'free_shipping' === $rate->method_id ) {
$rate->description = 'This is a custom description for ' . $rate->label . '.';
$rate->delivery_time = 'This will be delivered in 3 days.';
}
}
return $rates;
}, 10, 2 );
Faster block editor performance
We’ve completed a significant refactor of the product block registration system, specifically around the registerProductBlockType
function (previously known as registerBlockSingleProductTemplate
). This function is crucial as it handles block registration for product related blocks on the Single Product template. It also ensures they are also available in the post/page editor with ancestor constraints on product specific blocks such as the Product Collection block, Single Product block and so forth.
One of the most impactful improvements is performance. Instead of maintaining individual store subscriptions for each block, the new implementation consolidates them into a single subscription, significantly reducing overhead. The refactored system reduces subscription callbacks by 99% and cuts execution time by 75% when working with Single Product templates and product-related blocks. Our benchmarks show dramatic gains:
- Previous implementation (
registerBlockSingleProductTemplate
)- 4,550 subscription callbacks triggered on initial load of the Single Product template in the Site Editor
- Total execution time: 2.47s
- New implementation (
registerProductBlockType
)- Only 24 subscription callbacks for the same test
- Total execution time: 0.63s
Additionally, the old implementation did not unsubscribe callbacks, leading to persistent execution overhead during Site Editor interactions. This has now been addressed, improving both performance and efficiency.
Enhanced Add to Cart with Options block
Add to Cart with Options: Add Stepper option #48876
Single product template before and after adding the stepper layout option
The Add to Cart with Options block, which is part of the single product template, now includes a sleek stepper layout for quantity selection. You can now enable this new layout option through the block’s Quantity Selector settings, providing a more streamlined purchasing experience for end customers.
Navigate to your Site Editor > Templates > Single Product Template > Add to Cart with Options block to try out the new feature. The “Quantity Selector” option on the Add to Cart with Options block will now give you the option to choose between the stepper and traditional layout.
More new features and updates
Enhanced Product Variations API
The WooCommerce REST API now offers more powerful filtering capabilities for product variations. Developers can use new parameters to filter variations by status (include_status
, exclude_status
), virtual status (virtual
), and downloadable status (downloadable
), enabling more precise and efficient product queries.
The List all product variations endpoint now supports several new parameters that enable more granular product filtering 
include_status
: Include product variations with specific status values.exclude_status
: Exclude product variations with certain status values.
Product Features
downloadable
: Filter product variations based on whether they are downloadable.
virtual
: Filter product variations based on whether they are virtual.
Smarter Store Notice handling
Disable the Store Notice when switching to a block theme #54288
The Store Notice feature will now be automatically disabled when switching to a block theme and automatically enabled when switching to a classic theme, only if it had been enabled previously.
This feature is only accessible through the Customizer (/wp-admin/customize.php
) and it was a source of confusion for block theme users. Read more 
Deactivating it required reverting to a classic theme or directly accessing the Customizer through its URL, as it couldn’t be easily managed from the Site Editor UI in block themes.
In short, this ensures that the Store Notice is automatically disabled when switching to a block theme and restored when switching back to a classic theme—maintaining a seamless experience for merchants.
First looks
Below you’ll find features that are still in beta, or are only partially rolled out. Help us build a better product by testing and sharing feedback for these features.
Modernized payment settings
We are continuing to roll out improvements for the modernized payments settings page. WooCommerce 9.7 introduces our new React-based Payments settings interface, initially rolling out to 50% of new stores. Learn more about this modernization effort in our technical announcement post.
This release includes updates to the look and feel of the Payments settings page, as well as the introduction of an “Official” badge. This badge highlights extensions that are developed in collaboration between the service provider and WooCommerce, ensuring they meet our marketplace guidelines for security, performance, compatibility, user experience, and privacy. While extensions without this badge may follow their own development and support practices, all payment solutions remain welcome within WooCommerce, and merchants can choose the best fit for their needs.
If you would like to enable or disable this feature, you can pass true
or false
values to the reactify-classic-payments-settings
flag. See the example below force-enabling the feature 
add_filter( 'woocommerce_admin_get_feature_config', function( $features ) {
return array_merge(
$features,
[
'reactify-classic-payments-settings' => true,
]
);
}, 999 );
Modernized Email Styling (Beta)
As we continue our work to modernize the WooCommerce email experience, this release introduces enhancements to user and order-related emails. We’d love to hear your thoughts! Join the discussion and share your feedback here.
Enable experimental feature by navigating to WooCommerce > Settings > Advanced > Features and turning on Email Improvements.
Checkout what we’ve added in this version 
Email previews are now more accurate than ever. In addition to including a more modern look and feel, email previews are now enhanced by including more data, so that store owners and site managers can better visualize what their email recipients will see.
User-related email previews (new account and password reset)
- Username now included for better clarity.
Order-related email previews (where applicable)
- Payment method added for transparency.
- Discount details displayed.
- Product variation information included.
- Customer notes now visible.
- Shipping method clearly specified.
API Updates
REST API
- [REST API] Improve product stock handling when managing orders #53618
- Introducing product type constants #53759
- Add the
downloadable
param to the list product variations endpoint #54242 - Introducing product status constants #53938
- Add the
virtual
param to the product variations endpoint #54245 - Add new
include_status
andexclude_status
filter on the products variations endpoint #54246 - Fix cart and checkout page detection logic for edge cases #54340
- Reverting ProductStatus constants in REST API due to class not being loaded #54418
- Accept an error message from payment methods or convert notices for failure only #53671
Store API
Other important information
Developer Advisories
We have a number of developer advisories coming up as we prepare to release pre-release versions. We’ll share more detailed information in upcoming posts.
Component Package Cleanup: We’ve removed several experimental product editor components from the
@woocommerce/components
package that are no longer in use. Extension developers using any of the legacy experimental components prefixed with __experimental
( WooProductFieldItem
, WooProductSectionItem
, WooProductTabItem
, ProductSectionLayout
, ProductFieldSection
) should update their code to remove these dependencies. Read more here.
Consistent Stock Management in REST API: We’ve aligned REST API stock behavior with WP Admin functionality when managing orders. Stock levels now automatically adjust when modifying line items via the API, but only for orders with processing, on-hold, or completed status. This change brings more consistency to inventory management across different interfaces.
Security updates
We have introduced changes to how customer data is handled in multisite networks to prevent unauthorized access.
Previously, a regular site admin within a multisite network could access customer data from other sites via certain REST API endpoints or the order editor’s customer search feature. While this may not be an issue for networks managed by a single team, it poses a risk when sites are operated by different entities.
What’s changing?
- For existing WooCommerce sites, the current behavior remains unchanged.
- Newly created WooCommerce sites will adopt a stricter security model, limiting cross-site customer data access to users with the
manage_network_users
capability.
This update ensures better data privacy in multisite environments while allowing flexibility for different use cases.
Changelog
View the full changelog.
Get WooCommerce 9.7
To upgrade: See our update guide or download the latest release from WordPress.org.
Found a Bug? Please submit a report it on GitHub.
Leave a Reply