I have watched high-traffic stores fall over because the analytics import grabbed every MySQL thread it could get. WooCommerce 10.5 finally moves that work into scheduled batches, so the import stops competing with real customer traffic. If the “regenerating reports” spinner has been part of your week, this release is worth a look.
Analytics batching: a long overdue refactor
WooCommerce 10.5 switches analytics over to scheduled imports. The old refresh was a resource hog; the new one runs on a 12-hour interval by default and works through orders 100 at a time. If your server has headroom, the woocommerce_analytics_regenerate_batch_size filter lets you raise the batch size.
One catch: existing stores have to switch this on themselves in the Analytics settings. New installs get it by default. If you look after older sites, check whether your WooCommerce admin is slow because those legacy background processes are still running.
Experimental caching and 98% faster widgets
WooCommerce 10.5 also adds experimental object caching. With it on, the Recent Reviews widget loads up to 98% faster. Two experimental flags ship with it:
- REST API caching, which works on any endpoint and cuts overhead on headless builds.
- Product object caching, which keeps the product object in memory for the length of a request instead of going back to the database for it.
Go carefully here. “Experimental” is a warning, not a suggestion, so try these on staging first. I have chased enough race conditions in transients to know that caching logic can break what the front end shows, like the disabled add to cart button issues we have run into before.
Developer hook: dynamic shipping tax
If you write complicated tax logic, the new woocommerce_shipping_tax_class filter will save you time. It overrides the tax class based on the cart’s context. The example below forces a specific class on anything shipping outside the US:
<?php
/**
* Override shipping tax class for specific conditions.
*
* @param string $tax_class Current tax class.
* @param array $shipping_tax_rates Current rates.
* @param object $package The shipping package.
* @return string
*/
function bbioon_customize_shipping_tax_class( $tax_class, $shipping_tax_rates, $package ) {
if ( isset( $package['destination']['country'] ) && 'US' !== $package['destination']['country'] ) {
return 'zero-rate';
}
return $tax_class;
}
add_filter( 'woocommerce_shipping_tax_class', 'bbioon_customize_shipping_tax_class', 10, 3 );
The wp_options Cleanup
The database side gets attention too. This release ships the wc_update_1050_enable_autoload_options update, which sorts out the autoload flag in the wp_options table. If your site loads thousands of options on every page hit, that trims the memory footprint. It is the kind of thing you would otherwise fix by hand with SQL.
If the 10.5 upgrade is eating your dev hours, hand it to me. I have been wrestling with WordPress since the 4.x days.
Takeaway: should you update?
Between the faster admin screens and the analytics rework, yes. The Select2 style isolation and the deepest-category permalink fix are nice extras. Read the update guide first, and back up the database before the 10.5.0 update scripts run.