On GitHub, ftlabs/fastclick has picked up 18.5k stars, HTML. Polyfill to remove click delays on browsers with touch UIs
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic.
FastClick is developed by FT Labs, part of the Financial Times.
Note: As of late 2015 most mobile browsers - notably Chrome and Safari - no longer have a 300ms touch delay, so fastclick offers no benefit on newer browsers, and risks introducing bugs into your application. Consider carefully whether you really need to use it.
Explication en français.
日本語で説明。
Why does the delay exist?
According to Google:
...mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click event. The reason for this is that the browser is waiting to see if you are actually performing a double tap.
Compatibility
The library has been deployed as part of the FT Web App and is tried and tested on the following mobile browsers:
Mobile Safari on iOS 3 and upwards
Chrome on iOS 5 and upwards
Chrome on Android (ICS)
Opera Mobile 11.5 and upwards
Android Browser since Android 2
PlayBook OS 1 and upwards
When it isn't needed
FastClick doesn't attach any listeners on desktop browsers.
Chrome 32+ on Android with width=device-width in the viewport meta tag doesn't have a 300ms delay, therefore listeners aren't attached.
Same goes for Chrome on Android (all versions) with user-scalable=no in the viewport meta tag. But be aware that user-scalable=no also disables pinch zooming, which may be an accessibility concern.
For IE11+, you can use touch-action: manipulation; to disable double-tap-to-zoom on certain elements (like links and buttons). For IE10 use -ms-touch-action: manipulation.
Usage
Include fastclick.js in your JavaScript bundle or add it to your HTML page like this:
If you're using Browserify or another CommonJS-style module system, the FastClick.attach function will be returned when you call require('fastclick'). As a result, the easiest way to use FastClick with these loaders is as follows:
var attachFastClick = require('fastclick');
attachFastClick(document.body);
Minified
Run make to build a minified version of FastClick using the Closure Compiler REST API. The minified file is saved to build/fastclick.min.js or you can download a pre-minified version.
Note: the pre-minified version is built using our build service which exposes the FastClick object through Origami.fastclick and will have the Browserify/CommonJS API (see above).
var attachFastClick = Origami.fastclick;
attachFastClick(document.body);
AMD
FastClick has AMD (Asynchronous Module Definition) support. This allows it to be lazy-loaded with an AMD loader, such as RequireJS. Note that when using the AMD style require, the full FastClick object will be returned, notFastClick.attach
var FastClick = require('fastclick');
FastClick.attach(document.body, options);
Package managers
You can install FastClick using Component, npm or Bower.
For Ruby, there's a third-party gem called fastclick-rails. For .NET there's a NuGet package.
Advanced
Ignore certain elements with needsclick
Sometimes you need FastClick to ignore certain elements. You can do this easily by adding the needsclick class.
<a class="needsclick">Ignored by FastClick</a>
Use case 1: non-synthetic click required
Internally, FastClick uses document.createEvent to fire a synthetic click event as soon as touchend is fired by the browser. It then suppresses the additional click event created by the browser after that. In some cases, the non-synthetic click event created by the browser is required, as described in the triggering focus example.
This is where the needsclick class comes in. Add the class to any element that requires a non-synthetic click.
Use case 2: Twitter Bootstrap 2.2.2 dropdowns
Another example of when to use the needsclick class is with dropdowns in Twitter Bootstrap 2.2.2. Bootstrap add its own touchstart listener for dropdowns, so you want to tell FastClick to ignore those. If you don't, touch devices will automatically close the dropdown as soon as it is clicked, because both FastClick and Bootstrap execute the synthetic click, one opens the dropdown, the second closes it immediately after.
FastClick is designed to cope with many different browser oddities. Here are some examples to illustrate this:
basic use showing the increase in perceived responsiveness
triggering focus on an input element from a click handler
input element which never receives clicks but gets fast focus
Tests
There are no automated tests. The files in tests/ are manual reduced test cases. We've had a think about how best to test these cases, but they tend to be very browser/device specific and sometimes subjective which means it's not so trivial to test.
Credits and collaboration
FastClick is maintained by Rowan Beentje, Matthew Caruana Galizia and Matthew Andrews at FT Labs. All open source code released by FT Labs is licenced under the MIT licence. We welcome comments, feedback and suggestions. Please feel free to raise an issue or pull request.
No homepage URL was recorded for ftlabs/fastclick in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
Does ftlabs/fastclick have any tags?
TopGit's last sync did not record any GitHub topics for ftlabs/fastclick. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on ftlabs/fastclick?
The most recent commit recorded on ftlabs/fastclick was 5.0 years ago, based on the GitHub push timestamp. The repository has 3.1k forks — one of the better signals of community interest.
Is ftlabs/fastclick open source?
Yes — ftlabs/fastclick ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/ftlabs/fastclick.
What license does ftlabs/fastclick use?
ftlabs/fastclick is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where do I read more about ftlabs/fastclick?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/ftlabs/fastclick is the definitive source.
Read full README in the tab above.
Is fastclick worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of fastclick.