WooCommerce 9.9.5: Classic performance

WooCommerce 9.9.5 is here:

This version fixes unwanted block styles loading on all pages in classic themes. Styles now load only when needed.

Current Stable Tag

👉 WooCommerce 9.9.5

Released June 23, 2025

What’s in this release

🛠️ Fix: Unwanted block styles loaded on all pages in classic themes #58993

Reported by dpitchford1, WooCommerce 9.9 introduced a regression where block-related CSS files were being loaded on all pages, even when no WooCommerce blocks were used and block support was explicitly disabled. This impacted both frontend performance and styling for developers using classic themes with finely tuned output control.

With this fix, WooCommerce’s style loading handler supports dynamically rendered interactive blocks that define styles in metadata. Styles will now only load if the relevant block is present on the page, even in classic themes.


3 responses to “WooCommerce 9.9.5: Classic performance”

  1. Bob Loblaw Avatar
    Bob Loblaw

    I’d like to thank the developers for introducing this bug. For a while now I have been trying to use cart and checkout blocks, despite the fact that they are ridiculously hard to style, performance is terrible, and they require different code to customize them. With the introduction of this bug though, I finally had enough and have fully rejected Woo blocks as a whole. With a simple filter, I have disabled all blocks completely and performance seems to have increased, both frontend and backend. So thank you to whoever made a derp and was the reason for this bug. You have made my life much better now.

  2. Saurabh Avatar
    Saurabh

    Hi Pi,
    I don’t know where to put this so adding here.

    I’m getting this error when updating to the latest version. When I updated the v9.9.4 I suppressed the error by adding a code thinking you guys might fix it in the upcoming update.

    Line: if ( 0 === strpos( $menu_item[0], $menu_title )

    Fatal error: Uncaught TypeError: strpos() expects parameter 1 to be string, null given in public_html/wp-content/plugins/woocommerce/src/Internal/Admin/Settings/PaymentsController.php:87
    Stack trace:
    #0 public_html/wp-content/plugins/woocommerce/src/Internal/Admin/Settings/PaymentsController.php(87): strpos(NULL, ‘Payments’)
    #1 public_html/wp-includes/class-wp-hook.php(324): AutomatticWooCommerceInternalAdminSettingsPaymentsController->add_menu(”)
    #2 public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
    #3 public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
    #4 public_html/wp-admin/includes/menu.php(161): do_action(‘admin_menu’, ”)
    #5 public_html/wp-admin/menu.php(423): require_once(‘/home/fifofocus…’)
    #6 public_html/wp-admin/admin.php(159): require(‘/home/fifofocus…’)
    #7 public_html/wp-admin/index.php(10): require_once(‘/home in public_html/wp-content/plugins/woocommerce/src/Internal/Admin/Settings/PaymentsController.php on line 87

    1. Hi Saurabh, I don’t see any reports of this error and am unable to reproduce. It might be helpful for you to conflict test your installed plugins and themes to see what else might be causing the issue.

      If the issue is in fact isolated to WooCommerce after you perform the conflict tests, I would suggest you open an issue in the core repository

Leave a Reply

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