Calendar heatmap
A year of daily commits in a contribution calendar.
Why it matters dedicated calendar type: real week/month layout, month labels, weekday rows, colour ranges, nulls distinct from zero
Open the chart without page chrome ↗
const options = {
chart: {
height: 260,
fontFamily: "Inter, Geist, \"IBM Plex Sans\", system-ui, sans-serif",
type: "calendar",
toolbar: {
show: false
}
},
series: [
{
name: "Commits",
data: [
{
x: "2025-01-01",
y: 6
},
{
x: "2025-01-02",
y: 2
},
{
x: "2025-01-03",
y: 1
},
{
x: "2025-01-04",
y: 1
},
{
x: "2025-01-06",
y: 4
},
{
x: "2025-01-07",
y: 1
},
{
x: "2025-01-08",
y: 1
},
{
x: "2025-01-10",
y: 3
},
{
x: "2025-01-12",
y: 2
},
{
x: "2025-01-14",
y: 1
},
{
x: "2025-01-15",
y: 3
},
{
x: "2025-01-17",
y: 2
},
{
x: "2025-01-18",
y: 1
},
{
x: "2025-01-20",
y: 0
},
{
x: "2025-01-21",
y: 3
},
{
x: "2025-01-22",
y: 4
},
{
x: "2025-01-23",
y: 4
},
{
x: "2025-01-24",
y: 0
},
{
x: "2025-01-27",
y: 12
},
{
x: "2025-01-28",
y: 5
},
{
x: "2025-01-29",
y: 7
},
{
x: "2025-01-30",
y: 1
},
{
x: "2025-01-31",
y: 1
},
{
x: "2025-02-03",
y: 5
},
{
x: "2025-02-04",
y: 1
},
{
x: "2025-02-05",
y: 8
},
{
x: "2025-02-06",
y: 10
},
{
x: "2025-02-07",
y: 7
},
{
x: "2025-02-10",
y: 0
},
{
x: "2025-02-11",
y: 2
},
{
x: "2025-02-12",
y: 4
},
{
x: "2025-02-14",
y: 1
},
{
x: "2025-02-15",
y: 1
},
{
x: "2025-02-16",
y: 3
},
{
x: "2025-02-17",
y: 4
},
{
x: "2025-02-18",
y: 3
},
{
x: "2025-02-19",
y: 6
},
{
x: "2025-02-21",
y: 7
},
{
x: "2025-02-25",
y: 2
},
{
x: "2025-02-26",
y: 1
},
{
x: "2025-02-27",
y: 1
},
{
x: "2025-02-28",
y: 0
},
{
x: "2025-03-06",
y: 9
},
{
x: "2025-03-07",
y: 0
},
{
x: "2025-03-10",
y: 0
},
{
x: "2025-03-11",
y: 3
},
{
x: "2025-03-12",
y: 1
},
{
x: "2025-03-13",
y: 6
},
{
x: "2025-03-14",
y: 6
},
{
x: "2025-03-17",
y: 0
},
{
x: "2025-03-18",
y: 3
},
{
x: "2025-03-19",
y: 6
},
{
x: "2025-03-20",
y: 2
},
{
x: "2025-03-21",
y: 4
},
{
x: "2025-03-24",
y: 4
},
{
x: "2025-03-26",
y: 5
},
{
x: "2025-03-27",
y: 0
},
{
x: "2025-03-28",
y: 5
},
{
x: "2025-03-30",
y: 2
},
{
x: "2025-03-31",
y: 3
},
{
x: "2025-04-01",
y: 2
},
{
x: "2025-04-02",
y: 10
},
{
x: "2025-04-03",
y: 2
},
{
x: "2025-04-07",
y: 3
},
{
x: "2025-04-08",
y: 2
},
{
x: "2025-04-09",
y: 0
},
{
x: "2025-04-10",
y: 0
},
{
x: "2025-04-11",
y: 4
},
{
x: "2025-04-12",
y: 1
},
{
x: "2025-04-14",
y: 4
},
{
x: "2025-04-15",
y: 2
},
{
x: "2025-04-16",
y: 1
},
{
x: "2025-04-17",
y: 13
},
{
x: "2025-04-18",
y: 6
},
{
x: "2025-04-19",
y: 3
},
{
x: "2025-04-21",
y: 1
},
{
x: "2025-04-22",
y: 4
},
{
x: "2025-04-23",
y: 1
},
{
x: "2025-04-27",
y: 0
},
{
x: "2025-04-28",
y: 1
},
{
x: "2025-04-29",
y: 0
},
{
x: "2025-04-30",
y: 1
},
{
x: "2025-05-01",
y: 4
},
{
x: "2025-05-02",
y: 3
},
{
x: "2025-05-03",
y: 2
},
{
x: "2025-05-05",
y: 5
},
{
x: "2025-05-06",
y: 1
},
{
x: "2025-05-07",
y: 1
},
{
x: "2025-05-09",
y: 1
},
{
x: "2025-05-11",
y: 3
},
{
x: "2025-05-12",
y: 3
},
{
x: "2025-05-13",
y: 6
},
{
x: "2025-05-14",
y: 7
},
{
x: "2025-05-15",
y: 6
},
{
x: "2025-05-16",
y: 2
},
{
x: "2025-05-17",
y: 3
},
{
x: "2025-05-18",
y: 5
},
{
x: "2025-05-19",
y: 0
},
{
x: "2025-05-21",
y: 7
},
{
x: "2025-05-22",
y: 8
},
{
x: "2025-05-25",
y: 2
},
{
x: "2025-05-26",
y: 0
},
{
x: "2025-05-27",
y: 0
},
{
x: "2025-05-28",
y: 6
},
{
x: "2025-05-30",
y: 3
},
{
x: "2025-06-01",
y: 2
},
{
x: "2025-06-02",
y: 1
},
{
x: "2025-06-03",
y: 5
},
{
x: "2025-06-04",
y: 5
},
{
x: "2025-06-05",
y: 7
},
{
x: "2025-06-07",
y: 1
},
{
x: "2025-06-09",
y: 1
},
{
x: "2025-06-12",
y: 11
},
{
x: "2025-06-13",
y: 3
},
{
x: "2025-06-14",
y: 3
},
{
x: "2025-06-15",
y: 0
},
{
x: "2025-06-16",
y: 7
},
{
x: "2025-06-17",
y: 6
},
{
x: "2025-06-18",
y: 0
},
{
x: "2025-06-19",
y: 8
},
{
x: "2025-06-21",
y: 1
},
{
x: "2025-06-22",
y: 3
},
{
x: "2025-06-23",
y: 6
},
{
x: "2025-06-24",
y: 2
},
{
x: "2025-06-25",
y: 2
},
{
x: "2025-06-26",
y: 0
},
{
x: "2025-06-27",
y: 0
},
{
x: "2025-06-28",
y: 0
},
{
x: "2025-06-30",
y: 0
},
{
x: "2025-07-01",
y: 9
},
{
x: "2025-07-02",
y: 1
},
{
x: "2025-07-03",
y: 10
},
{
x: "2025-07-04",
y: 1
},
{
x: "2025-07-05",
y: 3
},
{
x: "2025-07-07",
y: 3
},
{
x: "2025-07-08",
y: 4
},
{
x: "2025-07-09",
y: 0
},
{
x: "2025-07-10",
y: 0
},
{
x: "2025-07-11",
y: 6
},
{
x: "2025-07-13",
y: 2
},
{
x: "2025-07-15",
y: 6
},
{
x: "2025-07-18",
y: 4
},
{
x: "2025-07-19",
y: 0
},
{
x: "2025-07-21",
y: 6
},
{
x: "2025-07-22",
y: 2
},
{
x: "2025-07-23",
y: 1
},
{
x: "2025-07-24",
y: 2
},
{
x: "2025-07-25",
y: 2
},
{
x: "2025-07-27",
y: 0
},
{
x: "2025-07-28",
y: 4
},
{
x: "2025-07-30",
y: 1
},
{
x: "2025-07-31",
y: 2
},
{
x: "2025-08-03",
y: 1
},
{
x: "2025-08-04",
y: 2
},
{
x: "2025-08-05",
y: 4
},
{
x: "2025-08-07",
y: 12
},
{
x: "2025-08-08",
y: 2
},
{
x: "2025-08-09",
y: 0
},
{
x: "2025-08-12",
y: 2
},
{
x: "2025-08-13",
y: 2
},
{
x: "2025-08-14",
y: 1
},
{
x: "2025-08-15",
y: 2
},
{
x: "2025-08-18",
y: 0
},
{
x: "2025-08-19",
y: 1
},
{
x: "2025-08-20",
y: 6
},
{
x: "2025-08-21",
y: 8
},
{
x: "2025-08-22",
y: 3
},
{
x: "2025-08-24",
y: 5
},
{
x: "2025-08-25",
y: 2
},
{
x: "2025-08-27",
y: 7
},
{
x: "2025-08-28",
y: 2
},
{
x: "2025-08-30",
y: 2
},
{
x: "2025-09-01",
y: 1
},
{
x: "2025-09-02",
y: 5
},
{
x: "2025-09-03",
y: 5
},
{
x: "2025-09-04",
y: 9
},
{
x: "2025-09-05",
y: 8
},
{
x: "2025-09-06",
y: 1
},
{
x: "2025-09-07",
y: 2
},
{
x: "2025-09-08",
y: 2
},
{
x: "2025-09-09",
y: 1
},
{
x: "2025-09-11",
y: 4
},
{
x: "2025-09-13",
y: 1
},
{
x: "2025-09-15",
y: 2
},
{
x: "2025-09-16",
y: 9
},
{
x: "2025-09-17",
y: 1
},
{
x: "2025-09-18",
y: 2
},
{
x: "2025-09-19",
y: 3
},
{
x: "2025-09-22",
y: 4
},
{
x: "2025-09-24",
y: 1
},
{
x: "2025-09-25",
y: 12
},
{
x: "2025-09-26",
y: 0
},
{
x: "2025-09-27",
y: 1
},
{
x: "2025-09-28",
y: 1
},
{
x: "2025-09-29",
y: 1
},
{
x: "2025-09-30",
y: 4
},
{
x: "2025-10-01",
y: 6
},
{
x: "2025-10-02",
y: 3
},
{
x: "2025-10-03",
y: 0
},
{
x: "2025-10-06",
y: 4
},
{
x: "2025-10-07",
y: 9
},
{
x: "2025-10-08",
y: 1
},
{
x: "2025-10-09",
y: 7
},
{
x: "2025-10-10",
y: 0
},
{
x: "2025-10-11",
y: 0
},
{
x: "2025-10-13",
y: 5
},
{
x: "2025-10-14",
y: 3
},
{
x: "2025-10-15",
y: 0
},
{
x: "2025-10-16",
y: 1
},
{
x: "2025-10-17",
y: 3
},
{
x: "2025-10-19",
y: 0
},
{
x: "2025-10-21",
y: 3
},
{
x: "2025-10-22",
y: 8
},
{
x: "2025-10-23",
y: 3
},
{
x: "2025-10-24",
y: 5
},
{
x: "2025-10-26",
y: 4
},
{
x: "2025-10-27",
y: 1
},
{
x: "2025-10-28",
y: 6
},
{
// ... truncated, use Copy or open the full config
const chart = new WestCoastCharts(document.querySelector('#chart'), options)
chart.render()import WestCoastCharts from 'west-coast-charts'
import types from 'west-coast-charts/types'
WestCoastCharts.use(types)
const options = {
chart: {
height: 260,
fontFamily: "Inter, Geist, \"IBM Plex Sans\", system-ui, sans-serif",
type: "calendar",
toolbar: {
show: false
}
},
series: [
{
name: "Commits",
data: [
{
x: "2025-01-01",
y: 6
},
{
x: "2025-01-02",
y: 2
},
{
x: "2025-01-03",
y: 1
},
{
x: "2025-01-04",
y: 1
},
{
x: "2025-01-06",
y: 4
},
{
x: "2025-01-07",
y: 1
},
{
x: "2025-01-08",
y: 1
},
{
x: "2025-01-10",
y: 3
},
{
x: "2025-01-12",
y: 2
},
{
x: "2025-01-14",
y: 1
},
{
x: "2025-01-15",
y: 3
},
{
x: "2025-01-17",
y: 2
},
{
x: "2025-01-18",
y: 1
},
{
x: "2025-01-20",
y: 0
},
{
x: "2025-01-21",
y: 3
},
{
x: "2025-01-22",
y: 4
},
{
x: "2025-01-23",
y: 4
},
{
x: "2025-01-24",
y: 0
},
{
x: "2025-01-27",
y: 12
},
{
x: "2025-01-28",
y: 5
},
{
x: "2025-01-29",
y: 7
},
{
x: "2025-01-30",
y: 1
},
{
x: "2025-01-31",
y: 1
},
{
x: "2025-02-03",
y: 5
},
{
x: "2025-02-04",
y: 1
},
{
x: "2025-02-05",
y: 8
},
{
x: "2025-02-06",
y: 10
},
{
x: "2025-02-07",
y: 7
},
{
x: "2025-02-10",
y: 0
},
{
x: "2025-02-11",
y: 2
},
{
x: "2025-02-12",
y: 4
},
{
x: "2025-02-14",
y: 1
},
{
x: "2025-02-15",
y: 1
},
{
x: "2025-02-16",
y: 3
},
{
x: "2025-02-17",
y: 4
},
{
x: "2025-02-18",
y: 3
},
{
x: "2025-02-19",
y: 6
},
{
x: "2025-02-21",
y: 7
},
{
x: "2025-02-25",
y: 2
},
{
x: "2025-02-26",
y: 1
},
{
x: "2025-02-27",
y: 1
},
{
x: "2025-02-28",
y: 0
},
{
x: "2025-03-06",
y: 9
},
{
x: "2025-03-07",
y: 0
},
{
x: "2025-03-10",
y: 0
},
{
x: "2025-03-11",
y: 3
},
{
x: "2025-03-12",
y: 1
},
{
x: "2025-03-13",
y: 6
},
{
x: "2025-03-14",
y: 6
},
{
x: "2025-03-17",
y: 0
},
{
x: "2025-03-18",
y: 3
},
{
x: "2025-03-19",
y: 6
},
{
x: "2025-03-20",
y: 2
},
{
x: "2025-03-21",
y: 4
},
{
x: "2025-03-24",
y: 4
},
{
x: "2025-03-26",
y: 5
},
{
x: "2025-03-27",
y: 0
},
{
x: "2025-03-28",
y: 5
},
{
x: "2025-03-30",
y: 2
},
{
x: "2025-03-31",
y: 3
},
{
x: "2025-04-01",
y: 2
},
{
x: "2025-04-02",
y: 10
},
{
x: "2025-04-03",
y: 2
},
{
x: "2025-04-07",
y: 3
},
{
x: "2025-04-08",
y: 2
},
{
x: "2025-04-09",
y: 0
},
{
x: "2025-04-10",
y: 0
},
{
x: "2025-04-11",
y: 4
},
{
x: "2025-04-12",
y: 1
},
{
x: "2025-04-14",
y: 4
},
{
x: "2025-04-15",
y: 2
},
{
x: "2025-04-16",
y: 1
},
{
x: "2025-04-17",
y: 13
},
{
x: "2025-04-18",
y: 6
},
{
x: "2025-04-19",
y: 3
},
{
x: "2025-04-21",
y: 1
},
{
x: "2025-04-22",
y: 4
},
{
x: "2025-04-23",
y: 1
},
{
x: "2025-04-27",
y: 0
},
{
x: "2025-04-28",
y: 1
},
{
x: "2025-04-29",
y: 0
},
{
x: "2025-04-30",
y: 1
},
{
x: "2025-05-01",
y: 4
},
{
x: "2025-05-02",
y: 3
},
{
x: "2025-05-03",
y: 2
},
{
x: "2025-05-05",
y: 5
},
{
x: "2025-05-06",
y: 1
},
{
x: "2025-05-07",
y: 1
},
{
x: "2025-05-09",
y: 1
},
{
x: "2025-05-11",
y: 3
},
{
x: "2025-05-12",
y: 3
},
{
x: "2025-05-13",
y: 6
},
{
x: "2025-05-14",
y: 7
},
{
x: "2025-05-15",
y: 6
},
{
x: "2025-05-16",
y: 2
},
{
x: "2025-05-17",
y: 3
},
{
x: "2025-05-18",
y: 5
},
{
x: "2025-05-19",
y: 0
},
{
x: "2025-05-21",
y: 7
},
{
x: "2025-05-22",
y: 8
},
{
x: "2025-05-25",
y: 2
},
{
x: "2025-05-26",
y: 0
},
{
x: "2025-05-27",
y: 0
},
{
x: "2025-05-28",
y: 6
},
{
x: "2025-05-30",
y: 3
},
{
x: "2025-06-01",
y: 2
},
{
x: "2025-06-02",
y: 1
},
{
x: "2025-06-03",
y: 5
},
{
x: "2025-06-04",
y: 5
},
{
x: "2025-06-05",
y: 7
},
{
x: "2025-06-07",
y: 1
},
{
x: "2025-06-09",
y: 1
},
{
x: "2025-06-12",
y: 11
},
{
x: "2025-06-13",
y: 3
},
{
x: "2025-06-14",
y: 3
},
{
x: "2025-06-15",
y: 0
},
{
x: "2025-06-16",
y: 7
},
{
x: "2025-06-17",
y: 6
},
{
x: "2025-06-18",
y: 0
},
{
x: "2025-06-19",
y: 8
},
{
x: "2025-06-21",
y: 1
},
{
x: "2025-06-22",
y: 3
},
{
x: "2025-06-23",
y: 6
},
{
x: "2025-06-24",
y: 2
},
{
x: "2025-06-25",
y: 2
},
{
x: "2025-06-26",
y: 0
},
{
x: "2025-06-27",
y: 0
},
{
x: "2025-06-28",
y: 0
},
{
x: "2025-06-30",
y: 0
},
{
x: "2025-07-01",
y: 9
},
{
x: "2025-07-02",
y: 1
},
{
x: "2025-07-03",
y: 10
},
{
x: "2025-07-04",
y: 1
},
{
x: "2025-07-05",
y: 3
},
{
x: "2025-07-07",
y: 3
},
{
x: "2025-07-08",
y: 4
},
{
x: "2025-07-09",
y: 0
},
{
x: "2025-07-10",
y: 0
},
{
x: "2025-07-11",
y: 6
},
{
x: "2025-07-13",
y: 2
},
{
x: "2025-07-15",
y: 6
},
{
x: "2025-07-18",
y: 4
},
{
x: "2025-07-19",
y: 0
},
{
x: "2025-07-21",
y: 6
},
{
x: "2025-07-22",
y: 2
},
{
x: "2025-07-23",
y: 1
},
{
x: "2025-07-24",
y: 2
},
{
x: "2025-07-25",
y: 2
},
{
x: "2025-07-27",
y: 0
},
{
x: "2025-07-28",
y: 4
},
{
x: "2025-07-30",
y: 1
},
{
x: "2025-07-31",
y: 2
},
{
x: "2025-08-03",
y: 1
},
{
x: "2025-08-04",
y: 2
},
{
x: "2025-08-05",
y: 4
},
{
x: "2025-08-07",
y: 12
},
{
x: "2025-08-08",
y: 2
},
{
x: "2025-08-09",
y: 0
},
{
x: "2025-08-12",
y: 2
},
{
x: "2025-08-13",
y: 2
},
{
x: "2025-08-14",
y: 1
},
{
x: "2025-08-15",
y: 2
},
{
x: "2025-08-18",
y: 0
},
{
x: "2025-08-19",
y: 1
},
{
x: "2025-08-20",
y: 6
},
{
x: "2025-08-21",
y: 8
},
{
x: "2025-08-22",
y: 3
},
{
x: "2025-08-24",
y: 5
},
{
x: "2025-08-25",
y: 2
},
{
x: "2025-08-27",
y: 7
},
{
x: "2025-08-28",
y: 2
},
{
x: "2025-08-30",
y: 2
},
{
x: "2025-09-01",
y: 1
},
{
x: "2025-09-02",
y: 5
},
{
x: "2025-09-03",
y: 5
},
{
x: "2025-09-04",
y: 9
},
{
x: "2025-09-05",
y: 8
},
{
x: "2025-09-06",
y: 1
},
{
x: "2025-09-07",
y: 2
},
{
x: "2025-09-08",
y: 2
},
{
x: "2025-09-09",
y: 1
},
{
x: "2025-09-11",
y: 4
},
{
x: "2025-09-13",
y: 1
},
{
x: "2025-09-15",
y: 2
},
{
x: "2025-09-16",
y: 9
},
{
x: "2025-09-17",
y: 1
},
{
x: "2025-09-18",
y: 2
},
{
x: "2025-09-19",
y: 3
},
{
x: "2025-09-22",
y: 4
},
{
x: "2025-09-24",
y: 1
},
{
x: "2025-09-25",
y: 12
},
{
x: "2025-09-26",
y: 0
},
{
x: "2025-09-27",
y: 1
},
{
x: "2025-09-28",
y: 1
},
{
x: "2025-09-29",
y: 1
},
{
x: "2025-09-30",
y: 4
},
{
x: "2025-10-01",
y: 6
},
{
x: "2025-10-02",
y: 3
},
{
x: "2025-10-03",
y: 0
},
{
x: "2025-10-06",
y: 4
},
{
x: "2025-10-07",
y: 9
},
{
x: "2025-10-08",
y: 1
},
{
x: "2025-10-09",
y: 7
},
{
x: "2025-10-10",
y: 0
},
{
x: "2025-10-11",
y: 0
},
{
x: "2025-10-13",
y: 5
},
{
x: "2025-10-14",
y: 3
},
{
x: "2025-10-15",
y: 0
},
{
x: "2025-10-16",
y: 1
},
{
x: "2025-10-17",
y: 3
},
{
x: "2025-10-19",
y: 0
},
{
x: "2025-10-21",
y: 3
},
{
x: "2025-10-22",
y: 8
},
{
x: "2025-10-23",
y: 3
},
{
x: "2025-10-24",
y: 5
},
{
x: "2025-10-26",
y: 4
},
{
x: "2025-10-27",
y: 1
},
{
x: "2025-10-28",
y: 6
},
{
x: "2025-10-30",
y: 3
},
{
x: "2025-10-31",
y: 5
},
{
x: "2025-11-03",
y: 2
},
{
x: "2025-11-04",
y: 9
},
{
x: "2025-11-05",
y: 8
},
{
x: "2025-11-06",
y: 2
},
{
x: "2025-11-07",
y: 1
},
{
x: "2025-11-09",
y: 1
},
{
x: "2025-11-12",
y: 1
},
{
x: "2025-11-13",
y: 7
},
{
x: "2025-11-14",
y: 3
},
{
x: "2025-11-17",
y: 2
},
{
x: "2025-11-18",
y: 4
},
{
x: "2025-11-19",
y: 5
},
{
x: "2025-11-20",
y: 0
},
{
x: "2025-11-23",
y: 1
},
{
x: "2025-11-24",
y: 0
},
{
x: "2025-11-25",
y: 7
},
{
x: "2025-11-26",
y: 6
},
{
x: "2025-11-27",
y: 5
},
{
x: "2025-11-28",
y: 8
},
{
x: "2025-11-29",
y: 2
},
{
x: "2025-12-01",
y: 5
},
{
x: "2025-12-03",
y: 1
},
{
x: "2025-12-04",
y: 6
},
{
x: "2025-12-05",
y: 1
},
{
x: "2025-12-06",
y: 0
},
{
x: "2025-12-08",
y: 2
},
{
x: "2025-12-09",
y: 7
},
{
x: "2025-12-10",
y: 0
},
{
x: "2025-12-12",
y: 8
},
{
x: "2025-12-13",
y: 1
},
{
x: "2025-12-14",
y: 0
},
{
x: "2025-12-15",
y: 1
},
{
x: "2025-12-16",
y: 1
},
{
x: "2025-12-17",
y: 1
},
{
x: "2025-12-18",
y: 4
},
{
x: "2025-12-19",
y: 1
},
{
x: "2025-12-23",
y: 1
},
{
x: "2025-12-26",
y: 2
},
{
x: "2025-12-29",
y: 2
},
{
x: "2025-12-31",
y: 0
}
]
}
],
colors: ["#16a34a"],
plotOptions: {
calendar: {
start: "2025-01-01",
end: "2025-12-31"
}
},
title: {
text: "Commits per day, 2025"
},
theme: {
mode: "light",
preset: "coastal"
}
}
const chart = new WestCoastCharts(document.querySelector('#chart'), options)
await chart.render() Waiting for the chart.
Open Data & agent view to read this chart through chart.describe().
Read from the running library through its optional agent/describe module. Text, table and JSON share the same snapshot. Demo data only.
$ wcc chart export heatmap-calendar-heatmap.json --out heatmap-calendar-heatmap.svg --with-table Public agent tools 0.2.3, tested with Library 1.1.5; available from the versioned GitHub release and npm. Save a JSON spec first and check the loaded runtime and supported modules before rendering. Command reference
Loading /gallery/heatmap/calendar-heatmap/index.md …