---
description: "Completes the gesture system with the media-gesture element, React gesture hooks, and default skin bindings."
date: 2026-04-11
version: "10.0.0-beta.17"
prerelease: true
breaking: false
compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.16...@videojs/core@10.0.0-beta.17"
---

Beta.17 completes the gesture story started in beta.16. The new `<media-gesture>` element registers tap and double-tap handlers on the player container and dispatches them to store actions; along the way, core media state gains `togglePaused`, `toggleFullscreen`, and `togglePictureInPicture`, and the picture-in-picture hotkey action is renamed from `togglePiP` to `togglePictureInPicture` ([#1305](https://github.com/videojs/v10/pull/1305)). React gets the matching `MediaGesture` component plus `useTapGesture` and `useDoubleTapGesture` hooks ([#1309](https://github.com/videojs/v10/pull/1309)). The default video skins and presets now ship gesture bindings out of the box: click to play or pause with a mouse, tap to toggle controls on touch, and double-tap to seek or enter fullscreen by region ([#1310](https://github.com/videojs/v10/pull/1310)).

One fix rounds out the release: the HTML define modules now register custom elements with explicit, ordered `safeDefine()` calls instead of bare side-effect imports, which removes non-deterministic registration order when the entry points load as native ESM ([#1307](https://github.com/videojs/v10/pull/1307)).
