- Fix (
@grafana/faro-web-sdk
): Update Faro log parsing in console instrumentation to use Faro's default log parser (#745)
- Fix (
@grafana/faro-web-sdk
): Guard console instrumentation stringifier against circular object references for non-error logs (#742)
-
Fix (
@grafana/faro-web-sdk
): Guard user session stringifier against circular object references (#715) -
Fix (
@grafana/faro-web-sdk
): Prevents circular references in objects sent viaconsole.error
messages (#730) -
Refactor (
@grafana/faro-web-sdk
): Provide config option to send log messages for console.error calls (#731) -
Feat (
@grafana/faro-web-sdk
): Provide agetIgnoreUrls()
function to easily retrieve the configured ignoreUrls (#732)
- Improvement (
@grafana/faro-web-sdk
): The console instrumentation now sends anError
signal instead of aLog
signal forconsole.error()
calls (#703). - Improvement (
@grafana/faro-web-sdk
): The resource timings instrumentation now includesttfb
(Time to First Byte) andvisibilityState
infaro.performance.resource
timings (#708). - Deps (
@grafana/faro-*
): Minor dependency updates.
- Fix (
@grafana/faro-web-tracing
): Enhance the xhr instrumentation to handle both URL objects and strings seamlessly (#695).
-
Improvement (
@grafana/faro-web-sdk
): Isolated Faro instances now exclude the default collector URLs of other instances by default (#684). -
Improvement (
@grafana/faro-web-sdk
): ThepushError
API now automatically includeserror.cause
in the Faro exception context (#688). -
Fix (
@grafana/faro-transport-otlp-http [experimental]
): addservice.namespace
attribute if set (#687).
- Improvement (
@grafana/faro-transport-otlp-http [experimental]
): update semantic attributes for browser (#684).browser.user_agent
is replaced byuser_agent.original
browser.os
is replaced bybrowser.platform
-
Improvement (
@grafana/faro-web-sdk
): don't automatically send aview_change
event for the default view (#647) -
Dependencies (
@grafana/faro-web-tracing
): upgrade otel deps (#670)- Note: some attributes have been changed due to otel semantic attributes spec or are now aligned
with it. For the web-tracing package we provide both attribute versions for now:
deployment.environment
is now deprecated and will be replaced bydeployment.environment.name
.session_id
is now deprecated and will be replaced bysession.id
- Note: some attributes have been changed due to otel semantic attributes spec or are now aligned
with it. For the web-tracing package we provide both attribute versions for now:
-
Dependencies (
@grafana/faro-core
): upgrade otel deps (#670).
-
Dependencies (
@grafana/faro-transport-otlp-http [experimental]
): upgrade otel deps (#670)- Note: some attributes have been changed due to otel semantic attributes spec:
enduser.id
is replaced byuser.id
enduser.name
is replaced byuser.username
,enduser.email
is replaced byuser.email
,enduser.attributes
is replaced byuser.attributes
,http.url
is replaced byurl.full
deployment.environment
is replaced bydeployment.environment.name
- Note: some attributes have been changed due to otel semantic attributes spec:
- Fix (
@grafana/faro-transport-otlp-http [experimental]
): Properly consume response body (#664).
-
Improvement (
@grafana/faro-web-sdk
): Provide and option to pass a correction timestamp via the Faro API (#658). -
Fix (
@grafana/faro-web-sdk
): Adjust the timestamp of a navigation or resource event to reflect the actual time the event occurred, rather than the signal creation time. (#658). -
Improvement: (
@grafana/faro-web-tracing
) The underlying XHR and Fetch instrumentation are now configured to ignore network events by default. This behavior can be enabled back through the options in the WebTracing class.
- Improvement (
@grafana/faro-web-tracing
): ensure that span status is always set to error for erroneous xhr requests (#644).
- Improvement (
@grafana/faro-web-tracing
): ensure that span status is always set to error for erroneous fetch requests (#641).
-
Feature (
@grafana/faro-web-sdk
): trackweb vitals
attribution (#595). -
Feature (
@grafana/faro-web-sdk
): set span context for navigation events (#608). -
Feature (
@grafana/faro-react
): add helper functions to initialize React Router integration (#622). -
Improvement (
@grafana/faro-web-sdk
): Auto extend a session if the Faro receiver indicates that a session is invalid (#591). -
Improvement (
@grafana/faro-web-tracing
): provide theapp.namespace
attribute in the app meta which is attached asservice.namespace
to the resource attributes object (#627). -
Dependencies (
@grafana/faro-web-tracing
): upgrade otel deps (#621). -
Dependencies (
@grafana/faro-core
): upgrade otel deps (#621). -
Dependencies (
@grafana/faro-transport-otlp-http [experimental]
): upgrade otel deps (#621). -
Fix (
@grafana/faro-react
): Markreact-router-dom
peer dependency as optional (#617).
- Feature (
@grafana/faro-core
): source map uploads - addbundleId
to theMetaApp
Meta
object (#476). - Feature (
@grafana/faro-web-sdk
): track window dimensions via thebrowser meta
(#594). - Feature (
@grafana/faro-web-sdk
): IflogArgsSerializer
is set in the config ofinitializeFaro
, it will be forwarded to the core (#589).
- Fix (
@grafana/faro-react
): Fixed a type issue in react v6 router dependencies (#585).
- Improvement (
@grafana/faro-core
): Config has now a parameterlogArgsSerializer
to set a custom serializer for log arguments (#564). This is useful if log message args are complex and might produce[object Object]
in the logs. - Fix (
@grafana/faro-web-tracing
): Fix an import issue causing builds to fail (#581). - Fix (
@grafana/faro-react
): Fix type issues in react data route wrapperwithFaroRouterInstrumentation
(#584).
- Improvement (
@grafana/faro-web-sdk
): provide option to globally exclude endpoint URLs from being tracked. This applies to the following instrumentations: performance, xhr, fetch and web-tracing (#554). - Update (
faro demo
): Update Demo to pin docker images and replace Cortex by Mimir (#563). - Improvement (
faro demo
): Migrate demo Grafana agent to Grafana alloy
- Docs(
@grafana/faro-web-sdk
,@grafana/faro-web-tracing
): Remove pre-release warning (#550). - Improvement (
@grafana/faro-web-tracing
): Remove redundant DocumentLoadInstrumentation. Faro tracks page load data by default (#551). - Improvement(
@grafana/faro-web-sdk
): Performance instrumentation only tracks resource entries initiated by calls to thefetch
method orxhr-html requests
. To track all resource entries settrackResources: true
(#560).
- Feature(
@grafana/faro-web-sdk
): Add parsing time to FaroNavigationTiming (#541). - Improvement ()(
@grafana/faro-web-sdk
): Get rid of structureClone. It caused breakage in some sandboxed environments because of injected proxy objects (#536). - Feat(
@grafana/faro-web-sdk
): Add K6 test ID to K6 meta if available in window.k6 object (#531).
- Feat(
@grafana/faro-web-sdk
): Add responseStatus to performance events (#526). - Fix (
@grafana/faro-web-sdk
): Faro updates sessions in an infinite loop if DOM Storage is not available (#519). - Feat (
@grafana/faro-react
): Support instrumenting React Router v6 data routers (#518).
- Fix (
@grafana/faro-web-sdk
): Session started timestamp was reset on page-loads (#513). - Fix (
@grafana/faro-web-tracing
):faro.trace.*
attached spanContext from active span instead of the respective child span (#510). - Feat (
@grafana/faro-web-sdk
): Faro APIs now support adding a custom traceId and spanId to signals (#510).
- Improvement (
@grafana/faro-web-tracing
): Dedupe Faro trace events (#507).
- Feat (
@grafana/faro-web-sdk
): Enable Faro Navigation and Resource timings instrumentation by default (#482). - Improvement (
@grafana/faro-web-tracing
): Send a dedicated Faro event for traces of kind=client (#499).
- Improvement (
@grafana/faro-web-sdk
): addduration
property infaro.performance.resource
timings and rename propertytotalNavigationTime
toduration
infaro.performance.navigation
timings (#490). - Fix (
@grafana/faro-web-sdk
): crash when navigator.userAgentData is undefined (#494).
- Deps (
@grafana/faro-web-tracing
,@grafana/faro-core
): Update OpenTelemetry dependencies (#475).
- Improvement (
@grafana/faro-web-sdk
): add response time to performance timings (#465). - Deps (
@grafana/faro-web-tracing
): Updateinstrumentation-document-load
which prevents build. from breaking (#467).
- Feature preview (
@grafana/faro-web-sdk
): instrument navigation and resource timings. As long as this feature is in preview it is disabled by default (#434) - Improvement (
@grafana/faro-web-tracing
): Automatically add the value of the MetaApp environment property to the resource attributesdeployment.environment
property (#453) - Improvement (
@grafana/faro-web-sdk
): change storage key prefix for Faro session to use reverse domain notation (#432) - Fix (
@grafana/faro-core
): make check for presence of Event more robust (#436)
- Fix (
@grafana/faro-web-sdk
): Multiple session_extend events were emitted if multiple browsing contexts were open when a session was auto-extended (#428) - Fix (
@grafana/faro-web-sdk
): guard against missingisSampled
(#425)
- Fix (
@grafana/faro-web-sdk
):generateSessionId()
was executed twice (#423)
- Fix (
@grafana/faro-web-sdk
): user defined session attributes added during initialize were not picked up (#420) - Feat (
@grafana/faro-web-sdk
): provide customgenerateSessionId()
function which Faro will use instead of the internal sessionId generator if configured (#421).
- Fix (
@grafana/faro-web-sdk
): Fixed an issue where the session meta was missing in session lifecyle events sent during the init phase (#417).
- Fix (
@grafana/faro-web-sdk
): Fixed an issue where the first calculated session was always part of the sample (#415).
- Deps (
@grafana/faro-react
): add missing peer dependency onreact-dom
(#400). - Deps (
@grafana/faro-core
): remove unused@opentelemetry/api-metrics
dependency (#401). - Deps (
@grafana/faro-web-tracing
): remove unused@opentelemetry/sdk-trace-base
dependency (#401). - Fix (
@grafana/faro-web-sdk
): fixed a issue where session based sampling combined with batched mode lead to dropped items, even if they were part of the sample (#402). - Fix (
@grafana/faro-web-sdk
): Cleanup up session meta before sending it to not include Faro specific attributes (#408). - Breaking❗️ (
@grafana/faro-web-sdk
): The new volatile session manager is enabled by default. The old legacy session object is removed. This change is only breaking if you customized the old default session management (#412).
- Deps: upgrade OTEL dependencies, remove outdated resolutions (#391).
- Fix (Web Tracing): send otel timings, like timeUnixNano, as string instead in LongBits format (#391).
- Feat: session based sampling (#385).
- Improvement: Send better attributes with the view and route transition events to contain information about
the previous route or view (
from*
) and the destination route or view (to*
) (#397). - Breaking❗️: React Instrumentation, the route transition event is renamed from
routeChange
toroute_change
. Theurl
androute
attributes sent with the event are renamed totoRoute
andtoUrl
.(#397).
- Improvement: Custom x-faro-session-id header will now be added to legacy sessions as well (#384).
- Improvement: Lower maxSessionPersistenceTime for tracked sessions and export tooling to make it easier to manually remove a persisted session (#387)
- Hotfix: disable custom x-faro-session-id header for legacy sessions (#383)
- Feat: Add x-faro-session header to identify client session id to server for fetch and xhr instrumentations (#377)
- Improvement (): Always send x-faro-session-id header, independent of the chosen session management (#381).
- Improvement: If new session management is used, send dedicated session lifecycle events to reflect if a new session is started, a session is resume or extended (#380)
- Feat: New session tracking capabilities (optional, disabled by default) where users can choose to use tracked or volatile sessions (#374).
- Breaking: The sdk meta now only contains the version number of Faro. This is to reduce beacon payload size. If users need the full data including all integrations, it can be added as outlined in the docs.(#370)
- Feature: new experimental session manager which can be configured to use persistent or volatile sessions (#359).
- Fix: user provided session attributes were not sent (#372).
- Fix: Disable keepalive in web-sdk fetch transport when the payload length is over 60_000 (#353).
- Fix: Add 'isK6Browser' field to k6 meta object (#361).
- Feat: Detect if Faro is running inside K6 browser to distinguish between lab and field data (#263).
- Feat: Enable users to configure per-error boundary
pushError
behavior. - Deps: Upgrade project to use the current Node LTS version (lts/hydrogen, v18)
- Deps: Dependency updates
- Deps: CVE-2023-45133 - Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
- Feat: Enable users to add contextual attributes to measurement API payload (#254)
- Fix: CVE-2022-25878 - protobufjs Prototype Pollution vulnerability (#249)
- Fix: Update opentelemetry packages used by the Web-Tracing-Instrumentation to address CVE-2023-38704 (#242)
- Fix: fix CVE-2023-32731 by forcing all dependencies to use grpc-js ^1.8.17.
- Remove: Remove OTel user-interaction instrumentation from the default set (#215)
- Add: add option to provide additional error context in
pushError
api. - Fix: Use
globalThis
instead ofglobal
orwindow
in case the SDK is used in webworkers. - Add: Add batch execution support for transports in core.
- Add: Transport.send now accepts a list of items to be sent instead of a single item.
- Update: Update Vite version in Demo app
- Add: Experimental instrumentation package for fetch
- Add: Config option to include URLs for which requests shall have tracing headers added.
- Fix: TracingInstrumentation broke fetch requests with relative URLs are broken on sub-pages.
- Fix: Missing destructuring assignment in Browser quick start tutorial.
- Fix: Demo app crashes when user has an ad-blocker activated.
- Have FetchTransport consume response body. Otherwise requests are not considered closed
- Fix a bug where View and Session Instrumentation had wrong version applied
- Use Change to use the new functions names from WebVitals instead of the deprecated ones
- Fix circular dependency in the
core
package - Added export for the
Extension
interface incore
,web-sdk
andreact
packages - Added export for
genShortID
function incore
,web-sdk
andreact
packages - Fixed span timings
- Updated dependencies
- Remove
started
property fromMetaSession
interface
- Breaking change Instrumentations and transports no longer receive a
faro
instance and they should not rely on the globalfaro
instance as it would break the isolation mode. Various APIs are passed individually (i.e.this.api
vsthis.faro.api
,this.unpatchedConsole
vsthis.faro.unpatchedConsole
) - Remove internal references to global Faro object
- Add view meta
- Updated dependencies
- Remove type module from package.json in web-tracing package
- Add support for CDN
- Updated dependencies
- Boilerplate updates
- Improve final build
- Breaking change No longer supports sending traces to Grafana Agent < 0.29.0.
- Fix bug where if multiple instances of a transport class where configured, only one would be used
- Added
EventAttributes
export - Updated dependencies
- Enabled inline source maps
- Rename to "Faro Web SDK"
- Added basic session tracking: web SDK automatically creates new session id when agent is initialized.
SessionInstrumentation
that sendssession_start
event on initialization or when new session is set.SessionProcessor
for OTel that will addsession_id
attribute to every span if available. - Added
agent.api.pushEvent
method for capturing RUM events. FetchTransport
will back off after receiving 429 Too Many Requests response. Events will be dropped during backoff period. Backoff period respectsRetry-After
header if present.- Limit the number of spans sent by OpenTelemetry at once to 30.
- Updated dependencies.
- React basic instrumentation via
@grafana/agent-integration-react
. - Added a deduplication filter to prevent same message being reported multiple times.
- Added debugging features to the agent.
initializeAgent
was renamed toinitializeGrafanaAgent
.- Re-export everything from
@grafana/agent-core
to@grafana/agent-web
and@grafana/agent-integration-react
. - Prevent multiple global instances of the agent from running at the same time.
- Added
agent.pause()
andagent.unpause()
to be able to temporarily stop. ingesting events.
- Updated build: packages will be published with a build targeting es5 with common-js modules, and a build targeting ES6 with ECMAScript modules.
agent.api.pushError
method to pushError
objects directly.
- Open Telemetry tracing integration via
@grafana/agent-tracing-web
. - Option to filter errors using
ignoreErrors
configuration option. - Simplified
initializeAgent()
method specifically for web apps in@grafana/agent-web
.
- Messing about with CI/CD :-).
- Update readme for core and web packages with relevant info.
- Initial development version.