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"