ApexCharts 6.0 is the largest release in the library's history. The theme running through it is a shift in what a chart is for: from a picture you look at to a surface you can investigate, author, and share. You can now draw and drag annotations directly on the plot, measure any move with a ruler, filter a whole dashboard by clicking one chart, undo and redo those actions, capture a view into a shareable URL, and drive a chart from the reader's scroll position. Underneath, a plugin platform, custom series types, a canvas renderer, and design-token theming open the library up for extension and scale.

Everything new is opt-in and tree-shakeable, and no option was removed or renamed, so your existing charts keep rendering exactly as they did. This post is the map: what shipped, how to turn each piece on, what changed by default, and where to go deep on the features that deserve their own walkthrough.

Key takeaways

  • Act on the chart, not just read it: Ink (author annotations by dragging), the Measure ruler, and a right-click Context Menu bring editing onto the plot surface itself.
  • Coordinated investigation: Linked Views crossfilter turns separate charts into one dashboard, Rewind adds undo/redo, and Perspectives serializes a view into a URL you can share.
  • Narrative: Storyboard binds prose sections to saved chart views, so scrolling drives the chart (scrollytelling), and reverses cleanly on the way back up.
  • Extensibility: the Weave plugin platform lets code draw into its own sandboxed layer, and Marks lets you register entirely new series types (bullet, lollipop, dumbbell, or your own).
  • Scale: the Strata canvas renderer paints dense series bodies to a canvas while keeping axes, tooltips, and zoom as SVG, so tens of thousands of points stay interactive.
  • Theming and motion: Facet drives colors from CSS design tokens and can follow the OS light/dark preference; Cadence makes animation easing pluggable.
  • No forced migration: existing configs are unchanged. Two defaults changed (coherent data transitions, mobile momentum gestures), both reversible in one line.

What's new, grouped by what it lets you do

Author directly on the chart

Three features move editing onto the plot surface:

  • Ink makes annotations draggable and authorable. Grab a labelled point and move it, click a note to open a floating editor (rename, recolor, resize the marker), or drop a new note by clicking the plot. On release, the pixel position is converted back to data coordinates and written to annotations.points[], so the note stays glued to its data location through zoom and resize. See the annotation authoring guide.
  • Measure is a ruler. Drag across the plot and a shaded band reports the change, percent change, and range between two points, snapped to the series line in the finance-style span mode or free-form in free mode. See the Measure ruler guide.
  • Context Menu replaces the browser right-click with chart-aware actions (radial actions), so exporting, annotating, or measuring is one click away where the pointer already is. See the context menu guide.

Investigate and coordinate

  • Linked Views (crossfilter) turns a set of charts into a coordinated dashboard over one shared record set. Click a bucket or brush a range in one chart and every other chart re-aggregates over the rows that pass all the other filters. See the linked views guide and the crossfilter demo.
  • Rewind adds history: chart.history.undo() / redo(), keyboard shortcuts, and a coalescing window so a drag becomes one undo step, not fifty. See the undo/redo guide.
  • Perspectives captures the current view (zoom window, hidden series, theme) into a compact token you can put in a URL, so a coworker opens the exact same view. See the shareable views guide.

Present and narrate

  • Storyboard is scrollytelling for charts. You pair prose "beats" with saved views; scrolling a beat into the viewport applies its view (and can morph the chart), and scrolling back reverses it. See the Storyboard guide and the scrollytelling demo.

Extend the library

  • Weave is a plugin platform. A plugin registers once by name, subscribes to lifecycle hooks like draw, and paints into its own sandboxed layer using a stable API (scales, data, theme). It never touches internal state. See the plugins guide.
  • Marks lets you register new series types by name, so series[].type: 'lollipop' renders your renderer. Bullet, lollipop, and dumbbell ship as examples. See the custom series guide and the custom series demos.

Scale and theme

  • Strata is a hybrid canvas renderer. Set chart.renderer: 'canvas' (or 'auto') and the dense series bodies paint to a canvas layer while axes, grid, zoom, and the shared tooltip stay SVG. See the canvas renderer guide.
  • Facet drives the palette from CSS design tokens (--apx-*) and can follow the OS with theme.follow: 'os', so the chart re-themes with the rest of your page. See the themes guide and dark mode guide.
  • Cadence makes easing pluggable: animations.easing accepts a named curve, a cubic-bezier array, or a function, and you can register your own. See the animations guide.

Feature reference: what to turn on

Every advanced feature is a tree-shakeable entry point you import as a side effect, then enable in config. Four capabilities are core (always on, no import).

FeatureTurn it onDocs
Ink (annotation authoring)import 'apexcharts/features/ink' + chart.ink.enabledGuide
Measure rulerimport 'apexcharts/features/measure' + chart.measure.enabledGuide
Context Menuimport 'apexcharts/features/context-menu' + chart.contextMenu.enabledGuide
Linked Views (crossfilter)import 'apexcharts/features/link' + chart.linkGuide
Rewind (undo/redo)import 'apexcharts/features/history' + chart.history.enabledGuide
Perspectives (shareable views)import 'apexcharts/features/perspectives'Guide
Storyboard (scrollytelling)import 'apexcharts/features/storyboard'Guide
Weave (plugins)import 'apexcharts/features/weave'Guide
Marks (custom series)import 'apexcharts/features/marks'Guide
Strata (canvas renderer)import 'apexcharts/features/renderer-canvas' + chart.rendererGuide
Facet (tokens / OS themes)import 'apexcharts/features/facet' + theme.follow / theme.tokensGuide
Morph (chart-type morph)import 'apexcharts/features/morph' + animations.chartTypeMorph.enabledGuide
Cadence (easing)core, no importGuide
Streamingcore, no importGuide
Momentum gesturescore, no importGuide
Coherent data transitionscore, no importGuide

