Skip to content

feat(dashboards): add Sessions & Replay section to Browser RUM dashboard - #2673

Merged
kodiakhq[bot] merged 4 commits into
mainfrom
minnetonka-v1
Jul 20, 2026
Merged

feat(dashboards): add Sessions & Replay section to Browser RUM dashboard#2673
kodiakhq[bot] merged 4 commits into
mainfrom
minnetonka-v1

Conversation

@teeohhem

@teeohhem teeohhem commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Expands the out-of-the-box Browser RUM dashboard template with two new sections. Sessions adds a Recent Sessions table — client-side sessions grouped by rum.sessionId (page views, errors, distinct traces, user, service, last-active) ordered by recency, where clicking a row drills into the Traces search view filtered to that session (surfacing its client-side spans). Memory adds per-page JS heap tiles (median & p90 used heap, and a "Memory by Page" table) sourced from performance.memory.* attributes on documentLoad spans, byte-formatted, with a Markdown caveat noting the data is Chromium-only and requires a Browser SDK build that emits those attributes (see hyperdxio/hyperdx-js#288). Everything is implemented via existing tile mechanisms (table onClick drill-through, Markdown tiles, byte number-format) — no renderer changes.

Screenshots or video

New tiles only — the rendered structure is visible on the Vercel preview. Meaningful data requires a RUM-instrumented source (the demo dataset has no browser RUM spans, and memory data additionally needs the SDK change above), so no populated screenshot is included.

How to test on Vercel preview

Preview routes: /dashboards/import?template=browser-rum

Steps:

  1. Open /dashboards/import?template=browser-rum to preview the Browser RUM template.
  2. Scroll to the Sessions section (between "Traffic & Page Views" and "Errors") and verify the Recent Sessions table renders.
  3. Scroll to the Memory section (between "Load Time" and "Traffic & Page Views") and verify the caveat note, Median JS Heap Used / p90 JS Heap Used number tiles, and the Memory by Page — used JS heap table render (tiles may be empty since the demo dataset has no browser RUM / heap data).

References

Add a new "Sessions & Replay" container to the Browser RUM dashboard
template with two tiles: a "Recent Sessions" table (grouped by
rum.sessionId, ordered by last-active) that drills into the Traces search
view to reveal a session's client-side spans, and a Markdown tile linking
to Session Replay (/sessions). Implemented via existing table onClick
drill-through and Markdown-tile mechanisms — no renderer changes.
@changeset-bot

changeset-bot Bot commented Jul 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: ddf7c89

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
Name Type
@hyperdx/app Patch
@hyperdx/api Patch
@hyperdx/otel-collector Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hyperdx-oss Ready Ready Preview, Comment Jul 20, 2026 6:09pm
hyperdx-storybook Ready Ready Preview, Comment Jul 20, 2026 6:09pm

Request Review

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

🔵 Tier 2 — Low Risk

Small, isolated change with no API route or data model modifications.

Why this tier:

  • Standard feature/fix — introduces new logic or modifies core functionality

Review process: AI review + quick human skim (target: 5–15 min). Reviewer validates AI assessment and checks for domain-specific concerns.
SLA: Resolve within 4 business hours.

Stats
  • Production files changed: 1
  • Production lines changed: 220
  • Branch: minnetonka-v1
  • Author: teeohhem

To override this classification, remove the review/tier-2 label and apply a different review/tier-* label. Manual overrides are preserved on subsequent pushes.

@greptile-apps

greptile-apps Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR expands the Browser RUM dashboard template with new sessions and memory views. The main changes are:

  • Adds a patch changeset for the dashboard update.
  • Adds a Sessions section with a Recent Sessions table and trace drill-through.
  • Adds a Memory section with a JS heap note, summary number tiles, and a per-page memory table.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
.changeset/browser-rum-sessions-section.md Adds a patch changeset describing the Browser RUM dashboard expansion.
packages/app/src/dashboardTemplates/browser-rum.json Adds the new Sessions and Memory dashboard sections using existing tile configuration patterns.

Reviews (4): Last reviewed commit: "Merge branch 'main' into minnetonka-v1" | Re-trigger Greptile

Comment thread packages/app/src/dashboardTemplates/browser-rum.json
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Deep Review

No critical issues found.

This change is scoped to a static, schema-validated dashboard template (packages/app/src/dashboardTemplates/browser-rum.json) plus a changeset — no executable code, no API surface, no auth/input handling. Direct verification against DashboardTemplateSchema (packages/common-utils/src/types.ts) confirms the new tiles (rum-030rum-034) parse cleanly: the quantile tiles carry the required numeric level, the count/count_distinct/any/max columns match the schema branch that allows an omitted aggCondition, and byte is a valid numberFormat.output. Both new group ids (rum-memory, rum-sessions) resolve, every onClick.whereTemplate {{var}} maps to a groupBy alias ({{Session}}Session, {{URL}}URL), and the lucene/coalesce(nullif(...))/session-groupBy constructs are all conventions already used by existing tiles in the same file.

🔵 P3 nitpicks (1)
  • packages/app/src/dashboardTemplates/browser-rum.json:1138 — new tiles rum-030rum-034 are covered only by the generic Zod schema test; no assertion pins the new cross-references (that containerId resolves to a container, or that onClick.whereTemplate tokens match a groupBy alias), so a future typo in these fields would pass CI.
    • Fix: consider a small test asserting each tile's containerId exists in containers and each whereTemplate {{token}} has a matching groupBy alias; this hardens all tiles, not just the new ones.
    • testing

Reviewers (2): orchestrator direct analysis (schema/convention/correctness), testing.

Coverage note: Synthesis was finalized before the correctness, maintainability, project-standards, performance, agent-native, and learnings sub-agents returned; their results are not reflected here. The orchestrator independently verified schema conformance, referential integrity, and convention consistency directly against the source and the validation test, and found no concrete failure mode introduced by this diff.

Testing gaps: No behavioral test asserts tile-level cross-reference integrity for the new sections (pre-existing gap shared by all tiles; the new tiles were verified consistent by hand).

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

E2E Test Results

All tests passed • 241 passed • 1 skipped • 1092s

Status Count
✅ Passed 241
❌ Failed 0
⚠️ Flaky 1
⏭️ Skipped 1

Tests ran across 4 shards in parallel.

View full report →

…M dashboard

Add a "Memory" section with median/p90 used-JS-heap number tiles and a
"Memory by Page" table, sourced from performance.memory.* attributes on
documentLoad spans (byte-formatted). Includes a Markdown caveat noting the
data is Chromium-only and requires a Browser SDK build that emits the heap
attributes (see hyperdxio/hyperdx-js#288).
Comment thread packages/app/src/dashboardTemplates/browser-rum.json
…board

Remove the "Session Replay & Client-Side Traces" markdown tile, pull the
Recent Sessions table to the top of the section, and rename the container
from "Sessions & Replay" to "Sessions".
Comment thread packages/app/src/dashboardTemplates/browser-rum.json
@kodiakhq
kodiakhq Bot merged commit fcdcd78 into main Jul 20, 2026
27 checks passed
@kodiakhq
kodiakhq Bot deleted the minnetonka-v1 branch July 20, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge review/tier-2 Low risk — AI review + quick human skim

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants