The gestureend event fires when a WebKit multi-touch gesture finishes. Learn final scale / rotation, ongestureend, gesturestart / gesturechange, portable alternatives, and five try-it labs.
01
Kind
Instance event
02
Type
GestureEvent
03
When
Multi-touch gesture ends
04
Handler
ongestureend
05
Key fields
scale / rotation
06
Status
Non-standard
Fundamentals
Introduction
Pinch-to-zoom and two-finger rotate feel natural on phones. WebKit exposed that motion with a small family of events: gesturestart, gesturechange, and gestureend, using the GestureEvent interface.
gestureend is the “gesture finished” signal—ideal for committing a final transform or clearing temporary state. Other browsers never standardized it. Treat it as an optional Safari path—not the only path.
💡
Beginner tip
On Chrome/Firefox desktop, these listeners often never run. Always feature-detect ("ongestureend" in window or window.GestureEvent) and keep a Touch / Pointer fallback.
Concept
Understanding gestureend
An instance event that answers: “Have the user’s fingers finished a multi-touch gesture (no longer multiple contacts)?”
Non-standard WebKit proprietary event (not in a public spec).
Fires when multiple fingers are no longer contacting the surface.
GestureEvent — final scale and rotation.
Handler — ongestureend or addEventListener("gestureend", ...).
Family — gesturestart → gesturechange* → gestureend.
Foundation
📝 Syntax
Use the event name with addEventListener, or set the handler property:
gestureend is marked Non-standard on MDN. Logos use the shared browser-image-sprite.png sprite from this project. Expect WebKit/Safari paths only—always ship a Touch or Pointer fallback.
✓ Non-standard
Element gestureend
Proprietary WebKit multi-touch gesture end signal; not a portable primary API.
WebKitNot standardized
Google ChromeNo GestureEvent; use Touch/Pointer
No
Mozilla FirefoxNo GestureEvent; use Touch/Pointer
No
Apple SafariWebKit GestureEvent (esp. iOS)
WebKit
Microsoft EdgeNo GestureEvent; use Touch/Pointer
No
OperaNo GestureEvent; use Touch/Pointer
No
Internet ExplorerNo
No
gestureendNon-standard
Bottom line: Use GestureEvent only as an optional Safari enhancement; compute pinch with Touch/Pointer Events for everyone else.
Wrap Up
Conclusion
gestureend is a Non-standard WebKit signal that a multi-touch gesture finished. Use it to commit final scale / rotation, feature-detect carefully, and keep Touch / Pointer Events as your portable foundation.
Feature-detect before attaching GestureEvent listeners
Keep a Touch / Pointer pinch implementation as the default
Document that the API is WebKit-only / Non-standard
Test on real iOS Safari hardware when you enhance with it
Pair with gesturestart / gesturechange for full lifecycle
❌ Don’t
Ship pinch/zoom that only listens for gestureend
Assume Chrome or Firefox will fire these events
Ignore browser page-zoom side effects (consider preventDefault)
Treat Non-standard as “fine for all production users”
Overwrite ongestureend if you need multiple listeners
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about gestureend
WebKit gesture finished—Non-standard; prefer portable commit on touchend.
5
Core concepts
📱01
Fingers leave
gesture finished
Trigger
📄02
GestureEvent
scale · rotation
API
🚫03
Non-standard
WebKit only
Status
🔄04
Touch fallback
portable pinch
Replace
🎯05
Feature-detect
optional enhance
Pattern
❓ Frequently Asked Questions
It is a proprietary WebKit event fired when there are no longer multiple fingers on the touch surface, ending the gesture. The event object is a GestureEvent with scale and rotation. MDN marks it Non-standard.
MDN marks it Non-standard only on the Element gestureend page — not Deprecated and not Experimental. Still avoid it as the primary API in cross-browser apps.
gesturestart begins the gesture, gesturechange fires while fingers move, and gestureend fires when the multi-touch gesture finishes.
It is WebKit-specific. Expect Safari on iOS (and related WebKit contexts). Chrome, Firefox, and Edge generally do not implement this event.
They report the final GestureEvent values for that gesture: scale relative to the start distance, and rotation in degrees since the gesture began.
For portable pinch/zoom, prefer Touch Events or Pointer Events and commit when the second finger lifts (for example touchend). Feature-detect GestureEvent only as an optional Safari enhancement.
Did you know?
MDN lists gestureend under “Not part of any specification.” That is why libraries rarely depend on it alone—standards favor Touch Events and Pointer Events for multi-touch.