Grafana Cloud

Supported environments for Frontend Observability

The Faro Web SDK instruments web pages that run in a browser. During initialization, the SDK and most of its default instrumentations read browser APIs such as window, document, PerformanceObserver, and sessionStorage. JavaScript that doesn’t run in a typical web page context is outside the supported scope.

Support matrix

EnvironmentSupportedNotes
Web applications that run in a browserYesThe primary target of the Faro Web SDK. Refer to Get started.
Client-side of server-rendered applications, such as Next.js and React SSRYesFaro initializes in the browser after the application hydrates. Refer to React server side rendering support and Instrument Next.js applications.
Server runtime of server-rendered applicationsNoFaro doesn’t instrument server-side code. Refer to Server-rendered applications.
Browser extensionsNoGrafana doesn’t test or support this environment. Refer to Browser extensions.
Web workers and service workersNoGrafana doesn’t test or support this environment.
Node.js, React Native, and other non-browser JavaScript environmentsNoGrafana doesn’t test or support these environments.

Server-rendered applications

Faro runs in the browser only. In a server-rendered application, such as one built with Next.js or React server side rendering, the browser part is fully supported. Initialize Faro on the client, after the application hydrates.

The server process is a separate concern, and Faro doesn’t collect telemetry from it. To monitor the server, instrument it with OpenTelemetry and send the data to Application Observability. You can then correlate frontend and backend telemetry. Refer to Integrate Frontend Observability with Application Observability.

Browser extensions

Faro doesn’t support instrumenting browser extensions.

Extension contexts don’t provide the browser APIs that the SDK and its default instrumentations rely on, so initialization can fail. Several of the default instrumentations also have no meaning in an extension. Performance instrumentation, navigation instrumentation, and Web Vitals all describe how a web page loads and renders, which an extension background context never does.

Some users have made Faro run inside an extension by supplying their own set of instrumentations. That configuration is unsupported. If you choose it, you maintain it yourself.

Web workers, service workers, and other environments

Faro doesn’t support web workers, service workers, Node.js, React Native, or any other JavaScript environment without a DOM. The reasoning is the same as for browser extensions. The SDK reads browser APIs during initialization, and its default instrumentations measure page behavior that these environments don’t have.

To monitor a Node.js backend, use Application Observability with the OpenTelemetry SDK for Node.js.