Turning a feature on is two lines. Ink, for example:

import ApexCharts from 'apexcharts'
import 'apexcharts/features/ink'

const chart = new ApexCharts(document.querySelector('#chart'), {
  series: [{ name: 'Signal', data: [42, 61, 38, 74, 55, 48, 67, 52] }],
  chart: { type: 'line', ink: { enabled: true, palette: true } },
})
chart.render()

What changed by default (and how to switch it back)

No option was removed or renamed. Two behaviors now default to on. Both are one line to reverse.

BehaviorNow the defaultRestore the old behavior
Coherent data transitionsAn updateSeries that changes the number of points tweens through one coherent animation instead of snappingchart: { animations: { dynamicAnimation: { enabled: false } } }
Mobile momentum gesturesTouch charts get pinch-to-zoom and inertial (flick) panchart: { zoom: { pinch: false }, pan: { inertia: false } }

Both are additionally gated: transitions fall back to a fast fade above animations.largeDatasetThreshold (1000 points), and both honor prefers-reduced-motion.

How to adopt only what you need (tree-shaking)

The default import ApexCharts from 'apexcharts' is still the full build with every feature included, so existing imports keep working. When you want the smallest bundle, import the slim core and add only the features you use:

// Before (v5 and still valid): the full batteries-included build
import ApexCharts from 'apexcharts'

// After (v6): the slim core plus the two features this chart actually uses
import ApexCharts from 'apexcharts/core'
import 'apexcharts/features/measure'
import 'apexcharts/features/link'

Your bundler then drops the code for every feature you did not import. See the tree-shaking guide for the full entry-point list and which capabilities are core.

How to upgrade

Install the latest from npm, or bump the pinned version on your CDN link:

npm install apexcharts@latest
  • Framework wrappers: the React (react-apexcharts), Vue, and Angular wrappers work on their existing peer ranges. No wrapper change is required for 6.0.
  • TypeScript: types ship inside the package (apexcharts/types), so there is no @types/apexcharts to install, and the new config namespaces and methods are fully typed.
  • Migration: because new features are opt-in and old options are unchanged, most projects upgrade with no code changes. If you rely on the two changed defaults above, add the one-line reversal.

Alongside the features, 6.0 tightens a set of long-standing rendering issues: scatter zoom no longer jitter-snaps its band, render() is idempotent, legend toggling works under strict CSS selector engines, and area morphs no longer emit a malformed pathFrom.

Go deeper

Each of these features has a dedicated walkthrough with a live demo:

Summary

ApexCharts 6.0 makes a chart something you act on. You can author annotations by dragging them, measure any move, filter a dashboard by clicking, undo and redo, share an exact view by URL, and narrate with scroll. The Weave plugin platform and Marks custom series open the library for extension, Strata scales it to dense data, and Facet and Cadence modernize theming and motion. All of it is opt-in and tree-shakeable, no option was removed, and only two defaults changed (each reversible in a line). Run npm install apexcharts@latest, import the one or two features your chart needs, and the rest of your code stays exactly as it is. ApexCharts is free under the Community license under $2M in annual revenue; see pricing for the current terms.

Frequently asked questions

What is new in ApexCharts 6.0?

ApexCharts 6.0 adds features that let people act on a chart, not just look at it: Ink for dragging and authoring annotations directly on the plot, a Measure ruler, a right-click Context Menu, Linked Views crossfilter for coordinated dashboards, Rewind (undo/redo), Perspectives (shareable view state via a URL), Storyboard (scroll-driven storytelling), the Weave plugin platform, Marks (register your own series types), the Strata canvas renderer for high-density data, Facet (design-token and OS-following theming), and Cadence (pluggable easing). Two behaviors also changed by default: coherent data transitions and mobile momentum gestures, both with escape hatches.

Are there breaking changes in ApexCharts 6.0?

No options were removed or renamed, and existing configs keep rendering. Two defaults changed: variable-length data updates now tween coherently through a single animation, and touch charts have momentum pinch-zoom and inertial pan on by default. Both are gated by prefers-reduced-motion and a large-dataset threshold, and both can be switched off (dynamicAnimation.enabled: false, zoom.pinch: false, pan.inertia: false). Every new feature is opt-in, so nothing new activates until you ask for it.

How do I upgrade to ApexCharts 6.0?

Run npm install apexcharts@latest (or bump the version on your CDN link). The React, Vue, and Angular wrappers work unchanged on their existing peer ranges. TypeScript types ship in the package, so no @types install is needed. Because the new features are opt-in and the old options are unchanged, most projects upgrade with no code changes.

Does ApexCharts 6.0 support tree-shaking?

Yes. Import ApexCharts from 'apexcharts/core' and add only the feature entry points you use, for example import 'apexcharts/features/ink'. Bundlers then drop the code for every feature you did not import. The default 'apexcharts' import is still the full batteries-included build, so existing imports keep working; tree-shaking is the opt-in path when you want the smallest bundle.

Is ApexCharts free to use?

ApexCharts is free under the Community license for individuals and organizations under $2M in annual revenue. Larger organizations need a Commercial license. See the pricing page for the current terms. 6.0 does not change the licensing model.