WooCommerce 9.7: Smarter shipping displays and faster performance

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:

Latest Release:

๐Ÿ‘‰WooCommerce 9.7.0

About:

  • โœ… Backwards compatible
  • Commits:ย 315
  • Contributors:ย ย 87

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_Ratedelivery_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_statusexclude_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 ๐Ÿ‘‡

Product Status Management

  • 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ย andย exclude_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

  • Fix stock indicator visibility for Variable productsย #54156
  • Extendย addItemToCartย thunkย #53458
  • Cart Data Store: Prevent unnecessary requests to cart API when cart is empty (for the mini cart block)ย #53611

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 ( WooProductFieldItemWooProductSectionItemWooProductTabItemProductSectionLayoutProductFieldSection ) 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.


Reposted from WooCommerce

If you have a care plan with 7th Circle Designs this update will be taken care of based on your plan’s schedule. If you do not have a care plan, sign up now.