Canvas timeline library
Fast, lightweight, interactive timelines that pan, zoom and respond to touch like they should, with nothing else to install.
Canvas rendering with virtual scrolling means only visible items are drawn. Load thousands of items and pan through them smoothly.
Smoothly navigate to any item, date, or range with configurable easing and duration. Click the buttons to see it in action.
Use the built-in native date handling, or bring your own. Luxon, Day.js, date-fns, whatever your stack uses. Full control over formatting and timezone handling.
The timeline resizes with whatever contains it. Open a sidebar, collapse a panel or go fullscreen, and it redraws to fit straight away.
Stream events in real time and the timeline keeps up. New data appears instantly with smooth animated transitions, no flicker, no jank.
Define source and target item relationships and the timeline draws the connector arrows automatically, so finish-to-start schedules read like a Gantt chart.
One call and you've got a PNG, JPEG, or WebP. Control the pixel ratio for crisp retina output.
Reach for the core library in any project, or pick up the React or Vue package and let it slot into your framework like it belongs there.
Plain JavaScript or TypeScript. Works with any framework, or none at all.
A React component that updates as your data changes and cleans up after itself.
A Vue 3 component with two-way selection binding and reactive data.
Planned.
Planned.
Quite a lot, and it's all built in. No plugins to hunt down or wire up.
Pointer events throughout, so drag-to-pan and pinch-to-zoom work the same on a trackpad, a mouse and a phone.
Group items by category for shared styling. The legend filters on click and highlights on hover, both switchable.
An overview bar showing every item with the current viewport marked. Click or drag it to move the visible range.
Flip the whole timeline right to left for Arabic, Hebrew and other RTL layouts.
Replace the default hover tooltip with your own layout, and control when and whether it shows.
Shade a stretch of time behind the items to mark shift patterns, maintenance windows or deadlines.
Pan and zoom from the keyboard, label it for screen readers, and it eases off animation when a visitor prefers less motion.
Written in TypeScript, so your editor autocompletes options and catches mistakes as you type.
Overlapping items stack into tidy rows on their own, and groups can be sorted and collapsed.
Under 18 kB minified and gzipped, with no runtime dependencies to pull in or keep up to date.
The whole timeline is one canvas element, not thousands of DOM nodes, so it stays smooth with large datasets.
Single or multi-select items, controlled by you or managed for you, with click and keyboard both wired up.
Override any item's colour, border, dash pattern, corner radius and padding to encode status at a glance.
Show completion as a fill inside a range item, clipped to its corners, for a Gantt-style view of how far along work is.
Pin the earliest and latest navigable dates and set minimum and maximum zoom, so users can only pan and zoom where it makes sense.
Grab it from npm, or drop in a script tag. Either way you're a handful of lines from your first timeline.
No build step? There's a ready-to-use script tag you can drop straight into a page.