Commit 3ea2091f89 for woocommerce
commit 3ea2091f8915a9a0df4ad20dcd24664302df2d0a
Author: Luis Herranz <luisherranz@gmail.com>
Date: Fri Dec 5 07:11:17 2025 +0100
Fix mini cart to handle optimistic cart items on slow networks (#62250)
* Fix mini cart to handle optimistic cart items on slow networks
* Add changefile(s) from automation for the following project(s): woocommerce
* Use id only when key doesn't exist
---------
Co-authored-by: github-actions <github-actions@github.com>
diff --git a/plugins/woocommerce/changelog/62250-wooplug-5948-mini-cart-shows-undefined-product-title-on-slow-network b/plugins/woocommerce/changelog/62250-wooplug-5948-mini-cart-shows-undefined-product-title-on-slow-network
new file mode 100644
index 0000000000..d0f0277a3d
--- /dev/null
+++ b/plugins/woocommerce/changelog/62250-wooplug-5948-mini-cart-shows-undefined-product-title-on-slow-network
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Fix Mini Cart showing undefined product title on slow network connections.
\ No newline at end of file
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/iapi-frontend.ts b/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/iapi-frontend.ts
index d35609cb49..86d3a81a08 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/iapi-frontend.ts
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/iapi-frontend.ts
@@ -420,11 +420,11 @@ const { state: cartItemState } = store(
// state.cartItem to get the cart item.
get cartItem() {
const {
- cartItem: { key },
+ cartItem: { id, key },
} = getContext< CartItemContext >( 'woocommerce' );
- const cartItem = ( woocommerceState.cart.items.find(
- ( item ) => item.key === key
+ const cartItem = ( woocommerceState.cart.items.find( ( item ) =>
+ key ? item.key === key : item.id === id
) || {} ) as CartItem;
cartItem.variation = cartItem.variation || [];
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/style.scss b/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/style.scss
index 097e88e467..62b9df75f4 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/style.scss
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/mini-cart/style.scss
@@ -154,6 +154,10 @@ h2.wc-block-mini-cart__title {
padding-top: $gap-smaller;
padding-bottom: $gap-smaller;
+ &[hidden] {
+ display: none;
+ }
+
&:last-child::after {
content: none;
}
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/MiniCartProductsTableBlock.php b/plugins/woocommerce/src/Blocks/BlockTypes/MiniCartProductsTableBlock.php
index 7d2347aca6..20d821dd37 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/MiniCartProductsTableBlock.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/MiniCartProductsTableBlock.php
@@ -111,7 +111,12 @@ class MiniCartProductsTableBlock extends AbstractInnerBlock {
data-wp-each--cart-item="woocommerce::state.cart.items"
data-wp-each-key="state.cartItem.key"
>
- <tr class="wc-block-cart-items__row" data-wp-run="callbacks.filterCartItemClass" tabindex="-1">
+ <tr
+ class="wc-block-cart-items__row"
+ data-wp-bind--hidden="!state.cartItem.key"
+ data-wp-run="callbacks.filterCartItemClass"
+ tabindex="-1"
+ >
<td data-wp-context='{ "isImageHidden": false }' class="wc-block-cart-item__image" aria-hidden="true">
<img
data-wp-bind--hidden="!state.isProductHiddenFromCatalog"