# Honeycomb features

To monitor application performance, Workleap has adopted Honeycomb, a tool that helps teams capture and analyze distributed traces and metrics to understand and monitor complex systems, application behaviors, and performance. Built on OpenTelemetry, Honeycomb provides a robust API for frontend telemetry.

While Honeycomb's in-house HoneycombWebSDK includes great default instrumentation, the @workleap/telemetry package provides a slightly altered default instrumentation which is adapted for Workleap's applications' requirements.

# Default instrumentation

Workleap’s Honeycomb instrumentation includes a few default traces 👇

# Fetch requests

Individual fetch request performance can be monitored from end to end:

Fetch instrumentation
Fetch instrumentation

# Document load

The loading performance of the DOM can be monitored:

Document load instrumentation
Document load instrumentation

# Unmanaged error

When an unmanaged error occurs, it's automatically recorded:

Recorded error
Recorded error

# Real User Monitoring (RUM)

Performance data is collected from real user sessions to generate metrics and insights:

Largest Contentful Paint
Largest Contentful Paint

Cumulative Layout Shift
Cumulative Layout Shift

Interaction to Next Paint
Interaction to Next Paint

# Correlation ids

Two correlation ids are automatically added to every trace:

  • app.telemetry_id: Identifies a single application load. It's primarily used to correlate Honeycomb traces with the other telemetry platforms.
  • app.device_id: Identifies the user's device across sessions. This value is extracted from the shared wl-identity cookie, which is used across Workleap's marketing sites and web applications.

app.telemetry_id attribute
app.telemetry_id attribute
app_device_id attribute
app_device_id attribute

# LogRocket session URL

If LogRocket instrumentation is enabled, Honeycomb traces are enriched with the LogRocket session URL as soon as it becomes available:

LogRocket session URL
LogRocket session URL

# Set custom attributes

Most applications need to set custom attributes about the current user environment on all traces. To help with that, HoneycombInstrumentationClient expose the setGlobalSpanAttributes method:

import { useHoneycombInstrumentationClient } from "@workleap/telemetry/react";

const client = useHoneycombInstrumentationClient();

client.setGlobalSpanAttributes({
    "app.user_id": "123"
});

Now, every trace recorded after the execution of setGlobalSpanAttributes will include the custom attribute app.user_id:

Custom attributes
Custom attributes