<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>149015</bug_id>
          
          <creation_ts>2015-09-09 15:54:27 -0700</creation_ts>
          <short_desc>When swiping through an image gallery on iOS, users may accidentally navigate</short_desc>
          <delta_ts>2017-05-01 18:18:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dima Voytenko">dvoytenko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dino</cc>
    
    <cc>nekr.fabula</cc>
    
    <cc>rbyers</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124731</commentid>
    <comment_count>0</comment_count>
    <who name="Dima Voytenko">dvoytenko</who>
    <bug_when>2015-09-09 15:54:27 -0700</bug_when>
    <thetext>Swipe History gestures introduced in iOS7 Safari conflict with touch-enabled web apps. It&apos;s too easy to mistakenly trigger them and produce an undesirable false positives where user is sent to a previous page in the history instead of performing an action intended by a web page. This leads to a bad UX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124822</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-09 20:26:06 -0700</bug_when>
    <thetext>on WKWebView: @property (nonatomic) BOOL allowsBackForwardNavigationGestures;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124823</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-09 20:26:31 -0700</bug_when>
    <thetext>Oh! From Web content. Never mind :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124824</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-09 20:26:43 -0700</bug_when>
    <thetext>Reopening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124831</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-09-09 21:34:16 -0700</bug_when>
    <thetext>I don&apos;t think we will ever do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124893</commentid>
    <comment_count>5</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2015-09-10 07:14:29 -0700</bug_when>
    <thetext>In our implementation of this feature on Chrome (on ChromeOS) we give the page first crack at the touch events and trigger the history behavior only if the page doesn&apos;t consume the events (exactly as for scrolling).  Why not consider something similar in Safari?

Dima works on real-world Google web properties struggling with this issue.  It&apos;s a shame that the swipe-from-side UX that users are used to from native mobile apps and in Chrome on Android can&apos;t possibly be implemented in Safari.  Is that really the right design choice for users here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124901</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-09-10 08:42:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; In our implementation of this feature on Chrome (on ChromeOS) we give the
&gt; page first crack at the touch events and trigger the history behavior only
&gt; if the page doesn&apos;t consume the events (exactly as for scrolling).  Why not
&gt; consider something similar in Safari?
&gt; 
&gt; Dima works on real-world Google web properties struggling with this issue. 
&gt; It&apos;s a shame that the swipe-from-side UX that users are used to from native
&gt; mobile apps and in Chrome on Android can&apos;t possibly be implemented in
&gt; Safari.  Is that really the right design choice for users here?

Yes. I think it is the right choice. Users should have a consistent behavior in the web browser. When they want to go back, they should be able to swipe back. The web page should not be able to interfere with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124905</commentid>
    <comment_count>7</comment_count>
    <who name="Dima Voytenko">dvoytenko</who>
    <bug_when>2015-09-10 09:12:02 -0700</bug_when>
    <thetext>Thanks for all the comments.

I do realize that there&apos;s practically a zero probability this will be addressed, but...

I agree that blocking history swipe based on in-application touch is not a good thing. Consistent behavior is broken in that way.

However, I&apos;d argue that history swipe should be reconsidered altogether because it conflicts in a major way with a possible application&apos;s functionality affecting UX overall. E.g. one second the user was swiping between photos and the other the user was sent to some other page.

Also, this feature turns into a real mess if the web application modifies history stack itself, e.g. using history.pushState(). You can try a basic sample where test page would pushState and then swipe back - it doesn&apos;t look pretty. I can build a basic sample if you&apos;d like to see.

I&apos;ve found this set of links both from the perspective of developers and users (and there are many many more):

http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review
http://stackoverflow.com/questions/18889666/ios-7-is-there-a-way-to-disable-the-swipe-back-and-forward-functionality-in-sa
http://www.iphonefaq.org/archives/973468
http://forums.everythingicafe.com/threads/turn-off-safari-page-swipe.104403/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127116</commentid>
    <comment_count>8</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2015-09-18 08:36:43 -0700</bug_when>
    <thetext>Updating the summary to describe the problem instead of a potential solution.  This is apparently a common complaint from Google Photos users.  They&apos;re swiping through their images on an iPhone and suddenly they navigate backwards instead of going to the next image as expected.

I was recently talking to web developers from Flipkart (huge mobile e-commerce company in India).  They mentioned this exact problem was a huge problem for usability of their mobile website as well (and part of the reason they abandoned the mobile web in favor of a native app: http://www.zdnet.com/article/why-indias-flipkart-abandoned-its-mobile-website/).

Perhaps there are other solutions here than just providing a way to disable the feature?  Eg. if Safari sees a series of swipes that are handled by JS and then immediately sees another only slightly to the left/right, isn&apos;t it most likely that the user is intending to repeat their previous action?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303534</commentid>
    <comment_count>9</comment_count>
    <who name="Arthur">nekr.fabula</who>
    <bug_when>2017-05-01 18:18:53 -0700</bug_when>
    <thetext>It&apos;s even more funny on iPad which has huge (~300px) region for history swipe navigations. It&apos;s literally impossible to implement any good touch galleries/carousels in Safari because you have only half of the screen available for that (~600px in the center between edges).

Such a joke browser.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>