Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Sentry Backend Modification for SSR Traces

Open
#24,227 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Active

Research direction

Start with the Span Links Spec and the referenced sentry/search/eap/spans/attributes.py entry point, then review how Relay and the span consumer pass links into EAP. Done means the project has a decided, queryable approach for linking cached server and client traces, including supported directions and cache-lifetime query windows, or a documented attribute workaround if indexed links are not feasible.

Written by the indexing model from the issue text.

Description

javascript

The Problem: Cached SSR pages have no connected client/server trace

SSR meta-frameworks cache the HTML/render output: a server renders a page once (build-time, first visit, or on revalidation). Later visitors get the stored result from the server (so no server trace or a disconnected one).
Probably thousands of client pageloads map to one server render.

Differences to previous_trace linking
  • previous_trace is a 1:1 relationship
  • Cached server pages are 1 origin with many consumers (1:N)
  • Time-gap between server and client can be as long as the cache lifetime

What exists

  • Span Links Spec: https://develop.sentry.dev/sdk/telemetry/traces/span-links/
  • Relay has full support for span links (sentry.links and sentry.link.type) and passes them through untouched
  • Span consumer flattens each span link(s) into a JSON attribute sentry.links - stored in EAP
  • sentry.links is not queryable (private=True)
  • Span Attribute support for previous_trace

What we need

  1. Span links, queryable in EAP - indexed by trace_id in both directions
    • Prio 1: One of multiple, different consuming traces (e.g. browser pageload trace) should be able to link to the one connecting server trace
    • Prio 2: Also nice: One cached server trace should be able to link to all the client/browser traces it served
      • What is the cost of this query?
      • Can we get an aggregate (e.g. just the number) of it?
  2. Workaround (near-term solution): Register a queryable attribute (similar to previous_trace - here in code)
    • we only need this workaround if the task above (links in EAP) takes too long
    • Only works for N:1 lookup (like Prio 1 task from above)
    • Example naming: simple_sentry_field("cache_origin_trace")
    • Can we do a 1:N lookup with this attribute?
  3. Querying Time Window
    • Being able to query links within a window that fits cache lifetimes (not assumptions of e.g. 1 hour windows)
    • What are possible limitations here?
Dominant language
TypeScript
Stars
8.7k
Forks
1.9k
Avg merge
1d 18h
Merged PRs (30d)
543

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from getsentry/sentry-javascript

All issues in getsentry/sentry-javascript

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.