Skip to content

[charts-pro] Prefer global pointer interaction tracker in Heatmap #20697

Merged
bernardobelchior merged 13 commits intomui:masterfrom
bernardobelchior:heatmap-perf-improv
Jan 14, 2026
Merged

[charts-pro] Prefer global pointer interaction tracker in Heatmap #20697
bernardobelchior merged 13 commits intomui:masterfrom
bernardobelchior:heatmap-perf-improv

Conversation

@bernardobelchior
Copy link
Copy Markdown
Member

@bernardobelchior bernardobelchior commented Dec 17, 2025

Related to #20702.

This change doesn't provide any meaningful performance improvement from my tests. The only benefit is that both the single SVG renderer and potential future renderers (be it canvas, WebGL or SVG batch) can reuse this implementation.

@bernardobelchior bernardobelchior added performance type: enhancement It’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature. scope: charts Changes related to the charts. labels Dec 17, 2025
@mui-bot
Copy link
Copy Markdown

mui-bot commented Dec 17, 2025

Deploy preview: https://deploy-preview-20697--material-ui-x.netlify.app/

Bundle size report

Bundle Parsed size Gzip size
@mui/x-data-grid 0B(0.00%) 0B(0.00%)
@mui/x-data-grid-pro 0B(0.00%) 0B(0.00%)
@mui/x-data-grid-premium 0B(0.00%) 0B(0.00%)
@mui/x-charts 0B(0.00%) 0B(0.00%)
@mui/x-charts-pro 🔺+560B(+0.12%) 🔺+245B(+0.17%)
@mui/x-charts-premium 🔺+566B(+0.12%) 🔺+227B(+0.16%)
@mui/x-date-pickers 0B(0.00%) 0B(0.00%)
@mui/x-date-pickers-pro 0B(0.00%) 0B(0.00%)
@mui/x-tree-view 0B(0.00%) 0B(0.00%)
@mui/x-tree-view-pro 0B(0.00%) 0B(0.00%)

Details of bundle changes

Generated by 🚫 dangerJS against bb785e3

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Dec 17, 2025

Merging this PR will not alter performance

✅ 14 untouched benchmarks


Comparing bernardobelchior:heatmap-perf-improv (bb785e3) with master (d1ccc97)1

Open in CodSpeed

Footnotes

  1. No successful run was found on master (728ab0e) during the generation of this report, so d1ccc97 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@github-actions github-actions bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Dec 18, 2025
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Dec 18, 2025
/**
* Hook to get pointer interaction props for chart items.
*/
export function useInteractionItemProps() {
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This logic is pretty much the same as the one for the bar batch renderer PR. After both these PRs are merged we'll have two hooks that basically do the same thing. I'll work on creating a API that makes this extendable to other charts as I suspect we'll want that as well.

@github-actions github-actions bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Dec 23, 2025
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Dec 23, 2025
const Cell = slots?.cell ?? HeatmapCell;
const cellProps = useSlotProps({
elementType: Cell,
additionalProps: interactionProps,
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Isn't this also technically a breaking change? We're removing the interaction item props from a potential slot, which means that it might break someone's behavior.

For example, if they're using composition using a custom HeatmapPlot and rendering a HeatmapItem with slots, it might break. Seems a bit of an edge case, though

}

function RegisterHeatmapPointerInteractions() {
useRegisterPointerInteractions(selectorHeatmapItemAtPosition);
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This component only exists so we can call useRegisterPointerInteractions conditionally

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why not make the hook decide itself if it should register the listeners or not?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It introduces complexity because we need to provide a skip flag and return early if it's set. IMO, this is simpler. Any reason why you think moving this to the hook would be better?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Was just wondering, if the inputs were simple it would be more reasonable than a random element, but it takes the slots/props in so meh 🫠

@github-actions github-actions bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jan 6, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 6, 2026

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jan 6, 2026
@bernardobelchior bernardobelchior changed the title [charts-pro] Heatmap performance improvements [charts-pro] Prefer global pointer interaction tracker in Heatmap Jan 6, 2026
const interactionProps = useInteractionItemProps({ type: 'heatmap', seriesId, dataIndex });
// If we aren't using the default cell, we skip adding interaction props because we have a more efficient way to
// calculate them. To avoid breaking changes, we need to keep this behavior. We can remove this in v9.
const skipInteractionItemProps = shouldRegisterPointerInteractionsGlobally(props.slots);
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I implemented this logic because users might be using the interactionsProps for something (e.g., to disable the tooltip/highlight by not passing them to their custom elements). However, now that I think of it, this isn't the recommended way to disable tooltips or highlights.

@alexfauquette @JCQuintas what's your take on this? Can I remove this conditional altogether and useInteractionItemProps altogether, or do you see any use case where it might be a breaking change?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The way you mitigate breaking changes looks good to me.

The shouldRegisterPointerInteractionsGlobally could also check for slotProps because another way to remove interaction is to set slotProps.legend.onPointerEnter to null

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

The shouldRegisterPointerInteractionsGlobally could also check for slotProps because another way to remove interaction is to set slotProps.legend.onPointerEnter to null

I suppose you mean slotProps.cell.onPointerEnter.

So, you are suggesting that shouldRegisterPointerInteractionsGlobally should return false if slotProps.cell.onPointerEnter === null because it means someone was trying to disable the pointer interactions?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes. You can even be safer with just checking if slotProps.cell.onPointerEnter exist. I'm not sure if slotProps event handler are concatenated by the useSlots or overriden

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

You can even be safer with just checking if slotProps.cell.onPointerEnter exist

Yeah, I think that's the best approach as someone could set onPointerEnter: undefined.

@bernardobelchior bernardobelchior marked this pull request as ready for review January 7, 2026 10:47
@bernardobelchior bernardobelchior requested a review from a team as a code owner January 7, 2026 10:47
const interactionProps = useInteractionItemProps({ type: 'heatmap', seriesId, dataIndex });
// If we aren't using the default cell, we skip adding interaction props because we have a more efficient way to
// calculate them. To avoid breaking changes, we need to keep this behavior. We can remove this in v9.
const skipInteractionItemProps = shouldRegisterPointerInteractionsGlobally(props.slots);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The way you mitigate breaking changes looks good to me.

The shouldRegisterPointerInteractionsGlobally could also check for slotProps because another way to remove interaction is to set slotProps.legend.onPointerEnter to null

@github-actions github-actions bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jan 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jan 14, 2026
@bernardobelchior bernardobelchior mentioned this pull request Jan 14, 2026
29 tasks
@bernardobelchior bernardobelchior merged commit 59ac1e6 into mui:master Jan 14, 2026
22 checks passed
@bernardobelchior bernardobelchior deleted the heatmap-perf-improv branch January 14, 2026 15:23
736-c41-2c1-e464fc974 pushed a commit to Swiss-Armed-Forces/Loom that referenced this pull request Jan 18, 2026
This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@mui/x-charts](https://mui.com/x/react-charts/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-charts)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-charts/8.24.0/8.25.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mui/mui-x/badge)](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) |
| [@mui/x-tree-view](https://mui.com/x/react-tree-view/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-tree-view)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-tree-view/8.24.0/8.25.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mui/mui-x/badge)](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.7.4` → `3.8.0`](https://renovatebot.com/diffs/npm/prettier/3.7.4/3.8.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/prettier/prettier/badge)](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) |

---

### Release Notes

<details>
<summary>mui/mui-x (@&#8203;mui/x-charts)</summary>

### [`v8.25.0`](https://github.com/mui/mui-x/blob/HEAD/CHANGELOG.md#8250)

[Compare Source](mui/mui-x@v8.24.0...v8.25.0)

<!-- generated comparing v8.24.0..master -->

*Jan 14, 2026*

We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:

- 📊 The Chart legend now has an option that enables [click to toggle visibility](https://mui.com/x/react-charts/legend/#toggle-visibility) of series.

  ![Image](https://github.com/user-attachments/assets/c8250287-1318-4581-ac5d-07e7ee01341c)

- 🐞 Bugfixes

- 📚 Documentation improvements

The following team members contributed to this release:
[@&#8203;alexfauquette](https://github.com/alexfauquette), [@&#8203;arminmeh](https://github.com/arminmeh), [@&#8203;bernardobelchior](https://github.com/bernardobelchior), [@&#8203;cherniavskii](https://github.com/cherniavskii), [@&#8203;JCQuintas](https://github.com/JCQuintas), [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje), [@&#8203;rita-codes](https://github.com/rita-codes), [@&#8203;Janpot](https://github.com/Janpot)

##### Data Grid

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### `@mui/[email protected]` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")

Same changes as in `@mui/[email protected]`.

##### Date and Time Pickers

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### Charts

##### `@mui/[email protected]`

- \[charts] Add Legend actions ([#&#8203;20404](mui/mui-x#20404)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Add `initialHiddenItems` prop to set initial state ([#&#8203;20894](mui/mui-x#20894)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Control the item tooltip ([#&#8203;20617](mui/mui-x#20617)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Export plugins from premium ([#&#8203;20866](mui/mui-x#20866)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Fix node anchor on iOS ([#&#8203;20848](mui/mui-x#20848)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Fix test inconsistency in charts ([#&#8203;20907](mui/mui-x#20907)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Revert `touch-action: pan-y` removal when zoom is disabled ([#&#8203;20852](mui/mui-x#20852)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts] Use React event handler to detect pointer type ([#&#8203;20849](mui/mui-x#20849)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Enable keyboard navigation in radar chart ([#&#8203;20765](mui/mui-x#20765)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Fix tooltip position for stacked line series ([#&#8203;20901](mui/mui-x#20901)) [@&#8203;alexfauquette](https://github.com/alexfauquette)

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`, plus:

- \[charts-pro] Add keyboard navigation to funnel ([#&#8203;20766](mui/mui-x#20766)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Add keyboard navigation to heatmap ([#&#8203;20786](mui/mui-x#20786)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Add keyboard navigation to sankey ([#&#8203;20777](mui/mui-x#20777)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Prefer global pointer interaction tracker in Heatmap ([#&#8203;20697](mui/mui-x#20697)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts-pro] Support composition for Sankey ([#&#8203;20604](mui/mui-x#20604)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Fix crash when two same-direction axes have a zoom preview ([#&#8203;20916](mui/mui-x#20916)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)

##### `@mui/[email protected]` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")

Same changes as in `@mui/[email protected]`, plus:

- \[charts-premium] Add `ChartContainerPremium` ([#&#8203;20910](mui/mui-x#20910)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts-premium] Fix `ChartDataProviderPremium` tests ([#&#8203;20868](mui/mui-x#20868)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)

##### Tree View

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### Codemod

##### `@mui/[email protected]`

Internal changes.

##### Docs

- \[docs] Fix Waterfall Chart documentation badge from Pro to Premium ([#&#8203;20888](mui/mui-x#20888)) [@&#8203;Copilot](https://github.com/Copilot)
- \[docs] Fix broken links on Data Grid Editing sub-pages ([#&#8203;20911](mui/mui-x#20911)) [@&#8203;arminmeh](https://github.com/arminmeh)
- \[docs] Increase chart axis size in docs to fit in Ubuntu Firefox ([#&#8203;20844](mui/mui-x#20844)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[docs] Simplify heatmap zoom demo ([#&#8203;20851](mui/mui-x#20851)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[docs] Revise the Charts Composition doc ([#&#8203;20032](mui/mui-x#20032)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Revise the Charts Localization doc ([#&#8203;20800](mui/mui-x#20800)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Revise the Charts Stacking doc ([#&#8203;20830](mui/mui-x#20830)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Fix broken links ([#&#8203;20914](mui/mui-x#20914)) [@&#8203;Janpot](https://github.com/Janpot)

##### Core

- \[code-infra] Fix `material-ui/disallow-react-api-in-server-components` ([#&#8203;20909](mui/mui-x#20909)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[code-infra] Prepare for v9 ([#&#8203;20860](mui/mui-x#20860)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[code-infra] Update codeowners ([#&#8203;20886](mui/mui-x#20886)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[internal] Remove local Claude settings from the repo ([#&#8203;20853](mui/mui-x#20853)) [@&#8203;cherniavskii](https://github.com/cherniavskii)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380)

[Compare Source](prettier/prettier@3.7.4...3.8.0)

[diff](prettier/prettier@3.7.4...3.8.0)

🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0)

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=-->

See merge request swiss-armed-forces/cyber-command/cea/loom!253

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request Jan 18, 2026
chore(deps): update frontend dependencies (minor) (minor)

This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@mui/x-charts](https://mui.com/x/react-charts/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-charts)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-charts/8.24.0/8.25.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mui/mui-x/badge)](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) |
| [@mui/x-tree-view](https://mui.com/x/react-tree-view/) ([source](https://github.com/mui/mui-x/tree/HEAD/packages/x-tree-view)) | dependencies | minor | [`8.24.0` → `8.25.0`](https://renovatebot.com/diffs/npm/@mui%2fx-tree-view/8.24.0/8.25.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/mui/mui-x/badge)](https://securityscorecards.dev/viewer/?uri=github.com/mui/mui-x) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.7.4` → `3.8.0`](https://renovatebot.com/diffs/npm/prettier/3.7.4/3.8.0) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/prettier/prettier/badge)](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) |

---

### Release Notes

<details>
<summary>mui/mui-x (@&#8203;mui/x-charts)</summary>

### [`v8.25.0`](https://github.com/mui/mui-x/blob/HEAD/CHANGELOG.md#8250)

[Compare Source](mui/mui-x@v8.24.0...v8.25.0)

<!-- generated comparing v8.24.0..master -->

*Jan 14, 2026*

We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:

- 📊 The Chart legend now has an option that enables [click to toggle visibility](https://mui.com/x/react-charts/legend/#toggle-visibility) of series.

  ![Image](https://github.com/user-attachments/assets/c8250287-1318-4581-ac5d-07e7ee01341c)

- 🐞 Bugfixes

- 📚 Documentation improvements

The following team members contributed to this release:
[@&#8203;alexfauquette](https://github.com/alexfauquette), [@&#8203;arminmeh](https://github.com/arminmeh), [@&#8203;bernardobelchior](https://github.com/bernardobelchior), [@&#8203;cherniavskii](https://github.com/cherniavskii), [@&#8203;JCQuintas](https://github.com/JCQuintas), [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje), [@&#8203;rita-codes](https://github.com/rita-codes), [@&#8203;Janpot](https://github.com/Janpot)

##### Data Grid

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### `@mui/[email protected]` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")

Same changes as in `@mui/[email protected]`.

##### Date and Time Pickers

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### Charts

##### `@mui/[email protected]`

- \[charts] Add Legend actions ([#&#8203;20404](mui/mui-x#20404)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Add `initialHiddenItems` prop to set initial state ([#&#8203;20894](mui/mui-x#20894)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Control the item tooltip ([#&#8203;20617](mui/mui-x#20617)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Export plugins from premium ([#&#8203;20866](mui/mui-x#20866)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Fix node anchor on iOS ([#&#8203;20848](mui/mui-x#20848)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Fix test inconsistency in charts ([#&#8203;20907](mui/mui-x#20907)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[charts] Revert `touch-action: pan-y` removal when zoom is disabled ([#&#8203;20852](mui/mui-x#20852)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts] Use React event handler to detect pointer type ([#&#8203;20849](mui/mui-x#20849)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Enable keyboard navigation in radar chart ([#&#8203;20765](mui/mui-x#20765)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts] Fix tooltip position for stacked line series ([#&#8203;20901](mui/mui-x#20901)) [@&#8203;alexfauquette](https://github.com/alexfauquette)

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`, plus:

- \[charts-pro] Add keyboard navigation to funnel ([#&#8203;20766](mui/mui-x#20766)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Add keyboard navigation to heatmap ([#&#8203;20786](mui/mui-x#20786)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Add keyboard navigation to sankey ([#&#8203;20777](mui/mui-x#20777)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Prefer global pointer interaction tracker in Heatmap ([#&#8203;20697](mui/mui-x#20697)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts-pro] Support composition for Sankey ([#&#8203;20604](mui/mui-x#20604)) [@&#8203;alexfauquette](https://github.com/alexfauquette)
- \[charts-pro] Fix crash when two same-direction axes have a zoom preview ([#&#8203;20916](mui/mui-x#20916)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)

##### `@mui/[email protected]` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")

Same changes as in `@mui/[email protected]`, plus:

- \[charts-premium] Add `ChartContainerPremium` ([#&#8203;20910](mui/mui-x#20910)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[charts-premium] Fix `ChartDataProviderPremium` tests ([#&#8203;20868](mui/mui-x#20868)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)

##### Tree View

##### `@mui/[email protected]`

Internal changes.

##### `@mui/[email protected]` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")

Same changes as in `@mui/[email protected]`.

##### Codemod

##### `@mui/[email protected]`

Internal changes.

##### Docs

- \[docs] Fix Waterfall Chart documentation badge from Pro to Premium ([#&#8203;20888](mui/mui-x#20888)) [@&#8203;Copilot](https://github.com/Copilot)
- \[docs] Fix broken links on Data Grid Editing sub-pages ([#&#8203;20911](mui/mui-x#20911)) [@&#8203;arminmeh](https://github.com/arminmeh)
- \[docs] Increase chart axis size in docs to fit in Ubuntu Firefox ([#&#8203;20844](mui/mui-x#20844)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[docs] Simplify heatmap zoom demo ([#&#8203;20851](mui/mui-x#20851)) [@&#8203;bernardobelchior](https://github.com/bernardobelchior)
- \[docs] Revise the Charts Composition doc ([#&#8203;20032](mui/mui-x#20032)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Revise the Charts Localization doc ([#&#8203;20800](mui/mui-x#20800)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Revise the Charts Stacking doc ([#&#8203;20830](mui/mui-x#20830)) [@&#8203;mapache-salvaje](https://github.com/mapache-salvaje)
- \[docs] Fix broken links ([#&#8203;20914](mui/mui-x#20914)) [@&#8203;Janpot](https://github.com/Janpot)

##### Core

- \[code-infra] Fix `material-ui/disallow-react-api-in-server-components` ([#&#8203;20909](mui/mui-x#20909)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[code-infra] Prepare for v9 ([#&#8203;20860](mui/mui-x#20860)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[code-infra] Update codeowners ([#&#8203;20886](mui/mui-x#20886)) [@&#8203;JCQuintas](https://github.com/JCQuintas)
- \[internal] Remove local Claude settings from the repo ([#&#8203;20853](mui/mui-x#20853)) [@&#8203;cherniavskii](https://github.com/cherniavskii)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380)

[Compare Source](prettier/prettier@3.7.4...3.8.0)

[diff](prettier/prettier@3.7.4...3.8.0)

🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0)

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=-->

See merge request swiss-armed-forces/cyber-command/cea/loom!253

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
Co-authored-by: open-source Pipeline <group_90701827_bot_ed04ae348bc5f40af9966fb8b6867e99@noreply.gitlab.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance scope: charts Changes related to the charts. type: enhancement It’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants