Chart.js v3.0.0-alpha Release Notes

Release Date: 2020-03-12 // 4 months ago
  • 💥 Breaking Changes

    🚀 There are many breaking changes in this release of Chart.js. Most will not be noticeable to users as they are in the internals of the chart, or at points where plugins & scales interface with the chart. However, there are changes to the config option format in v3. Most noticeably, scales are no longer specified in an array and instead are specified in an object. The migration guide provides more details on all of the changes made so far.

    ✨ Enhancements

    • #7156 Use global element hidden status for Pie charts
    • 👷 #7146 WebWorker support
    • 🔧 #7055 Configurable hide/show animations
    • #7007 Improved formatting of numeric scale labels
    • #7004 Format numbers in tooltip
    • #6995 Add tooltip boxWidth and boxHeight options
    • #6993 Allow specifying spanGaps as number (max distance)
    • #6964 Allow switching platforms
    • #6958 Use binary search for interpolations
    • #6939 Scriptable tick fonts
    • #6908 Title alignment options
    • #6906 Add the ability to add a title to the legend
    • #6883 Enable override settings for the axis border
    • #6818 Allow axes to be centered on chart area
    • #6787 Add optional stroke lines around tick text to improve readability
    • #6739 Floating bar chart data can be specified using objects
    • 🔧 #6700 Functional config options for scale grid line configuration
    • ⚡️ #6635 Update tooltip content and styling in onUpdate()
    • #6521 Add label alignment option to axis label title

    🐎 Performance

    🐎 Numerous performance enhancements have been added including the ones below. This may result in 10x or more faster performance in some use cases. Chart.js is now more than 3x faster on the uPlot benchmark.

    • 🚚 #7155 remove chartjs-adapater-moment
    • ⚡️ #6959 Optimize category parse
    • #6958 Use binary search for interactions
    • ⚡️ #6871 Optimize arrayUnique
    • #6845 Rewrite animation logic
    • 🐎 #6783 Improve autoSkip performance
    • #6775 Assume time series data has been normalized
    • 📜 #6768 Allow pre-parsed data
    • 🐎 #6762 Improve stacking performance and footprint
    • 📜 #6758 Reduce object creation during parsing
    • #6757 Cache sorting order of dataset metas
    • 🚚 #6745 Remove moment from dependencies
    • #6729 Reduce cloning and duplicate options resolution
    • ⚡️ #6722 Change updateElement to updateElements
    • 🐎 #6710 Performance optimizations when animations are disabled

    🐛 Bug Fixes

    • 💅 #7150 Stop leaking fonts (and fillStyle) to ctx
    • #7139 Fill between datasets
    • #7103 Change remaining for of loops to regular ones for IE11 compatibility
    • #7098 Fix transparentize in samples
    • #7097 Fix memory leak
    • 0️⃣ #7079 Animate circumference by default
    • ⚡️ #7060 Fix legend title drawing & update sample
    • #7047 Fix bug in opacity handling
    • #7044 Generate ticks when source is data
    • #7040 Fix typo in elements.line
    • #7037 Fix isRadial is always false
    • #7023 Fix binarySearch for empty dataset
    • #7014 When gridLines.display is false, the axis border is still drawn
    • ⚡️ #6989 Ensure filler works correctly when updating datasets
    • #6988 Proper text alignment for multiline tick labels
    • #6984 Show color box only on the first line of the tooltip body
    • #6975 Fix drawPoint parameters
    • #6974, #6987 Resize on zoom
    • #6973 Fix clipping when zoomed
    • #6972 Fix bar border artifacts
    • ⚡️ #6971 Fix updating retinaScale
    • #6966 Linear scale with min/max/stepSize set should use all 3 if the range fits
    • #6962 Fix reference to distanceBetweenPoints
    • #6961 Fix tooltip for 'dataset' mode
    • #6953 Throttle all events (to 1 / frame each)
    • #6947 Detect stack change
    • #6945 Account for hoverRadius in Point.size()
    • #6944 Draw active points last
    • 📜 #6925 Re-parse existing elements when data is replaced
    • 📜 #6826 Shrink _parsed to match if dataset shrinks
    • 📇 #6778 Better support for react, don't store metadata on dataset
    • #6761 Fix tick spacing calculations
    • #6642 More versatile clipping algorithm
    • 📜 #6576 Data is parsed only once + support stacking datasets by value using object configs
    • #6227 Limit clicks to chart area

    📚 Documentation

    • #7147 Ensure all samples use correct scale options
    • 🚚 #7128 Remove version from docs. Use latest
    • #7124 Create a Tick typedef
    • #7119 Include Typedoc files on GitHub pages
    • #7034 Fix legend.md markdown syntax
    • ⚡️ #6948 Update moment to 2.24 in samples
    • #6919 Add multi series pie example
    • ⚡️ #6918 Update tooltip docs with working example
    • 📄 #6901 Link PolarArea chart docs to radial axis docs
    • 📚 #6897 Update documentation of order
    • ⚡️ #6736 Update time combo chart sample
    • #6666 Add sample files with gradient fills
    • 📚 #5281 - Generate JSDoc documentation

    Development


Previous changes from v2.9.3

  • 🐛 Bug Fixes

    • #6698 Fix undefined variable
    • #6719 Don't make legend empty when fill is false

    ✅ Thanks to the maintainers and collaborators for their help to improve and test Chart.js (@kurkle, @benmccann, and @etimberg).