Skip to content

fix(releases): guard echarts handlers against disposed instances in useReleaseBubbles#119469

Draft
billyvg wants to merge 1 commit into
masterfrom
claude/serene-cannon-n50c7f
Draft

fix(releases): guard echarts handlers against disposed instances in useReleaseBubbles#119469
billyvg wants to merge 1 commit into
masterfrom
claude/serene-cannon-n50c7f

Conversation

@billyvg

@billyvg billyvg commented Jul 12, 2026

Copy link
Copy Markdown
Member

Summary

Fixes JAVASCRIPT-3AP8TypeError: Cannot read properties of undefined (reading 'get') escalating on /dashboard/:dashboardId/.

Root cause: Mouse event handlers (mousemove, mouseover, mouseout, globalout) in useReleaseBubbles.tsx were calling echartsInstance.setOption() / getOption() / dispatchAction() on an echarts instance that had already been disposed during chart state transitions (e.g. component unmount/remount racing with an in-flight mousemove event). The existing !echartsInstance null guard didn't cover the disposed case.

Fix: Added echartsInstance.isDisposed() checks to all four handlers alongside the existing null guards. This matches the established pattern in useChartBoxZoom.tsx (line 123) which has the same comment and guard.

Evidence from Sentry:

  • Issue: https://sentry.sentry.io/issues/JAVASCRIPT-3AP8
  • 292 events, 194 users impacted, status: escalating
  • Stacktrace clearly points to useReleaseBubbles.tsx:552handleMouseOutechartsInstance.setOption()
  • Seer analysis: "Wrap setOption calls in mouse handlers with a try/catch and add an isDisposed guard to prevent crashes during chart state transitions"

Session: https://claude.ai/code/session_01Vi9sPcdPUAQFGdtxcNjJ5R


Generated by Claude Code

Mouse event handlers (mousemove, mouseover, mouseout, globalout) in
useReleaseBubbles were calling setOption/getOption/dispatchAction on
echarts instances that could already be disposed during chart state
transitions, causing TypeError crashes on the dashboard page.

Adds isDisposed() checks alongside the existing null guards, matching
the pattern already used in useChartBoxZoom.

Fixes JAVASCRIPT-3AP8
@github-actions github-actions Bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants