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, so player.speed(1.5) threw. If your page assigned or read player.speed on the iframe SDK, call speed(rate) to set the rate and read currentSpeed instead.

Changed

  • On the JS embed, urlUpdater returns the URL as a string, as the iframe SDK does, instead of a promise. Code that awaits it keeps working. Call it after player: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 js field that runs once, right after the headline appears. The code receives the headline element as root and the playerId. 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 startAt seek.

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:ready is documented on the player element rather than on document. Only the element replays the event for a listener registered after the player is already ready, so a listener added late on document — from a tag manager or window.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. Without layout nothing changes: the image keeps its intrinsic size and the previous bottom margin.

Fixed

  • A legacy HTML headline whose config carried a layout with null margin values no longer blanks the page. Malformed margins fall back to the stylesheet instead of throwing, and an explicit width: 0 is 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 pageview without 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.view viewability 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 localStorage nor sessionStorage is available: SameSite=Lax, Secure on 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 autoUnmute while 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_event by Meta — when the pixel's event name is empty.
  • Restored vtid conversion attribution for iClosed popup bookings after iClosed started caching the modal iframe.

4.20.0 — 14 Jul 2026

Added

  • A temporary player.view metric, firing once when the player first entered the viewport, to measure view inflation from link previews without touching pageview. Removed again in 4.22.0 once the Instagram preview hold shipped.

On this page