Skip to content

[Bug] Tooltip performance issue with multiple "line" series on Windows + Chromium #21784

Open

Description

@kirchsuSICKAG

Version

6.1.0

Link to Minimal Reproduction

https://codepen.io/kirchsuSICKAG/pen/PwpEBvV

Steps to Reproduce

  1. Use ECharts 6.1.0 with a current Chrome or Edge on Windows device.
  2. Create a line chart with tooltip.trigger: 'axis' and at least two line series, better visible on more.
  3. Use jagged data, such as independently generated random values between 0 and 100.
  4. Set the chart height to about 700 px and use 2,000 data points per series.
  5. Move the mouse across the plot area. Observe that the tooltip and axis pointer lag behind the cursor or move in visible jumps. The lag becomes worse as more line series are added.
  6. Repeat with tooltip: { trigger: 'axis', showContent: false }. The axis pointer still lags, so the issue is not limited to displaying the tooltip content.
  7. Repeat with DevTools open. The lag becomes more noticeable.
  8. For comparison, try a 300 px chart, one line series, gradual rather than jagged data, Firefox on Windows, or Chrome/Edge on macOS. These cases showed no lag in my tests.

For testing all this things out, have a look at my codepen example.

Current Behavior

When the mouse moves over the plot area, the tooltip and axis pointer visibly lag behind or jump instead of following the cursor smoothly, if using a Windows device in a chromium browser (Chrome / Edge). The lag is most noticeable the more jagged line series are used. It becomes more severe as the number of series, the chart height increases or the browser dev console is open.

The issue is reproducible with both the Canvas and SVG renderers. The axis pointer still lags when tooltip content is disabled with tooltip.showContent: false, so the issue is not limited to rendering the tooltip content.

In the tested configurations, the chart remained smooth with a 300 px height but lagged at 700 px. Jagged, abruptly changing data caused more lag than gradual data. Moving the series into separate value ranges did not eliminate the lag, so overlapping lines are not required to reproduce it. Opening DevTools makes the lag more noticeable.

The same chart was smooth in Firefox on Windows and in Chrome and Edge on macOS.

Workaround

In my reproduction, the lag is not reproducible by applying these options:

axisPointer: {
  zlevel: 10,
  triggerEmphasis: false
},
series: [{
  // ...
  emphasis: {
    disabled: true
  }
}]

### Expected Behavior

The tooltip and axis pointer should follow mouse movement smoothly across chart sizes and series counts for all browsers, without the need of disabling emphasis.

### Environment

```markdown
- OS:Windows
- Browser: Chrome and Edge
- Framework: all

Any additional comments?

Windows - Chrome

Chrome_Windows.mp4

Windows - Firefox

Firefox_windwos.mp4

MAC - Chrome

Image

Activity

  1. added
    enThis issue is in English
    pendingWe are not sure about whether this is a bug/new feature.
    on Oct 9, 2026
  2. helgasoft commented on Oct 9, 2026

    @helgasoft

    This is a "lag problem in certain browsers" more than a bug, IMHO. It is reasonable to anticipate lags in proportion to the quantity of data.
    And the workaround could be called "fixing the problem with appropriate settings".
    BTW adding tooltip: { trigger: "axis", displayTransition: false, transitionDuration: 0 }, makes it even snappier 🚀

  3. kirchsuSICKAG commented on Oct 22, 2026

    @kirchsuSICKAG
    Author

    @helgasoft Sorry for the late response and thanks for you feedback.

    I investigated the issue further and managed to reproduce it with plain ZRender: https://codepen.io/kirchsuSICKAG/pen/JoWZzXe?editors=1110

    Since the same behavior can be reproduced without ECharts, it seems that the performance cost might be related to ZRender state handling rather than the tooltip implementation itself.

    From an application perspective, robust behavior across different browser and OS combinations would be valuable. In our use case, we visualize sensor data where several thousand data points per series are not uncommon and we cannot control which browser or operating system our customers use. For that reason, even if the issue is browser-specific, it would be interesting to understand whether there is an opportunity to improve the underlying interaction performance.

    I'd be interested to hear your thoughts.

  4. helgasoft commented on Oct 22, 2026

    @helgasoft

    @kirchsuSICKAG, here is what I think.
    Using only ZRender is interesting and impressive. The most time-consuming code is in applyAxisEmphasis and clearEmphasis.
    If the three lines.forEach inside are commented out, there is no lag in Chrome. So the problem is in highligh/downplay large line series with "several thousand data points per series". Which is a design choice I do not understand since it degrades user experience substantially.

  5. kirchsuSICKAG commented on Oct 23, 2026

    @kirchsuSICKAG
    Author

    @helgasoft
    As some background on our situation: I'm part of a design system team in a large company. We provide chart components that use ECharts as the underlying charting library and apply our own defaults and styling through a custom theme.

    The challenge for us is that we do not always know how application teams will use these components. In many cases, they simply consume the component and rely on the default behavior that we provide.

    If the recommendation is to disable highlight/emphasis for large datasets, we essentially have two options:

    • Disable it by default in our theme. This would prevent users from running into the performance issue, but it would also remove the interaction for the majority of charts where performance is not a concern. Developers would then need to explicitly re-enable it whenever they want the standard ECharts behavior.
    • Keep the current defaults and document the limitation for large datasets. In that case, however, teams may still only discover the issue once they start working with real-world data.

    I agree with your observation that repeatedly highlighting large line series is the expensive operation and can negatively impact the user experience.

    The difficulty for us is that both small and large datasets are common in our domain. For many charts, the default highlight and emphasis behavior works well and provides a good user experience. At the same time, we also have use cases involving sensor data with several thousand values per series, where the same defaults can become problematic.

    Since we cannot reliably predict which use case downstream applications will have, nor which browser or operating system their customers will use, finding the right default behavior becomes challenging. From my perspective, it would therefore be valuable if the interaction remained as robust as possible across different browser/OS combinations, even for larger datasets.

    That said, I agree with your analysis that the expensive part appears to be the highlight/downplay path rather than the tooltip itself.

  6. helgasoft commented on Oct 23, 2026

    @helgasoft

    A compromise solution for both small and large datasets is to count all data points and disable highlight/downplay when that count is over a certain threshold value. Similar to progressiveThreshold.

  7. kirchsuSICKAG commented on Oct 27, 2026

    @kirchsuSICKAG
    Author

    Thanks for the suggestion. I'll add a note to our documentation about this possible performance problem and ways to handle it for larger datasets.

    Still, I think it could be beneficial if this could somehow be addressed on the ECharts / zrender side as well. Otherwise, every application using larger datasets may eventually run into the same behavior and needs to consider whether and when to disable highlight/emphasis individually. Either having a fix directly in zrender or having a mechanism in ECharts itself, potentially similar to the threshold approach you suggested, could provide a more robust default behavior for all users.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugenThis issue is in EnglishpendingWe are not sure about whether this is a bug/new feature.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions