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:pausereports it indetail.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.
autoplayno 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-delaywhile a video is already playing (for example when entering fullscreen) now hides the controls.
Security
Section titled “Security”- Attribute values are escaped,
play-btn-iconmarkup is sanitised and unsafemodal-cta-urlvalues are blocked.
Performance
Section titled “Performance”- 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 andmodal-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-primaryis#aaa, defaultpreloadisnone. - Removed
disable-lazy-loading.