# 4.x Migration Guide
Chart.js 4.0 introduces a number of breaking changes. We tried keeping the amount of breaking changes to a minimum. For some features and bug fixes it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.
# End user migration
- Charts don't override the default tooltip callbacks, so all chart types have the same-looking tooltips.
- Default scale override has been removed if the configured scale starts with
xAxesin your config will now create a second scale instead of overriding the default
A number of changes were made to the configuration options passed to the
Chart constructor. Those changes are documented below.
# Specific changes
- The radialLinear grid indexable and scriptable options don't decrease the index of the specified grid line anymore.
destroyplugin hook has been removed and replaced with
- Ticks callback on time scale now receives timestamp instead of a formatted label.
scales[id].grid.drawBorderhas been renamed to
scales[id].grid.borderWidthhas been renamed to
scales[id].grid.borderColorhas been renamed to
scales[id].grid.borderDashhas been renamed to
scales[id].grid.borderDashOffsethas been renamed to
- The z index for the border of a scale is now configurable instead of being 1 higher as the grid z index.
- Linear scales now add and subtracts
5%of the max value to the range if the min and max are the same instead of
- If the tooltip callback returns
undefined, then the default callback will be used.
maintainAspectRatiorespects container height.
- Time and timeseries scales use
time.stepSize, which has been removed.
maxTickslimitwont be used for the ticks in
autoSkipif the determined max ticks is less then the
# Type changes
- The order of the
ChartMetaparameters have been changed from
<Element, DatasetElement, Type>to
<Type, Element, DatasetElement>.
- Removed fallback to
fontColorfor the legend text and strikethrough color.
this.chartin the filler plugin.
this._chartin the filler plugin.