Skip to content

fix(explore): Cap heat map unfurl grid to a fixed-density size#118598

Open
gggritso wants to merge 3 commits into
masterfrom
georgegritsouk/dain-1752-reduce-number-of-heat-map-buckets-produced-for-unfurling
Open

fix(explore): Cap heat map unfurl grid to a fixed-density size#118598
gggritso wants to merge 3 commits into
masterfrom
georgegritsouk/dain-1752-reduce-number-of-heat-map-buckets-produced-for-unfurling

Conversation

@gggritso

@gggritso gggritso commented Jun 26, 2026

Copy link
Copy Markdown
Member

We were seeing some broken Heat Map unfurls, turns out there were two causes:

  • The Heat Map had way too many buckets, because of how aggressively we picked fine intervals (we borrowed the frontend logic that uses the size of the chart)
  • Chartcuterie had some rendering problems

This PR fixes the first problem. On the backend side, the chart canvas dimensions are fixed, and we just care about having roughly the right amount of buckets. So, take the simple approach. Find an interval that produces roughly 150 buckets on the X-axis, and always render 50 buckets on the Y-axis. This should make it easy to compare charts in Slack unfurls, and keeps the code simple.

Fixes DAIN-1752, see also getsentry/chartcuterie#234

gggritso and others added 3 commits June 26, 2026 16:30
Heat map unfurls render to a fixed 1200x400 Chartcuterie canvas, but the
query builder picked the finest interval from a time-range ladder (e.g. 5m
over 24h -> 288x96 = ~27.6k cells). That is ~24x denser than the live UI and
trips ECharts' progressive-rendering threshold, so Chartcuterie's synchronous
snapshot captures only the first few columns and the heat map renders squished
into a thin left strip.

Target a fixed-density grid sized to the canvas instead: pick the finest
candidate interval that keeps columns within 150, and always request 50 value
rows. 150x50 over 1200x400 yields ~8px square cells and a consistent density
at every duration, matching the in-app UI far more closely.

Fixes DAIN-1752
Refs DAIN-1740
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@linear-code

linear-code Bot commented Jun 26, 2026

Copy link
Copy Markdown

DAIN-1752

DAIN-1740

@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Jun 26, 2026
@gggritso

Copy link
Copy Markdown
Member Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 29a7384. Configure here.

@gggritso gggritso requested a review from DominikB2014 June 26, 2026 20:46
@gggritso gggritso marked this pull request as ready for review June 26, 2026 20:46
@gggritso gggritso requested a review from a team as a code owner June 26, 2026 20:46

@DominikB2014 DominikB2014 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants