// the find
grafana/faro-web-sdk
The Grafana Faro Web SDK, part of the Grafana Faro project, is a highly configurable web SDK for real user monitoring (RUM) that instruments browser frontend applications to capture observability signals. Frontend telemetry can then be correlated with backend and infrastructure data for full-stack observability.
Grafana's browser SDK for real user monitoring. It instruments a frontend app's errors, web vitals, logs and traces, then ships them to Grafana Alloy, Grafana Cloud, or a custom receiver. It fits teams already running Loki and Tempo who want frontend telemetry next to their backend traces.
The package split is sensible. Core holds the transport-agnostic API, web-sdk adds the browser instrumentations and metas, web-tracing is a separate package so tracing is opt-in, and react is a thin layer on top. You can take only what you need. The supported-environments table is blunt about what the SDK does not do: no workers, no extensions, no Node, no server runtime. It also says extension setups are unsupported and won't get issues, which is the right kind of boundary to draw. Testing goes beyond unit tests. e2e/smoke is a Playwright harness that covers CDN loading, the export surface, error boundaries, transport, pause and tracing, and a checked-in export-surface.json makes accidental API changes show up as a diff. Releases are semver with release-please and a CHANGELOG, and the v2 notes name the breaking changes (FID dropped with Web Vitals v5, deprecated attributes removed).
It is practically tied to the Grafana backend. The transport is configurable, but the setup docs, the dashboards directory and the Grafana Cloud setup plugin all assume Alloy or Grafana Cloud. Sending to anything else means writing your own receiver mapping. The README is thin on usage. Install and configuration live in external grafana.com docs, and the in-repo docs/sources tree is mostly contributor material, so someone evaluating from GitHub has to click through to learn the config surface. The README also never states bundle size or runtime overhead. That matters for a library that loads on every page of an app, and the omission is conspicuous given how much space the README gives to the Node version policy. The v2 announcement sits at the bottom of the README, below the environment and release-policy sections, with the upgrade guides only linked out.