• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Streaming Video & Ads for Browser release notesRSS

September 30
Media agent for HLS JS v2.0.1

Bug fixes

  • Fixed getSrc() returning the browser's temporary blob: URL instead of the actual manifest URL once HLS playback started. The tracker now reads the URL from the underlying Hls.js instance, so the real manifest URL is reported consistently during playback.

September 24
Media agent for CAF v5.0.0

New features

  • /browser subpath export: A @newrelic/video-caf/browser entry point is now available that excludes the unused connected-device pipeline from the bundled @newrelic/video-core dependency, keeping the bundle lean. A browser.js filesystem shim is also included for bundlers that don't honor the exports field.
  • Named export: { CAFTracker } is now available as a named export alongside the existing default export on both the root and /browser entry points.

Improvements

  • @newrelic/video-core updated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.

September 24
Agente de mídia para CAF v5.0.0

Novo recurso

  • Exportação de subcaminho/browser: Agora está disponível um ponto de entrada @newrelic/video-caf/browser que exclui o pipeline de dispositivo conectado não utilizado da dependência @newrelic/video-core empacotada, mantendo o pacote enxuto. Um shim de sistema de arquivos browser.js também está incluído para empacotadores que não respeitam o campo exports.
  • Exportação nomeada: { CAFTracker } agora está disponível como uma exportação nomeada junto com a exportação padrão existente nos pontos de entrada raiz e /browser.

Melhorias

  • @newrelic/video-core atualizado para 5.1.0, que inclui arquivos de declaração do TypeScript, correções de bugs upstream e patches de dependência.

September 22
Media agent for HLS JS v2.0.0

New features

  • /browser subpath export: A @newrelic/video-hls/browser entry point is now available that excludes unused Vega/connected-device code, reducing bundle size for browser consumers. A browser.js filesystem shim is also included for bundlers that don't honor the exports field.
  • Named export: { HLSTracker } is now available as a named export alongside the existing default export on both the root and /browser entry points.

Improvements

  • @newrelic/video-core updated to 5.1.0, which includes TypeScript declaration files, upstream bug fixes, and dependency patches.

September 22
Agente de mídia para HLS JS v2.0.0

Novo recurso

  • Exportação de subcaminho/browser: um ponto de entrada @newrelic/video-hls/browser agora está disponível, que exclui o código não utilizado do Vega/dispositivo conectado, reduzindo o tamanho do pacote para os consumidores do navegador. Um shim de sistema de arquivos browser.js também está incluído para empacotadores que não respeitam o campo exports.
  • Exportação nomeada: { HLSTracker } agora está disponível como uma exportação nomeada junto com a exportação padrão existente nos pontos de entrada raiz e /browser.

Melhorias

  • @newrelic/video-core atualizado para 5.1.0, que inclui arquivos de declaração do TypeScript, correções de bugs upstream e patches de dependência.

September 17
Media agent for Video JS v5.0.0

  • Breaking change: This release adds a package.json#exports map. Deep imports into internal paths of this package will no longer resolve — only the root export (@newrelic/video-videojs-js) and the new /browser subpath are valid import targets. Update any direct deep-imports before upgrading.

New features

  • /browser subpath export: A @newrelic/video-videojs-js/browser entry 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_ERROR events (MediaTailor): Non-terminal failures now surface as AD_ERROR events in NRDB with a semantic errorCode (NO_FILL, ADS_TIMEOUT, TRACKING_FETCH_FAILED, TOKEN_EXPIRED, MISSING_AVAIL_START, MANIFEST_TRACKING_MISMATCH) instead of only appearing in the debug log.
  • adPrimaryId attribute (MediaTailor): AD_START, AD_END, and AD_QUARTILE now carry adPrimaryId (the VAST creativeId, falling back to availId:adId) so count(DISTINCT adPrimaryId) counts true creatives, not per-avail ad IDs.

Improvements

  • @newrelic/video-core updated to 5.1.0, which includes a TypeScript conversion, upstream bug fixes, and dependency patches.
  • Configurable poll cadence (MediaTailor): config.ad.pollIntervalMs overrides 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 explicit trackingUrl on 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.segmentPrefix was 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_END was 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 startTimeInSeconds were silently dropped, undercounting impressions in NRDB; the tracker now falls back to the first ad's start and emits MISSING_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 plus AD_ERROR(NO_FILL).
  • MediaTailor: Expired tracking pagination tokens (HTTP 400) were not handled; the token is now dropped and retried once before emitting TOKEN_EXPIRED and stopping polling.
  • MediaTailor: Manifest fetches did not re-check isDisposed after each await, risking state mutation on a disposed tracker.
  • AD_RESUME was 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 presentationTime values 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.

September 17
Agente de mídia para Video JS v5.0.0

  • Alteração incompatível: esta versão adiciona um mapa package.json#exports. Importações profundas para caminhos internos deste pacote não serão mais resolvidas — apenas a exportação raiz (@newrelic/video-videojs-js) e o novo subcaminho /browser são destinos de importação válidos. Atualize quaisquer importações profundas diretas antes de fazer a atualização.

