Bug 149015 - When swiping through an image gallery on iOS, users may accidentally navigate
Summary: When swiping through an image gallery on iOS, users may accidentally navigate
Status: RESOLVED WONTFIX
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-09 15:54 PDT by Dima Voytenko
Modified: 2017-05-01 18:18 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dima Voytenko 2015-09-09 15:54:27 PDT
Swipe History gestures introduced in iOS7 Safari conflict with touch-enabled web apps. It'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.
Comment 1 Tim Horton 2015-09-09 20:26:06 PDT
on WKWebView: @property (nonatomic) BOOL allowsBackForwardNavigationGestures;
Comment 2 Tim Horton 2015-09-09 20:26:31 PDT
Oh! From Web content. Never mind :(
Comment 3 Tim Horton 2015-09-09 20:26:43 PDT
Reopening
Comment 4 Sam Weinig 2015-09-09 21:34:16 PDT
I don't think we will ever do this.
Comment 5 Rick Byers 2015-09-10 07:14:29 PDT
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'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's a shame that the swipe-from-side UX that users are used to from native mobile apps and in Chrome on Android can't possibly be implemented in Safari.  Is that really the right design choice for users here?
Comment 6 Sam Weinig 2015-09-10 08:42:39 PDT
(In reply to comment #5)
> 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'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's a shame that the swipe-from-side UX that users are used to from native
> mobile apps and in Chrome on Android can't possibly be implemented in
> 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.
Comment 7 Dima Voytenko 2015-09-10 09:12:02 PDT
Thanks for all the comments.

I do realize that there'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'd argue that history swipe should be reconsidered altogether because it conflicts in a major way with a possible application'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't look pretty. I can build a basic sample if you'd like to see.

I'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/
Comment 8 Rick Byers 2015-09-18 08:36:43 PDT
Updating the summary to describe the problem instead of a potential solution.  This is apparently a common complaint from Google Photos users.  They'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't it most likely that the user is intending to repeat their previous action?
Comment 9 Arthur 2017-05-01 18:18:53 PDT
It's even more funny on iPad which has huge (~300px) region for history swipe navigations. It'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.