Commit fb1ced1770c for woocommerce

commit fb1ced1770cab5be6e5661c0a0f923c08041b086
Author: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
Date:   Fri Jul 17 14:53:07 2026 +0200

    Restore FlexSlider touch event ordering and keep the fix for in-app browser gestures minimal (#66754)

    * Restore FlexSlider touch event ordering

    * Add changelog entry for FlexSlider touch handling

    * Limit non-passive handling to FlexSlider pre-listener

    * Use default options for FlexSlider pre-listener

diff --git a/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase b/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase
new file mode 100644
index 00000000000..2aeee1987d4
--- /dev/null
+++ b/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Preserve touch handling for interactive content nested inside FlexSlider galleries.
diff --git a/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js b/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
index 1921304cd38..da2eaf91660 100755
--- a/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
+++ b/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
@@ -455,7 +455,6 @@
           onTouchStart,
           onTouchMove,
           onTouchEnd,
-          touchListenerOptions = { capture: true, passive: false },
           scrolling = false,
           localX = 0,
           localY = 0,
@@ -482,8 +481,8 @@
                          (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
                 startX = (vertical) ? localY : localX;
                 startY = (vertical) ? localX : localY;
-                el.addEventListener('touchmove', onTouchMove, touchListenerOptions);
-                el.addEventListener('touchend', onTouchEnd, touchListenerOptions);
+                el.addEventListener('touchmove', onTouchMove, false);
+                el.addEventListener('touchend', onTouchEnd, false);
               }
             };

@@ -510,7 +509,7 @@

             onTouchEnd = function(e) {
               // finish the touch by undoing the touch session
-              el.removeEventListener('touchmove', onTouchMove, touchListenerOptions);
+              el.removeEventListener('touchmove', onTouchMove, false);

               if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
                 var updateDx = (reverse) ? -dx : dx,
@@ -522,7 +521,7 @@
                   if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
                 }
               }
-              el.removeEventListener('touchend', onTouchEnd, touchListenerOptions);
+              el.removeEventListener('touchend', onTouchEnd, false);

               startX = null;
               startY = null;
@@ -533,8 +532,8 @@
             // Register before a gesture starts so embedded WebViews keep touchmove events cancelable.
             el.addEventListener('touchmove', function() {
               // Intentionally empty.
-            }, touchListenerOptions);
-            el.addEventListener('touchstart', onTouchStart, touchListenerOptions);
+            }, false);
+            el.addEventListener('touchstart', onTouchStart, false);
       },
       resize: function() {
         if (!slider.animating && slider.is(':visible')) {