• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

Browser agent release notesRSS

January 18, 2023
Browser agent v1222

New Features

EXPERIMENTAL - Unblock instrumented pages from the back/forward cache (w/ feature flag)

An instrumented page's back-forward cache eligibility was hampered by the agent's unload listener, which will be removed when a feature flag is on. With the allow_bfcache enabled in the init config, the agent's definition of (the end of) an user's session is more refined, and it will no longer be blocking the browser from utilizing its respective b/f cache.

Internal

Reduce size of builds for modern browser targets

The agent is now compatible with only modern web syntax (ES6+); this reduces loader size for these browsers by 20% or more. We target and test support for just the last ten versions of Chrome, Edge, Safari, and Firefox -- see browser agent EOL policy for more details.

Bug Fixes

Prevent feature from collecting and harvesting future data if account entitlements are invalid

The agent will now attempt to shut down an initialized feature if account entitlements are invalid. Accounts that lack entitlements to use certain endpoints will see many 403 errors in the console without this behavior. This behavior requires the Page View Event feature to be enabled.

Do not collect XHR events for data URLs

AJAX events for data URLs have not historically been collected due to errors in the agent when handling URLs without hostnames. Going forward, XHR calls to data URLs will not cause agent errors and will continue to be excluded from collection.

Fix nrWrapper exclusion in error stack traces

Restoring previous functionality whereby the nrWrapper agent method should be excluded from JavaScript error stack traces.

Fix errors with global self redefinition

Fixing an issue where external code redefining the self global variable causes the agent async loading to fail and the agent to crash.

Fix check for sessionStorage object

Ensure the agent does not crash when sessionStorage is not available or when the quota has been exceeded or set to 0.

December 15, 2022
Browser agent v1221

New Features

Add infrastructure to run on web workers

The agent's infrastructure will now allow for the agent to be built to run on web workers for future projects.

Bug Fixes

Expose webpack library as output type "self" vs. "umd"

To address "mismatched anonymous define" errors thrown by RequireJS, the agent's webpack library output will no longer include UMD checks for CommonJS and AMD module environments, and will instead be exposed globally via self.

Fix custom attribute handling in cases where the info block is loaded after initialization

Fixed an issue where custom attributes could be cleared and reset if the info block was included on the page below the loader script. Our guidance still remains that all configurations should be included on the page above the loader code, however this is an attempt to do no harm when feasible for backwards compatibility.

Update JS error bucketing algorithm

The agent will now take into account the error object type, message, and original stack trace when deciding on whether multiple JS errors should be bucketed together.

Fix initial page load interaction reporting with Nuxt

Fixed an issue where when using the SPA loader with Nuxt, the initial page load interaction was never being completed. This resulted in events like errors being retained in memory and never harvested because they were tied to an incomplete interaction.

Fix error with jsPDF library and SPA agent

Fixed an issue with the jsPDF library where it was not correctly detecting browser native support for Promises due to our wrapper. This resulted in an exception and jsPDF not generating the PDF. This issue is not present with the pro or lite agent.

Note: This issue does not affect the pro or lite agent. This change allows the jsPDF library to function correctly when the SPA agent is used. However, it does cause an internal error within the agent to be generated. This error does not break the agent, jsPDF, or other functionality. The issue is planned to be addressed in a future update.

October 7, 2022
Browser agent v1220

This release is in public preview. We're slowly rolling out these features to different browser agents based on the browser's instrumentation method. Here's the release timeline:

  • Internal NR Platform release date: 10/07/2022
  • Production APM-injected release date: 10/7/2022
  • Production Standalone release date: Estimated around 12/13/2022

New Features

Capture unhandled Promise rejections

The Agent now observes and captures unhandled Promise rejections as JavaScript Error objects.

Removed 3rd Party Cookies

The browser agent no longer uses 3rd party cookies to maintain and track session information. 1st party implementation using window.sessionStorage is now used, which is automatically cleared when a page session ends. This is still managed using the privacy settings form in your browser application settings.

