September 24
Media agent for CAF v5.0.0
New features
/browsersubpath export: A@newrelic/video-caf/browserentry point is now available that excludes the unused connected-device pipeline from the bundled@newrelic/video-coredependency, keeping the bundle lean. Abrowser.jsfilesystem shim is also included for bundlers that don't honor theexportsfield.- Named export:
{ CAFTracker }is now available as a named export alongside the existing default export on both the root and/browserentry points.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.
September 22
Media agent for HLS JS v2.0.0
New features
/browsersubpath export: A@newrelic/video-hls/browserentry point is now available that excludes unused Vega/connected-device code, reducing bundle size for browser consumers. Abrowser.jsfilesystem shim is also included for bundlers that don't honor theexportsfield.- Named export:
{ HLSTracker }is now available as a named export alongside the existing default export on both the root and/browserentry points.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.
September 17
Media agent for Video JS v5.0.0
- Breaking change: This release adds a
package.json#exportsmap. Deep imports into internal paths of this package will no longer resolve — only the root export (@newrelic/video-videojs-js) and the new/browsersubpath are valid import targets. Update any direct deep-imports before upgrading.
New features
/browsersubpath export: A@newrelic/video-videojs-js/browserentry point is now available that excludes unused Vega/connected-device code, reducing bundle size for browser consumers.notifyAdSkipped()(MediaTailor): Host apps with a custom skip-ad UI can report a user-initiated skip. Emits the skipped ad-end event when in an ad; no-op otherwise. Mirrors the equivalent API on the iOS/Android trackers.stopTracking()(MediaTailor): Reversible teardown that stops polling and unregisters listeners without disposing the tracker, so it can be resumed later. Shares the method name used by the iOS/Android trackers.AD_ERRORevents (MediaTailor): Non-terminal failures now surface asAD_ERRORevents in NRDB with a semanticerrorCode(NO_FILL,ADS_TIMEOUT,TRACKING_FETCH_FAILED,TOKEN_EXPIRED,MISSING_AVAIL_START,MANIFEST_TRACKING_MISMATCH) instead of only appearing in the debug log.adPrimaryIdattribute (MediaTailor):AD_START,AD_END, andAD_QUARTILEnow carryadPrimaryId(the VASTcreativeId, falling back toavailId:adId) socount(DISTINCT adPrimaryId)counts true creatives, not per-avail ad IDs.
Improvements
@newrelic/video-coreupdated to 5.1.0, which includes a TypeScript conversion, upstream bug fixes, and dependency patches.- Configurable poll cadence (MediaTailor):
config.ad.pollIntervalMsoverrides the manifest-derived live poll interval (clamped to 100–5000 ms) for battery- or CPU-constrained clients. Behavior is unchanged when the option is omitted. - Tracking URL from HLS manifest (MediaTailor): The tracker now reads the tracking endpoint from an
#EXT-X-DATERANGE CLASS="tracking"tag when present, removing the need to pass an explicittrackingUrlon non-AWS CDNs. An explicit option still takes precedence. - Source-change reset (MediaTailor): Swapping
player.src()now resets the tracker — cancels in-flight fetches, clears the stale ad schedule, and re-derives the tracking endpoint — instead of continuing to poll the previous session's endpoint.
Bug fixes
- MediaTailor: Only the first ad in a multi-ad pod was tracked. The paging loop re-fetched the same avail on every page; the tracker now fetches the full window in a single tokenless request.
- MediaTailor: The tracking endpoint could not be derived for implicit-session media-playlist URLs, so Tier-1 ad detection never ran for those sessions.
- MediaTailor:
config.ad.segmentPrefixwas silently ignored because it was mapped to the wrong internal key. - MediaTailor: A DASH period was classified as an ad when only one of several representations resolved to an ad-marked URL. Classification now requires every representation to match.
- MediaTailor:
AD_ENDwas not fired when a pod ended before its enclosing break boundary, causing completions to be undercounted. - MediaTailor: Pod-count mismatches between manifest and tracking data silently corrupted break geometry; the tracker now reconciles counts explicitly and emits
MANIFEST_TRACKING_MISMATCH. - MediaTailor: Avails with a missing
startTimeInSecondswere silently dropped, undercounting impressions in NRDB; the tracker now falls back to the first ad's start and emitsMISSING_AVAIL_START. - MediaTailor: Live sliding-window re-merges duplicated or dropped ad breaks when start times jittered; breaks now deduplicate by stable identity (
availId+availProgramDateTime). - MediaTailor: No-fill avails emitted phantom
AD_START/quartile events; they now emit only break boundaries plusAD_ERROR(NO_FILL). - MediaTailor: Expired tracking pagination tokens (
HTTP 400) were not handled; the token is now dropped and retried once before emittingTOKEN_EXPIREDand stopping polling. - MediaTailor: Manifest fetches did not re-check
isDisposedafter eachawait, risking state mutation on a disposed tracker. AD_RESUMEwas fired on first play into an ad, not only after a genuine pause.- Disposing mid-ad did not emit the outstanding
AD_END/AD_BREAK_END, leaving the break dangling. - DASH EventStream
presentationTimevalues were treated as raw ticks instead of being converted to seconds, misplacing ads at wrong offsets. - HLS
#EXT-X-CUE-OUT-parsed ad breaks did not initialize quartile flags, causing quartile events to fire more than once per ad.
August 11
Media agent for Video JS v4.2.1
New features
- Added optional automatic rendition/quality-level change tracking: integrates with the
videojs-contrib-quality-levelsplugin (when present) to report quality transitions along with the previous and new bitrates, with a graceful fallback when the plugin isn't loaded.
August 6
Media agent for Dash JS v5.0.1
Bug fixes
- Updated the bundled
@newrelic/video-coredependency to v5.0.1, adding Japan(JP) region collector support for Vega/Fire TV tracking.
August 6
Media agent for HTML5 v5.0.1
Bug fixes
- Updated the bundled
@newrelic/video-coredependency to v5.0.1, adding Japan (JP) region collector support for Vega/Fire TV tracking.
August 6
Media agent for Shaka v5.0.1
Bug fixes
- Updated the bundled
@newrelic/video-coredependency to v5.0.1, adding Japan(JP) region collector support for Vega/Fire TV tracking.
July 29
Media agent for HTML5 v5.0.0
What's changed
- feat: Add Vega Video Monitoring support by @rajeevkumar-nr in https://github.com/newrelic/video-html5-js/pull/58
- Release/06 jul2026 by @rajeevkumar-nr in https://github.com/newrelic/video-html5-js/pull/59
- feat: Update html5 tracker version by @rajeevkumar-nr in https://github.com/newrelic/video-html5-js/pull/61
Full Changelog: https://github.com/newrelic/video-html5-js/compare/v4.1.2...v5.0.0
June 29
Media agent for HTML5 v4.1.2
What's changed
- chore: release updated by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/39
- Fix/workflow by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/40
- chore: add smart release detection and improve workflow triggers by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/41
- fix: buffer end fix by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/44
- Release/25 may2026 by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/45
- chore: add release notes docs PR workflow by @ametku in https://github.com/newrelic/video-html5-js/pull/46
- chore: release workflow updated by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/49
- fix: address docs reviewer comments on release notes PR format by @mlychndnnr in https://github.com/newrelic/video-html5-js/pull/52
- chore: trigger release-notes-docs-pr after release creation by @ametku in https://github.com/newrelic/video-html5-js/pull/56
- chore(release): v4.1.2 by @github-actions[bot] in https://github.com/newrelic/video-html5-js/pull/50
New Contributors
- @github-actions[bot] made their first contribution in https://github.com/newrelic/video-html5-js/pull/50
Full Changelog: https://github.com/newrelic/video-html5-js/compare/v4.1.1...v4.1.2
June 19
Media agent for Video JS v4.2.0
Highlights
- Explicit opt-in for AWS MediaTailor, with full support for custom CDN domains.
- New
config.ad.typeAPI to choose between CSAI and SSAI (DAI,MT) ad tracking — no more URL-based guessing for SSAI. - End-to-end logging through
nrvideo.Log, with active detection mode logged at startup.
Features
MediaTailor custom CDN support
Replaced URL-based auto-detection with explicit opt-in.
- Enabled the tracker via
mediatailor: true(ormediatailor: { trackingUrl, adSegmentPrefix }), supporting both default AWS hostnames and custom CDN domains. - Added
MT_DEFAULT_AD_SEGMENT_PATH(/tm/) constant for AWS-recommended CDN ad-segment path; ad segments rewritten to a custom CDN domain under/tm/are detected automatically. - Updated
isMediaTailorSegment()to check the default AWS segments hostname, the/tm/path, and an optional customer-suppliedadSegmentPrefix. - Threaded
adSegmentPrefixthrough HLS (VHS) and DASH manifest parsing. - Added explicit session initialization via
mediatailor: { trackingUrl }forPOST /v1/session/flows.
Ad tracking configuration
Introduced config.ad.type to control ad tracker selection.
- Exposed
AD_TRACKINGconstant with CSAI (flat value covering IMA / Brightcove IMA / Freewheel / generic) and SSAI sub-types (DAI,MT). - Required an explicit sub-type for SSAI — each platform needs its own SDK and cannot be auto-detected.
- Mapped
SSAI.MTto implymediatailor: true. - Added a fallback to CSAI auto-detection with a warning when
config.ad.typeis unset (backward compatible for v4.1.2 users). - Co-located
segmentPrefixandtrackingUrlunderconfig.ad. - Added
DaiAdsTrackerto static exports.
Logging improvements
- Exposed
VideojsTracker.Logas a static so UMD callers can set log level. - Added logging of the active ad segment detection mode at tracker startup.
- Added logging of the matched ad segment detection path on the first ad break (once per session).
- Added logging of which CSAI framework was auto-detected (BrightcoveIma / IMA / Freewheel / generic).
- Replaced
console.log/warn/errorwithnrvideo.Logacross MediaTailor files.
Bug fixes
- Fixed buffer end handling in tracker.
- Fixed
register-plugin.jssilently dropping the options object and not forwarding it to theTrackerJSconstructor.
Documentation
- Updated the README and SSAI docs for custom CDN support, clarified when
trackingUrlandadSegmentPrefixoverrides are needed, and cleaned upsessionIdreferences. - Corrected
adSegmentPrefixreferences toconfig.ad.segmentPrefixin the SSAI troubleshooting docs.
Upgrade from 4.1.x
- No breaking changes for CSAI users. If
config.ad.typeis unset, the tracker still auto-detects CSAI frameworks (with a one-time warning). - MediaTailor users must opt in explicitly. Replace any URL-pattern reliance with one of:
mediatailor: true(default AWS hostnames +/tm/path)mediatailor: { trackingUrl, adSegmentPrefix }(custom CDN / explicit session init)config.ad.type: AD_TRACKING.SSAI.MT
- If you previously passed
adSegmentPrefixat the top level, move it toconfig.ad.segmentPrefix.