Repository navigation
Upgrade Highcharts to 13.x in the next major version #12213
Description
Activity
- addedenhancementNew feature or requestNew feature or request
on Jul 22, 2026 - addedrequires new majorThis would be a breaking changeThis would be a breaking changev26To be done in V26To be done in V26
on Aug 27, 2026 Solid gauge blocker: workaround verified
Prototype branch:
proto/hc-solidgauge-colorindex— highcharts bumped to 12.6.0 to reproduce, plus workaround, unit tests, and a dev-page reproduction of the upstream config.Root cause.
SolidGaugeSeries#drawPointsremoves thehighcharts-color-{n}classes wheneverseries.yAxis.stopsis truthy. ButColorAxisBase.initStopsalways assignsaxis.stops, falling back to[[0, minColor || ''], [1, maxColor || '']]— undefined in styled mode. Sostopsis a truthy array of invalid colors,toColor()returns'none', nofillis written, and the class is removed anyway. The point ends up with neither a class nor a fill and rendersfill: none, fully invisible. Identical in 12.3.0 through 13.0.2, and the only such site in the source.Workaround (in
vaadin-chart-mixin.js, next to the existing monkeypatches):Highcharts.wrap(Highcharts.seriesTypes.solidgauge.prototype, 'drawPoints', function (proceed, ...args) { proceed.apply(this, args); const stops = this.yAxis?.stops; if (!this.chart.styledMode || (stops && stops.every((stop) => stop.color?.get('rgb') !== ''))) { return; } this.points.forEach((point) => { if (point.graphic) { point.graphic.addClass(point.getClassName(), true); } }); });
Verified on the composed gauge from highcharts/highcharts#23279:
Variant Before After Point colorIndex: 0, seriescolorIndex: 0highcharts-point, fillnonehighcharts-point highcharts-color-0Point colorIndex: 3, seriescolorIndex: 0highcharts-point, fillnonehighcharts-point highcharts-color-3Same, with yAxis.stopsgradient fillattributeunchanged Also holds after
point.update({ colorIndex }),series.setData()andchart.redraw().It wraps instead of overriding, so it does not duplicate the ~90-line
drawPointsbody. The guard is the same condition as highcharts/highcharts#23831, so once that is merged the wrap writes the identical class list and removing it is never urgent.Effect on the plan. "Blocker handling" is resolved: no need to wait for #23831, and point-level
colorIndexdoes not have to be documented as unsupported.- added a commit that references this issue
on Sep 4, 2026 - added a commit that references this issue
on Sep 4, 2026 - added 5 commits that reference this issue
on Sep 8, 2026


Describe your motivation
@vaadin/chartsis pinned to Highcharts 12.2.0 since it was last upgraded (#10010). Highcharts 13.0.0 was released on 2026-06-11, and we are now five releases behind (12.3.0–12.6.0, 13.0.0). Staying on 12.2.0 means missing, among other things, local (in-browser) image export, which is the default since 12.3.0, the newpaletteoptions with colors exposed as CSS custom properties, and the DataTable-based data input.The original blocker that kept us on 12.2.0 is still not fixed: solid gauge loses its
highcharts-color-{n}classes in styled mode whenyAxis.stopsis set (highcharts/highcharts#23279, tracked in #10104). The regression code is still present in the 13.0.0 sources. A fix was proposed in highcharts/highcharts#23831, but it has not been reviewed yet.Describe the solution you'd like
Upgrade
highchartsto the latest 13.x for the next Vaadin major version. Based on an audit of the 13.0.0 changelog and sources against our integration code:Blocker handling (one of):
.highcharts-solidgauge-series path.highcharts-point { fill: inherit; }), documenting that point-levelcolorIndexoverrides are not covered.Note
Update (2026-08-31): We can consider this no longer a blocker after the research shared in the comment below showed that we can implement a workaround while the fix doesn't land in Highcharts.
Known work items:
Pointer.prototype.onDocumentMouseMove,KeyboardNavigation.prototype.onMouseUp) against the 13 implementations. Both upstream issues they work around (Wrong click behavior in drilldown series when a chart is placed in a shadow root highcharts/highcharts#23490, Data labels misaligned in Organization chart in styled mode highcharts/highcharts#23443) are still open, so the workarounds stay.exportChart,exportChartLocal,getSVG) to the newHighcharts.Exportingclass API. The chart-level methods still exist in 13 but only as deprecated proxies, andexportChartis now async.modules/data-sorting.jsimport so thatseries.dataSortingpassed through the configuration keeps working (moved out of core in 13).dataLabels.distanceoption).useHTMLcontent, which is now wrapped in<div>instead of<span>.paletteCSS custom properties instead of the manual--highcharts-*bridging in the base styles.vaadin-charts-flow-svg-generatorhas its ownhighcharts: 12.2.0pin that must be bumped together, and the migration guide must document the behavioral changes (solid gaugeradius/innerRadiusnumbers are now pixels instead of percent, data label positions changed). No Flow Java API removals are required.Describe alternatives you've considered
Additional context
Supersedes #10104. Highcharts 13.0.0 changelog: https://www.highcharts.com/changelog/#highcharts-v13.0.0