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

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.


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.

Code Contributors

WooCommerce Core

mcliwanow
Konamiman
opr
adrianduffell
kkmuffme
wavvves
mikejolley
senadir
kmanijak
kalessil
prettyboymp
oaratovskyi
mreishus
coreymckrill
maaprote
ianlin
sabali33
thilinah
retrofox
octaedro
himanshu-here
helgatheviking
psealock
Stojdza
amesplant
ecgan
hesahesa
tjcafferkey
alexflorisca
elazzabi
stenly311
Manussakis
lanej0
jorgeatorres
dpaun1985
rodelgc
mordeth
veljkho
vladolaru
NeosinneR
dinhtungdu
daledupreez
barryhughes
darrenjacoby
gigitux
Aljullu
imanish003
wjrosa
adimoldovan
mgascam
chihsuan
louwie17
todeveni
apenchev
dmallory42
moon0326
alefesouza
nielslange
tomalec
albarin
bor0
puntope
rjchow
roykho
ilyasfoo
mdperez86

4 responses to “WooCommerce 9.7: Smarter shipping displays and faster performance”

  1. Thank you very much for the contiuous work on this great shopping plugin! Highly appreciated!

  2. Gosto quando o Woocommerce atualiza suas versões sem quebrar o site kkkkk, Implementações para evoluir a plataforma e melhorar nossos sites são sempre bem vindas. Vou trabalhar agora no meu site para implementar essas mudanças e aproveitar ao máximo as melhorias.
    Abraço a equipe de desenvolvimento do Woocoomerce sempre preocupada em trazer novidades e coisas boas para nós usuários.

    1. muito obrigada! We are happy to read about your experience with Woo 🙏

  3. I was just thinking about better shipping displays and certainly would be a plus, to say the least

Leave a Reply

Your email address will not be published. Required fields are marked *