Novo recurso

  • Exportação de subcaminho/browser: um ponto de entrada @newrelic/video-videojs-js/browser agora está disponível, o qual exclui o código não utilizado do Vega/dispositivo conectado, reduzindo o tamanho do pacote para os consumidores do navegador.
  • notifyAdSkipped() (MediaTailor): aplicativos host com uma interface personalizada de pular anúncio podem relatar um pulo iniciado pelo usuário. Emite o evento de fim de anúncio pulado quando em um anúncio; caso contrário, nenhuma operação. Reflete a API equivalente nos rastreadores iOS/Android.
  • stopTracking() (MediaTailor): desmontagem reversível que interrompe a sondagem e cancela o registro de ouvintes sem descartar o rastreador, para que possa ser retomada posteriormente. Compartilha o nome do método usado pelos rastreadores do iOS/Android.
  • EventosAD_ERROR (MediaTailor): falhas não terminais agora surgem como eventos AD_ERROR no NRDB com um errorCode semântico (NO_FILL, ADS_TIMEOUT, TRACKING_FETCH_FAILED, TOKEN_EXPIRED, MISSING_AVAIL_START, MANIFEST_TRACKING_MISMATCH) em vez de aparecerem apenas no log de depuração.
  • AtributoadPrimaryId (MediaTailor): AD_START, AD_END e AD_QUARTILE agora carregam adPrimaryId (o creativeId do VAST, recorrendo a availId:adId) para que count(DISTINCT adPrimaryId) conte criativos verdadeiros, não IDs de anúncios por disponibilidade.

Melhorias

  • @newrelic/video-core atualizado para 5.1.0, que inclui uma conversão para TypeScript, correções de bugs upstream e patches de dependência.
  • Cadência de sondagem configurável (MediaTailor): config.ad.pollIntervalMs substitui o intervalo de sondagem ao vivo derivado do manifesto (limitado a 100–5000 ms) para clientes com restrição de bateria ou CPU. O comportamento permanece inalterado quando a opção é omitida.
  • URL de rastreamento do manifesto HLS (MediaTailor): o rastreador agora lê o endpoint de rastreamento de uma tag #EXT-X-DATERANGE CLASS="tracking" quando presente, removendo a necessidade de passar um trackingUrl explícito em CDNs não AWS. Uma opção explícita ainda tem precedência.
  • Redefinição de alteração de origem (MediaTailor): a troca de player.src() agora redefine o rastreador — cancela as buscas em andamento, limpa a programação de anúncios obsoleta e deriva novamente o endpoint de rastreamento — em vez de continuar a consultar o endpoint da sessão anterior.

Correções de bugs

  • MediaTailor: apenas o primeiro anúncio em um pod de vários anúncios foi rastreado. O loop de paginação buscava novamente a mesma disponibilidade em cada página; o rastreador agora busca a janela completa em uma única solicitação sem token.
  • MediaTailor: o endpoint de rastreamento não pôde ser derivado para URLs de lista de reprodução de mídia de sessão implícita, portanto, a detecção de anúncios de nível 1 nunca foi executada para essas sessões.
  • MediaTailor: config.ad.segmentPrefix foi ignorado silenciosamente porque foi mapeado para a chave interna incorreta.
  • MediaTailor: um período DASH foi classificado como um anúncio quando apenas uma de várias representações foi resolvida para um URL marcado como anúncio. A classificação agora exige que todas as representações correspondam.
  • MediaTailor: AD_END não era acionado quando um pod terminava antes do limite de intervalo que o envolvia, fazendo com que as conclusões fossem subcontadas.
  • MediaTailor: incompatibilidades de contagem de pods entre o manifesto e os dados de rastreamento corrompiam silenciosamente a geometria do intervalo; o rastreador agora reconcilia as contagens explicitamente e emite MANIFEST_TRACKING_MISMATCH.
  • MediaTailor: as disponibilidades com um startTimeInSeconds ausente eram descartadas silenciosamente, subcontando as impressões no NRDB; o rastreador agora recorre ao início do primeiro anúncio e emite MISSING_AVAIL_START.
  • MediaTailor: a janela deslizante ao vivo mescla novamente os intervalos de anúncios duplicados ou descartados quando os horários de início oscilavam; os intervalos agora são desduplicados por identidade estável (availId + availProgramDateTime).
  • MediaTailor: disponibilidades sem preenchimento emitiam eventos AD_START/quartil fantasmas; agora, elas emitem apenas limites de intervalo mais AD_ERROR(NO_FILL).
  • MediaTailor: os tokens de paginação de rastreamento expirados (HTTP 400) não eram tratados; o token agora é descartado e tentado novamente uma vez antes de emitir TOKEN_EXPIRED e interromper a sondagem.
  • MediaTailor: as buscas de manifesto não verificavam novamente isDisposed após cada await, arriscando a mutação de estado em um rastreador descartado.
  • AD_RESUME era acionado na primeira reprodução de um anúncio, não apenas após uma pausa genuína.
  • Descartar no meio do anúncio não emitia os AD_END/AD_BREAK_END pendentes, deixando o intervalo solto.
  • Os valores de presentationTime do DASH EventStream eram tratados como ticks brutos em vez de serem convertidos em segundos, posicionando os anúncios em deslocamentos incorretos.
  • Os intervalos de anúncios HLS analisados por #EXT-X-CUE-OUTnão inicializaram os sinalizadores de quartil, fazendo com que os eventos de quartil fossem acionados mais de uma vez por anúncio.

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-levels plugin (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-core dependency 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-core dependency to v5.0.1, adding Japan (JP) region collector support for Vega/Fire TV tracking.

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.