Skip to content

fix(deps): update dependency hls.js to ^1.7.0 - #625

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/hls.js-1.x
Open

fix(deps): update dependency hls.js to ^1.7.0#625
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/hls.js-1.x

Conversation

@renovate

@renovate renovate Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
hls.js ^1.6.16^1.7.0 age confidence

Release Notes

video-dev/hls.js (hls.js)

v1.7.0

Compare Source

Summary

HLS.js v1.7.0 adds I-frame playlist support, improved playback of protected content, and CMCD v2 for standardized streaming analytics. It also delivers smoother audio-track switching, faster startup through parallel init-segment loading, and fixes across Low-Latency HLS, subtitles, interstitials, and live streaming.

Highlights to try in this release:

  • I-frame playback — call hls.createIFramePlayer() and loadMediaAt(time) to render frames from a stream's #EXT-X-I-FRAME-STREAM-INF variants in a video element, or load an #EXT-X-I-FRAMES-ONLY media playlist directly.
  • Smoother audio switching — set hls.nextAudioTrack (or pass { flushImmediate: true } to setAudioOption for an immediate one) to schedule a seamless audio-rendition change that avoids stalls and added live latency.
  • CMCD v2 — set cmcd.version: 2 to enable it, and configure cmcd.eventTargets to send standardized event reports to an external analytics endpoint. Not all CMCD v2 events, fields, and HLS.js features are supported as of this release.
  • Faster startup — alternate audio and video init segments now load in parallel; try a stream with separate audio/video renditions.
  • Improved support for looped video — a new loopBackBufferFlush config option flushes the lower-quality back buffer on looped streams.
  • Tune level selectionabrSwitchInterval throttles automatic quality switches, and errorPenaltyExpireMs lets a level penalized by a load error be re-elected instead of being avoided for the rest of the session.
  • Stop loading stale live streams — set liveMaxUnchangedPlaylistRefresh to error out with PLAYLIST_UNCHANGED_ERROR after a set number of unchanged playlist reloads instead of polling a dead playlist indefinitely.
  • Recover from broken appends — on live and VOD alike, appendTimeout bounds a SourceBuffer append that never completes, while MEDIA_SOURCE_REQUIRES_RESET and BUFFER_APPEND_NO_PROGRESS report a MediaSource that has to be reset and fragments that append without ever buffering.

Demo page

https://073606d7.hls-js-dev.pages.dev/demo/

Breaking changes

No public exports were removed and no runtime behavior changes are required to upgrade from v1.6 to v1.7. TypeScript consumers might see new compile errors where previously loose types have been narrowed. Each is listed with upgrade guidance in the migration guide:
https://github.com/video-dev/hls.js/blob/v1.7.0/MIGRATING.md#migrating-from-hlsjs-16-to-17

Some exported type dependencies ("eventemitter3", "@​svta/cml-cmcd", "@​svta/cml-utils", "@​svta/cml-structured-field-values") have not been bundled with hls.d.ts. This will be addressed in an upcoming patch.

Changes since the last release

Features
New API, error details, and config options

Nothing below is required to upgrade. Every addition is opt-in. Each entry links to its v1.7.0 API documentation.

Config options
  • abrSwitchInterval (0) minimum seconds between automatic ABR switches
  • appendTimeout (Infinity) milliseconds before an appendBuffer() operation is treated as timed out
  • emsgKLVSchemaUri (undefined) URN matched when extracting MISB KLV metadata from CMAF emsg boxes, defaulting to urn:misb:KLV:bin:1910.1
  • errorPenaltyExpireMs (0) milliseconds after which a level penalized for a load error can be re-elected
  • handleMpegTsVideoIntegrityErrors ('process' or 'skip') how corrupt MPEG-TS video is handled
  • iframeCacheLimit (2 * 1024 * 1024) bytes of I-frame data retained by I-frame player instances
  • liveMaxUnchangedPlaylistRefresh (Infinity, minimum 2) unchanged live reloads before PLAYLIST_UNCHANGED_ERROR
  • loopBackBufferFlush (undefined) flush the lower-quality back buffer on an upswitch when media.loop is true
  • nextAudioTrackBufferFlushForwardOffset (0.25) forward audio buffer retained on a scheduled audio switch
  • skipBufferHolePadding (0.1) padding added to the buffer-hole skip target
  • loggerId (undefined) prefixes debug logs for an Hls instance (assetPlayerId still fills in for it)
  • cmcd sub-options for CMCD v2: version (1 or 2), eventTargets (v2 event report endpoints), rtpSafetyFactor (5), loader, and reporterCallback (receives a CmcdCustomReporter for updateCustomData() and recordCustomEvent()). includeKeys is retyped from string[] to CmcdKey[]
  • Controller overrides that can be replaced or disabled: streamController, gapController, latencyController, id3TrackController, and iframeController