LCP is no longer reported on initially-hidden pages

LCP metrics are no longer reported on pages whose state is hidden at load time, such as tabs refreshing in the background of a focused tab.

Async Module Loading

Individual features of the browser agent can now be dynamically loaded, enabled, or disabled at runtime.

Removal of script tag injection

The agent no longer inserts other features into the page via a script tag insertion. It now uses network requests to instantiate other code modules.

Updated test process

In an effort to better support the majority of our traffic, the test suite required to merge PRs has been updated to run against the latest 10 major versions of Chrome, Firefox, Edge, Android, and the latest 5 major versions of Safari and iOS. As part of this process, outdated code and polyfill libraries aimed at supporting deprecated browsers are no longer included in production builds by default.

Bug Fixes

Fixed issue with BrowserInteraction nodes generating circular references

BrowserInteractions no longer generate circular trees when they are self referential.

Remove non-ASCII characters from builds

Certain dependencies were appending non-ASCII characters to build files. These characters were affecting older Python agent implementations downstream that worked to parse and encode the agent snippet. The build files are now checked and cleaned of non-ASCII characters before shipping.

April 20, 2022
Browser agent v1216

  • Internal NR Platform release date: 04/19/2022
  • Production APM-injected release date: 04/20/2022
  • Production Standalone release date: 04/27/2022

New Features

Introduced obfuscation mechanism to payloads

Added internal mechanism for applying regex and replacement rules to all strings in payloads to obfuscate before sending to ingest.

Automatically obfuscate file:// protocol

A change has been implemented in our handling of applications hosted locally on a file:// protocol. For security reasons, we can not send payloads that contain file information, so our previous implementation revolved around completely shutting the agent down when file:// protocols were detected. This change automatically obfuscates all file:// paths from our payloads before sending to ingest.

Bug Fixes

Fixed issue with trace ID random hex character length

The final character in trace ID hex generation was returning as undefined, which translated to always be 0 (undefined & 15 === 0). This change fixes this final character and ensures it is valid.

January 25, 2022
Browser agent v1215

Improvements

  • Internal NR Platform release date: 01/24/2021
  • Production APM-injected release date: TBD
  • Production Standalone release date: TBD

Collect supportability metrics for frontend frameworks

Added frontend framework detection metrics to help guide future priorities for browser agent features. The following frontend frameworks will now be detected and analyzed:

  • React
  • Angular
  • AngularJS
  • Backbone
  • Ember
  • Vue
  • Meteor
  • Zepto
  • Jquery

January 6, 2022
Browser agent v1214

Improvements

Added NetworkInformation attributes to LCP & FI

The Largest Contentful Paint (largestContentfulPaint) and First Interaction (firstInteraction) PageViewTiming events will now include attributes from the NetworkInformation API (on compatible browsers) observed on the page. This includes network type (networkType), round trip time (rtt) and downlink (downlink).

Added element identification attributes to LargestContentfulPaint

LargestContentfulPaint PageViewTiming events will now include the elementTagName attribute which represents the triggering element's tag name. If the triggering element is an image, the event will also include the elementUrl representing the image URL if present.

Included page view timing data in session trace payload

If observed, the agent will now include PageViewTiming events in the session trace waterfall payload. These events will be available in an upcoming update to the session traces UI.

Added session trace IDs to harvests

If a session trace is active on a page, a session trace ID associated with that trace will now be appended to all subsequent events generated on the page for the linking of session-related datasets downstream. This ID will be appended to any payload that sent after a session trace has been started. PageView events are generated before session traces begin and will not contain this ID and in most cases Initial Page Load BrowserInteraction events complete before a session trace begins and are not guaranteed to contain this ID.

Bug fixes

Exclude Data URL requests from Ajax events and metrics

Previously, XMLHttpRequest and Fetch calls made with Data URLs could prevent the agent from harvesting data.

November 8, 2021
Browser agent v1212

Improvements

Updated LCP tracking

Largest Contentful Paint will now stop being tracked when page visibility changes to hidden. This aligns with the web-vitals library.

