Skip to content

Changelog

A drop-in update: attributes, methods and events are compatible with 2.3.

  • pause-offscreen: pause the video when the player scrolls out of view, and optionally play it again when it’s back (pause-offscreen="resume").

  • Builds for every setup: ES module, minified ES module, classic <script> (IIFE), UMD (AMD / CommonJS / global), CommonJS and TypeScript declarations.

  • Seek preview: time and thumbnails while hovering or dragging the progress bar, from a WebVTT thumbnails file or generated by the player (thumbnails).

  • Volume slider auto-hide (volume-hide-delay, default 1 s).

  • Every attribute is also a settable property, so React 19 and Vue can pass props; values set before the element upgrades are applied.

  • Theme from CSS with custom properties, and ::part() hooks for internal elements.

  • Keyboard-accessible volume slider (ARIA slider).

  • Hours in the time display, Home / End / 0–9 shortcuts, a keyboard-operable progress slider and a spinner while buffering.

  • Translatable interface with VegaPlayer.i18n.

  • The modal no longer opens when the browser pauses the video in a background tab; vega-player:pause reports it in detail.byBrowser.
  • The modal only opens on pause when it has content (the default “Join Now” alone no longer enables it).
  • Releasing memory after a long pause no longer leaves the player blank; the position is restored correctly.
  • autoplay no longer restarts playback when another attribute changes.
  • Moving the element in the DOM no longer breaks Picture-in-Picture or auto-hide; removing it stops its audio.
  • Fullscreen works on iPhone (native video fullscreen) and older Safari.
  • setQuality() keeps the play/pause state; the speed survives quality switches.
  • Switching quality with the default preload="none" no longer stalls with an endless spinner.
  • Chromecast: play/pause no longer toggle blindly, and only one player takes the session.
  • On narrow players (500 px or less) the controls no longer overflow: Picture-in-Picture, speed and quality are hidden there.
  • The speed and quality buttons now include their visible value in the accessible name (WCAG 2.5.3).
  • Errors from src-* sources show the error screen.
  • Captions are drawn by the player itself, just above the progress bar and buttons, at any size, aspect ratio and in fullscreen, and slide down when the controls hide; their text scales with the player. On iPhone’s native fullscreen the browser draws them. New ::part(captions).
  • The captions button shows clearly whether captions are on (underline) or off (dimmed), with any theme.
  • Turning on hide-on-play-delay while a video is already playing (for example when entering fullscreen) now hides the controls.
  • Attribute values are escaped, play-btn-icon markup is sanitised and unsafe modal-cta-url values are blocked.
  • Attribute changes only update what they affect; CSS-variable progress bar that skips sub-pixel redraws; no progress loop while off-screen.
  • responsive-src, smooth progress bar, hide-on-play-delay, show-stop-button / hide-play-button / hide-fullscreen-button, rich modal text and modal-description-color, error-title / error-retry-text, inline SVG play icons, draggable progress bar and volume slider, pause({ silent: true }), isModalVisible, new events, modal focus management.
  • Default color-primary is #aaa, default preload is none.
  • Removed disable-lazy-loading.