Skip to main content

4.0.13 Release Notes

Version 4.0.13 is a patch release with three bug fixes and one addition.


Download 4.0.13

Bug Fixes

Express Checkout Now Works With Shipping Zones That Return Many Rates

Apple Pay, Google Pay, and Link Checkout express checkout now complete normally when a customer's address returns a large number of shipping rates.

The wallet payment sheet used by Stripe's express checkout can only display fewer than 10 shipping options. When a shipping zone returned 10 or more rates for a customer's address, the payment sheet would stall after the customer entered their address and the order could not be completed. Carts that produced nine or fewer rates were unaffected.

The plugin now limits the number of shipping rates sent to the wallet to nine, always keeping the customer's currently selected rate. This applies to both the classic checkout and the checkout block.

Block Express Checkout Now Highlights the Correct Shipping Option

In the checkout block, the Apple Pay, Google Pay, and Link Checkout payment sheet could highlight the wrong shipping option. It would sometimes show the cheapest rate as selected rather than the method WooCommerce had actually selected. For example, with Free shipping and Flat rate available and Flat rate selected, the wallet would show Free shipping as the choice.

This was a display issue in the wallet only and appeared intermittently. The cart totals and the resulting order totals were always correct.

The wallet now shows the shipping option that matches the cart's selected method, consistent with how the classic checkout already behaved. The classic (shortcode) checkout was not affected by this issue.

Express Checkout Buttons No Longer Clipped on FunnelKit Checkout Pages

On a FunnelKit (Funnel Builder Pro) checkout page with the Express Checkout Buttons option enabled, the Apple Pay, Google Pay, and Link Checkout buttons rendered with their top and bottom edges cut off. This started with Funnel Builder Pro 3.16.0, which added a style rule that constrained the height of buttons in its express checkout area.

The plugin's FunnelKit compatibility styles now restore each button to its configured height, so the buttons display at full size again. This affected only funnel checkout pages with the Express Checkout Buttons option enabled.


Additions

Loading Placeholders for Express Checkout Buttons

On the classic checkout, cart, and product pages, the express checkout row (Apple Pay, Google Pay, and Link) was hidden until each wallet finished checking whether it was available. Buttons then appeared one at a time, shifting the surrounding page content as each one loaded, with no indication that anything was in progress.

The row now reserves its space from the moment the page loads and shows a shimmer placeholder for each button. Each placeholder is replaced by its button as that wallet becomes available, and the row collapses if none of them are. This matches the loading behavior the WooCommerce checkout block already uses. The shimmer animation is disabled for visitors who have enabled the prefers-reduced-motion setting in their browser or operating system.

The Express Checkout row on the classic checkout page: shimmer placeholders hold the row's space, then each one is replaced by its button as Apple Pay, Google Pay, and Link Checkout resolve.

CheckoutWC and FunnelKit (when its Express Checkout Buttons option is enabled) render the checkout page's express checkout area with their own markup and loading treatment, so the placeholders are automatically disabled on the checkout page in those setups. The cart and product pages, which use the standard WooCommerce layout, still show them.

A new wc_stripe_express_checkout_skeleton filter lets you turn the placeholders off, either everywhere or for a specific page.

Disable the placeholders in every context:

add_filter( 'wc_stripe_express_checkout_skeleton', '__return_false' );

Disable the placeholders on the checkout page only, leaving them in place on the cart and product pages:

add_filter( 'wc_stripe_express_checkout_skeleton', function ( $enabled, $context ) {
if ( 'express_checkout' === $context ) {
return false;
}

return $enabled;
}, 10, 2 );

New Filters

FilterDescription
wc_stripe_express_checkout_skeletonEnables or disables the express checkout loading placeholders. Receives the boolean enabled state and the context (express_checkout, product, or cart). Defaults to true.