Added passive flag to addEventListener calls

Using the addEventEventListener without the passive flag for the touchstart event is flagged in Lighthouse. The passive flag is now applied to all addEventListener calls in the agent.

Update to Cumulative Layout Shift calculation

The CLS calculation has been updated to use session windows in order to align with Google Chrome tooling (Lighthouse, PageSpeed Insights, CrUX). For more information, see the official blog post on web.dev.

Bug Fixes

Fixed issue with Array.isArray() call

Array.isArray() call is not supported on old browsers and can cause a runtime error. This call has been replaced with an alternative that works on older browsers.

Fixed issue with null function argument in the addEventListener API

When a null value was passed in to the addEventListener API, the agent would report an internal error. This edge case is now being handled.

Fixed issue with Ajax deny list

There was an edge case where certain ajax calls could have been excluded when they should not have been. This is now handled correctly.

Miscellaneous

Added support for collecting internal/supportability metrics

The agent can now send metrics that capture information about how the agent itself is working internally.

Added agent supportability metrics for tracking API usage

Added agent supportability metrics for tracking excluded Ajax events

October 6, 2021
Browser agent v1211

Improvements

AjaxRequest events for all XHR/fetch requests

Previously, XHR/fetch requests were captured as AjaxRequest events only when they were part of a route change. With this change, all requests will be captured as events. This feature can be further configured by specifying which requests should not be collected.

Span events are for all XHR/fetch requests

Previously, Span events were generated only for XHR/fetch requests that were part of a route change. With this change, all requests will be captured as Spans.

Update to Cumulative Layout Shift calculation

The CLS calculation has been updated to use session windows in order to align with Google Chrome tooling (Lighthouse, PageSpeed Insights, CrUX). For more information, see the official blog post on web.dev.

Bug Fixes

Prevent duplicate session trace nodes

The agent no longer calls the clearResourceTimings API, which had the potential to affect other scripts from accessing all resources. Instead, it now uses the PerformanceObserver API to collect information about resources.

June 30, 2021
Browser agent v1210

Improvements

PageHide PageViewTiming events are now accounted for during page unload events

PageHide PageViewTiming events are used to query CLS values. In cases where the page was never hidden, inconsistencies would arise because the PageViewTiming event with that type would not be collected. Now when pageUnload fires, if a pageHide PageViewTiming has not already been set, it will set it to the time of unload.

Perfect Cumulative Layout Scores (CLS) are now recorded as 0

Perfect CLS scores were being ignored, because a score was only recorded when content shifted. This change reports perfect scores as 0, fixing inconsistent CLS queries.

Record fetch calls as metrics

Fetch calls are currently only recorded as AjaxRequest events with SPA browser interactions. This change records fetch calls as AJAX metrics, which will make them visible in the AJAX UI charts.

May 26, 2021
Browser agent v1209

Improvements

Doubled the limit of PageAction events per harvest

Up to 120 PageAction events can be harvested every 30 seconds.

Removed call to /ping endpoint

Removed a legacy behavior used to ensure network connection was kept alive in IE 7/8/9.

Bug Fixes

Prevent duplicate session trace nodes

The final Session Trace node in a harvest, captured using the Resource Timing API, is no longer duplicated in the subsequent harvest.

This issue lead to 1 duplicate node in a Session Trace, every 10 seconds, over the duration of the trace.

Memory overhead when agent script

Fixed a memory leak in the agent when the network request to load the second part of the agent is blocked.

Update to file protocol restriction

Fixed an error thrown in the console when the agent is loaded using the file:// protocol caused by features in the agent trying to run when others had been aborted.

setTimeouts without callback functions

Fixed an issue where route change Browser Interactions would wait forever if a setTimeout was called without a callback function (passing code in as a string in the first argument) as the first argument.

Cypress.io

Fixed a conflict between the Browser agent and the Cypress.io test framework when instrumenting XMLHttpRequest.

Copyright © 2024 New Relic株式会社。

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