feat(seer): Render chart markdown embeds - #120969
Conversation
Add the chart markdown extension schema and render validated line, area, and bar visualizations with Sentry chart components.
Story previewsPreview the stories changed in this PR on the Vercel deployment: Preview deployment: https://sentry-49z7hseuq.sentry.dev |
📊 Type Coverage Diff
🔍 4 new type safety issues introducedNon-null assertions (
This is informational only and does not block the PR. |
Require unambiguous time-axis values, document heatmap and wheel constraints, use Scraps for chart headers, and exercise every chart adapter through the shared BaseChart boundary.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2015d9e. Configure here.
| name: yAxisLabel, | ||
| axisLabel: {formatter: (value: number) => formatValue(value, yAxisUnit)}, | ||
| }, | ||
| }; |
There was a problem hiding this comment.
Time charts skip data range
Medium Severity
Time-axis line, area, and bar embeds set isGroupedByDate but never pass start or end from the series timestamps. BaseChart then falls back to the default 14-day period, so XAxis treats every range as multi-day and always renders date-plus-time tick labels, even for short same-day charts like the error-volume example. Heatmaps already derive labeling from the actual span, so these visualizations stay overly verbose on a compact embed.
Reviewed by Cursor Bugbot for commit 2015d9e. Configure here.
| formatAxisLabel: | ||
| xAxis === 'category' ? (value: number) => escape(String(value)) : undefined, | ||
| valueFormatter: (value: number) => formatValue(value, yAxisUnit), | ||
| }, |
There was a problem hiding this comment.
Multi-series tooltips stay item-scoped
Medium Severity
Line, area, and bar embeds configure tooltip formatters but omit trigger: 'axis'. BaseChart therefore keeps the default item trigger, so multi-series hover only shows the hovered series instead of all series at that x position. That undercuts the multi-series and stacked-area support this embed advertises, and diverges from other Sentry time-series charts.
Reviewed by Cursor Bugbot for commit 2015d9e. Configure here.


Register a
chartblock embed for Seer responses and render validated line, area, bar, heatmap, and wheel visualizations with Sentry's existing ECharts infrastructure. The schema supports time or category axes, common display units, multiple series, and safe tooltip formatting; the generated backend widget catalog keeps the capability advertised to Seer in sync.Heatmaps use the dashboard color palette and map each series to a row of cells. Wheels map one category series to a donut chart, keeping both additions on the same compact markdown-extension schema rather than introducing widget-specific payloads.
This is the Sentry half of the chart embed flow. The paired Seer change adds the typed Code Mode rendering helper and its discovery artifacts: https://github.com/getsentry/seer/pull/7571