DRM callback arguments
Methods
  • hls.createIFramePlayer(configOverride?) returns HlsIFramesOnly | null, a player that renders #EXT-X-I-FRAME-STREAM-INF variants in a video element
  • hls.createImageIFramePlayer(configOverride?) returns HlsImageIFramesOnly | null, a player for "mjpg" image I-frame variants
  • iframePlayer.loadMediaAt(time, options?) loads, appends, and seeks to the I-frame at time (options is Partial<LoadMediaAtOptions>)
  • imagePlayer.attachImage(image) and imagePlayer.detachImage() attach or detach the HTMLImageElement used for rendering
  • hls.setAudioOption(option, flushImmediate?) takes an optional second argument to switch immediately rather than on schedule
Getters and setters
Error details

This release adds three Hls.ErrorDetails members and no new Hls.Events members.

  • PLAYLIST_UNCHANGED_ERROR (NETWORK_ERROR, non-fatal) a live playlist hit liveMaxUnchangedPlaylistRefresh consecutive unchanged reloads
  • BUFFER_APPEND_NO_PROGRESS (MEDIA_ERROR, non-fatal) an append cycle completed without increasing the fragment's buffered coverage, and adds appendsWithoutProgress to ErrorData
  • MEDIA_SOURCE_REQUIRES_RESET (MEDIA_ERROR) the MediaSource closed while attached or ended on an append error, with ResetMediaSource in errorAction.flags
Event payload and behavior changes
  • iframeVariants added to MANIFEST_LOADED and MANIFEST_PARSED
  • chunkMeta: ChunkMetadata added to FRAG_PARSED and FRAG_BUFFERED
  • subtitleTrack and closedCaptions added to CUES_PARSED
  • flushImmediate added to AudioSelectionOption and AUDIO_TRACK_SWITCHING
  • previousFrag added to FRAG_CHANGED, part to SUBTITLE_FRAG_PROCESSED and FRAG_DECRYPTED, timestampOffsets to INIT_PTS_FOUND, start, end, and error to BUFFER_FLUSHED, and context to LEVEL_LOADED, AUDIO_TRACK_LOADED, and SUBTITLE_TRACK_LOADED
  • networkDetails on playlist, fragment, asset-list, and error events is narrowed from any to NullableNetworkDetails
  • FRAG_PARSING_USERDATA is only emitted when text samples are found
  • MEDIA_DETACHED is now triggered synchronously by detachMedia() and transferMedia()
  • hls.loadingEnabled is false once the stream controller has stopped, not just after stopLoad()
Enhancements

Content protection (DRM)

Audio switching, live, and buffering

Stability and error handling

  • Add abrSwitchInterval to throttle automatic level switches (#​7669) @​christriants
  • Re-elect penalized levels once errorPenaltyExpireMs has passed (#​7771) @​Harshit661000143
  • Error and stop streaming after max unchanged live updates (#​7704) @​dzianis-dashkevich
    • Keep PLAYLIST_UNCHANGED_ERROR non-fatal so playback can reach the end of the playlist (#​7812) @​robwalch
  • SourceBuffer append operation timeout handling (#​7670) @​dzianis-dashkevich
  • Detect and recover from a MediaSource that reports "ended" or "closed" while still attached, which fixes ManagedMediaSource cold starts failing on iOS 26.2 (#​7697) @​zalishchuk
    • Surface the condition as the MEDIA_SOURCE_REQUIRES_RESET error so applications can handle it before automatic recovery (#​7699) @​christriants
    • Respond with a variant switch, a switch to SDR, and a MediaSource reset error action, so content that causes append errors no longer loops through recovery (#​7702) @​robwalch
    • Limit recovery attempts when a media element decode error, rather than an append error, closed the MediaSource (#​7707) @​robwalch

Timed metadata and track management

Networking and resilience

Performance, memory, and lifecycle

  • Cap the selected level to the player size with ResizeObserver, and make nextLevelSwitch more responsive (#​7108) @​robwalch
  • Clear the resolved fragment/part URL cache when done to reduce memory use (#​7731)
  • More reliable transmuxer teardown on destroy() (#​7863)
  • Keep inherited logger methods intact on destroy() (#​7864)
  • Improve M2TS init-segment handling and append-queue logging (#​7695)
  • Remove dead code and some unused exports for a smaller bundle (#​7882)
  • Faster parsing on low-powered devices: CEA-608 captions, Annex-B marker scanning in the tsdemuxer, and mp4 box parsing (#​7949, #​7955, #​7956) @​itsjamie
Bug fixes

Playback start, seeking, and timestamps

Media parsing and codecs

Audio tracks

Content protection (DRM)

Subtitles and captions

Live, interstitials, and content steering

  • Fix Low-Latency Live joins and resumption around interstitial prerolls and midrolls (#​7846, #​7908, #​7913, #​7935, #​7944) @​robwalch
    • _HLS_start_offset missing from asset-list requests on live join (#​7846, #​7944)
    • Live join with a PRE,ONCE preroll starting at the wrong position (#​7908)
    • Preroll resume colliding with a midroll, and midroll buffering and playback (#​7913)
    • Fatal "init load aborted" when the init segment load context changes at preroll end (#​7935)
  • Fix interstitial live start with a short sliding window (#​7799)
  • Do not reset interstitials when seeking between assets (#​7650)
  • Fix an interstitial-controller exception on legacy engines where media.play() returns no Promise (#​7586) @​malickyeu
  • Fix fallback to primary on live start (#​7651) @​robwalch
  • Content Steering: apply URI-REPLACEMENT HOST to the hostname only (#​7655)
  • Pathway Cloning: apply PARAMS after PER-VARIANT-URIS (#​7710)
  • Fix "discontinuity sequence mismatch" for fragment hint with no parts (#​7964)
  • Preserve existing query string when adding HLS delivery directives (#​7969) @​CarlLindqvist

Live updates and playlist parsing

  • Support an EXT-X-DISCONTINUITY-SEQUENCE declaration after the first media segment (#​7750)
  • Detect stream end after a live-to-VOD transition when endListFragments is stale (#​7754) @​alchemyyy
  • Fix the initial reload time of a live playlist loaded with hls.loadSource() (#​7875) @​robwalch
  • Defer playlist reload while the network is offline (#​7926) @​robwalch
  • Fix mapPartIntersection loop bounds (#​7859) @​sugarzyc
  • Do not request a video buffer flush or EOS when the main playlist is audio-only (#​7868)
  • Fix "Missing format identifier #EXTM3U" playlist parsing errors (#​7533)
  • Multivariant playlist parsing fixes (#​7523)
  • Support EXT-X-MEDIA-SEQUENCE declaration after EXT-X-SKIP (#​7905) @​hongjun-bae

Buffering, memory, recovery, startup, and teardown

  • Recover from QuotaExceededError by evicting the back buffer and retrying (#​7749) @​alchemyyy
  • Limit buffering while paused outside the live sliding window (#​7788) @​robwalch
  • Prevent loop-loading of segments whose appends were dropped (#​7797)
  • Forward transmuxer worker errors correctly (#​7883)
  • Make part.gap writable and handle part muxing errors as gaps (#​7814)
  • Mark fragments as gaps after repeated appends without buffered range growth (#​7941) @​rudemateo
    • Reported with the new BUFFER_APPEND_NO_PROGRESS error detail (see Error details above)
  • Treat un-demuxable fragments as a gap to prevent infinite reloading (#​7900) @​hongjun-bae
  • Fix selection with small samples (#​7939) @​robwalch
  • Prevent loop loading for SourceBuffer mismatch append errors (#​7965)
  • Guard abandon-rules check after destroy (#​7938) @​AmPlace

Regressions in development and v1.7 beta

  • Fix subtitle buffering up to or past media buffer (#​7921) @​robwalch
  • Fix fatal KEY_SYSTEM_ERROR handling (#​7920)
  • Fix autoStartLoad:false and deferred startPosition (#​7903)
  • Fix uncaught init-segment abort errors (#​7904)
  • Fix key-status internal-error handling (#​7963)
  • Fix MPEG-TS Sample-AES decryption (#​7959)
Build and CI
Documentation and README
Demo

Special thanks

Beyond the code contributors credited above, thank you to the community members whose issue reports drove fixes and improvements in this release:

Feedback

Provide feedback in GitHub Issues. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.

v1.6.18

Compare Source

Summary

HLS.js v1.6.18 includes bug fixes previously scheduled to land in v1.7.

Changes Since The Last Release

Demo Page

https://12b4538a.hls-js-dev.pages.dev/demo/

Feedback

Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.

v1.6.17

Compare Source

Summary

HLS.js v1.6.17 includes bug fixes previously scheduled to land in v1.7.

Changes Since The Last Release

Demo Page

https://e5f5c274.hls-js-dev.pages.dev/demo/

Feedback

Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/hls.js-1.x branch 2 times, most recently from 9e7bb6c to 829e7f2 Compare August 12, 2026 06:00
@renovate renovate Bot changed the title fix(deps): update dependency hls.js to ^1.6.17 fix(deps): update dependency hls.js to ^1.6.18 Aug 12, 2026
@renovate
renovate Bot force-pushed the renovate/hls.js-1.x branch from 829e7f2 to 910cf40 Compare August 12, 2026 21:58
@renovate renovate Bot changed the title fix(deps): update dependency hls.js to ^1.6.18 fix(deps): update dependency hls.js to ^1.7.0 Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants