What WooCommerce 10.3.6 fixes, and why PHP 8.4 users care

A shop owner running a high-volume apparel store called me last week in a panic. Checkout was throwing 500 errors at random, with nothing in the pattern to work from. The logs eventually gave it away: they had deleted a seasonal “Flash Sale” product, and customers still had it sitting in their persistent carts. Every time the shipping calculator called needs_shipping() on a product that no longer existed, the request died.

I blamed a custom shipping snippet the previous developer had left behind and spent an hour wrapping it in null checks. That bought a few minutes of quiet, but it never touched the real problem, which was how WooCommerce handled deleted data during the calculation phase. Dull WooCommerce stability and PHP compatibility releases like 10.3.6 are the ones that actually matter on a production store.

What WooCommerce 10.3.6 fixes

The 10.3.6 dot release fixes exactly that fatal error, the one where a deleted product blows up a shipping workflow. It is the kind of edge case nobody prioritizes until abandoned checkouts start piling up. The release also lays groundwork for newer stacks: if you are eyeing PHP 8.4, it clears a crash in the Helper updater that fired when transient data came back malformed.

The Model Context Protocol (MCP) adapter also moved to version 0.3.0. That reads like “AI fluff” from the outside, but it sets how WooCommerce will handle AI-powered features from here on, so anyone building custom AI tooling for a shop wants the newer architecture underneath them. The WooCommerce Developer Blog went through how the same changes keep things from breaking on WordPress 6.9 and up.

When I harden a client site I add defensive checks before the core fixes land anyway. Item validation in a loop over orders or carts should look something like this, which is close to what these updates reinforce internally:

/**
 * Safely check if a product exists before running custom logic.
 * bbioon_prefix is used to prevent naming collisions.
 */
function bbioon_validate_order_items( $order ) {
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();

        // The critical check that prevents fatal errors
        if ( ! $product || ! is_a( $product, 'WC_Product' ) ) {
            // Log it and move on, don't let the site crash.
            continue;
        }

        // Now it's safe to do your thing
        $needs_shipping = $product->needs_shipping();
    }
}

The reality of dot releases

Nobody gets excited about a dot-dot release. There is no new UI in it. It is also the release that keeps you from being paged at 3 AM because a malformed transient crashed the update helper on PHP 8.4. Most of maintenance looks like that: quiet fixes nobody notices until they are missing.

  • WordPress 6.9 and up handles the Abilities API and hook naming conventions better.
  • The fatal errors in the WooCommerce Helper under PHP 8.4 are fixed.
  • Ghost products left in a cart no longer crash shipping.

This gets complicated fast. If you would rather not debug someone else’s mess and just want the store to work, drop my team a line. We have probably seen it before.

Are you still holding off on PHP 8.4, or moving now that core stability has caught up?

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.