Changelog
What changed in the Player, release by release
Changes that affect how the player behaves on your page. Dependency updates, test and CI work are left out — the full history lives in the player repository.
4.25.2 — 10 Sep 2026
Added
currentSpeed, a read-only property with the current playback rate, on the JS embed and on the iframe SDK.
Fixed
- Headlines show on the iframe embed again. From 4.19.0 to 4.25.1 the iframe embed rendered no headline on your page, while headline views kept being counted.
speed(rate)works on the iframe SDK. There it was a property instead of the documented method, soplayer.speed(1.5)threw. If your page assigned or readplayer.speedon the iframe SDK, callspeed(rate)to set the rate and readcurrentSpeedinstead.
Changed
- On the JS embed,
urlUpdaterreturns the URL as a string, as the iframe SDK does, instead of a promise. Code that awaits it keeps working. Call it afterplayer:ready: before that it returns the URL unchanged instead of waiting for the player.
4.25.1 — 27 Aug 2026
Fixed
- Editing the chapter list on a running player now takes effect immediately. The segmented progress bar re-splits and an open chapters list re-lists, with no page reload and without closing the popup the viewer opened.
4.25.0 — 26 Aug 2026
Added
- Chapters. A video can be split into chapters. The progress bar shows one segment per chapter, the control bar gains a chapters button, and the seek tooltip names the chapter under the pointer. Players without chapters look exactly as before.
- Custom JavaScript on HTML headlines. A headline can carry a
jsfield that runs once, right after the headline appears. The code receives the headline element asrootand theplayerId. If it throws, the headline still renders and the player keeps playing. See Headline JS.
Fixed
- The video no longer appears cropped when the viewer enters fullscreen or Immersive Mode while autoplay is still running.
Changed
- The speed menu and the chapters list share one popup: it opens over its own button, scrolls when there are more rows than fit, and closes when a row is picked.
4.24.0 — 20 Aug 2026
Added
- The player thumbnail is painted behind the video while the first segment loads, so the loading window shows the poster frame instead of a black box. Skipped when Smart AutoPlay starts somewhere else, such as a custom preview or a
startAtseek.
Fixed
- Calls-to-action now scale by the painted picture rather than the video width, so Immersive Mode no longer pushes the bottom buttons off screen.
- Removed the phantom 4px gap under an image headline configured with every margin at zero.
Changed
player:readyis documented on the player element rather than ondocument. Only the element replays the event for a listener registered after the player is already ready, so a listener added late ondocument— from a tag manager orwindow.onload— never ran. The event itself is unchanged.
4.23.0 — 18 Aug 2026
Added
- Image headlines accept the configurable
layout(margins and width) that text and HTML headlines already supported. Withoutlayoutnothing changes: the image keeps its intrinsic size and the previous bottom margin.
Fixed
- A legacy HTML headline whose config carried a
layoutwith null margin values no longer blanks the page. Malformed margins fall back to the stylesheet instead of throwing, and an explicitwidth: 0is now honoured.
4.22.0 — 11 Aug 2026
Added
- Analytics delivery is held while the page is an Instagram link preview. Instagram renders bio and profile links in a miniature in-app WebView, which fired
pageviewwithout the visitor ever opening the page and inflated views against Meta click counts. A preview that is never opened now sends nothing, and a false positive releases itself as soon as the window leaves the preview geometry or the video plays.
Removed
- The temporary
player.viewviewability metric, shipped in 4.20.0 to measure the real-view gap. The Instagram preview hold supersedes it.
4.21.0 — 11 Aug 2026
Added
- Mini Player. The video detaches into a fixed corner when the player scrolls past the viewport and returns when scrolled back, with a placeholder holding the layout so nothing below reflows. Ships a toggle in the control bar, a return button on the mini player, a mobile page spacer, Immersive Mode cooperation, and iframe SDK parity. Disabled by default.
Changed
- The analytics session lasts 7 days instead of 3 hours, so a returning visitor stays in the same session rather than being counted again.
Fixed
- Hardened the cookie fallback used when neither
localStoragenorsessionStorageis available:SameSite=Lax,Secureon TLS pages, and percent-encoded keys and values.
4.20.3 — 31 Jul 2026
Fixed
- The playback rate survives a video source switch. Swapping back from a Smart AutoPlay custom preview to the main video was resetting the speed to 1.0 right after Turbo applied the configured rate.
4.20.2 — 21 Jul 2026
Fixed
- The Smart AutoPlay background probe no longer fires mid-gesture. It now listens only for release events, so unmuted playback can no longer start between press and release, re-layout the page and make the click land on
<body>instead of the call-to-action the visitor pressed. - The Google pixel no longer wipes the host page's
<head>. It was rebuilding every head node, including your stylesheets, which left the page unstyled for a frame on play. - A config update that disables
autoUnmutewhile the probe is in flight is now respected, instead of unmuting anyway.
4.20.1 — 17 Jul 2026
Changed
- The control bar renders once in a flat container with CSS-driven layout, so resizes, breakpoint crossings and menu toggles no longer remount controls. Also fixes the bar background in players without a progress bar.
Fixed
- Facebook and Google pixels no longer dispatch an unnamed event — logged as
missing_eventby Meta — when the pixel's event name is empty. - Restored
vtidconversion attribution for iClosed popup bookings after iClosed started caching the modal iframe.
4.20.0 — 14 Jul 2026
Added
- A temporary
player.viewmetric, firing once when the player first entered the viewport, to measure view inflation from link previews without touchingpageview. Removed again in 4.22.0 once the Instagram preview hold shipped.