Skip to content

[Event Lifecycle Hooks] Serialized Events Cause DX Issues #13285

@souredoutlook

Description

@souredoutlook

Problem Statement

Any time a developer wants to mutate their event data before it's sent to Sentry they need to use a beforeX hook.

These hooks provide serialized events to work with which is convenient for evaluating an event's key's values but inconvenient for mutating the event without access to any of the event methods.

Example:

I want to upcycle a spans duration into a custom metric:

  beforeSendSpan: (span)=>{
    if (span.op.includes("ui.react")) {

      Sentry.metrics.distribution(`${span.op}.duration`, span.timestamp - span.start_timestamp, {
        tags: { componentName: span.description },
        unit: "millisecond",
      });

      console.log("Adding metric ",`${span.op}.duration`)
    }

    return span
  }

This metric is not connected to the sampled span and this API will be going away.

I can't use span.setAttribute here because the span is already serialized.

Solution Brainstorm

Provide lifecycle hooks that can hook into events prior to serialization so that event methods can be used on them.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions