astro@7.1.3
- #17427
630b382Thanks @astrobot-houston! - Fixes image optimization duringastro buildusing too many parallel processes in CPU-limited containers. Builds now respect the container's CPU limit, reducing peak memory usage and avoiding out-of-memory crashes.
💎 Version 6.4.0
A feature release centered on heatmaps and a new bar chart race. Heatmaps gain a continuous numeric and datetime x-axis (cells positioned by real value, not by column index), optional canvas rendering for large grids, and a tooltip that now points at the cell it describes. The bar chart race animates bars and their labels as they re-rank. Two fixes round it out. Existing configs mostly render unchanged; three heatmap defaults change (tooltip placement, zoom, and label thinning), each noted below with how to restore the previous behavior.
On a numeric or datetime heatmap, cells are now placed at their real x value instead of being tiled one per column by index. Irregular spacing and gaps therefore render as real empty space: a missing hour is a gap in the grid, not a column squeezed away, and the axis shows sparse proportional date and time ticks rather than one label per cell. Rows stay categorical (one series per row).
This is what makes irregular-time and calendar-style heatmaps expressible with plain data shaping. Two new demos are built entirely on it: a server-CPU timeline where a metrics outage shows as a real gap, and a contribution-style calendar with ragged first and last weeks.
Evenly spaced heatmaps are unaffected: their layout is unchanged.
With chart.renderer: 'canvas' (or 'auto' past the render threshold) and the tree-shakable canvas feature imported, heatmap cells now paint to a single canvas instead of one <rect> per cell. The DOM node count stays flat regardless of cell count, and paints are roughly 2.8 to 3.5 times faster at high densities. Hover still resolves the exact cell under the cursor and shows its tooltip. Cells that use a fill the canvas cannot reproduce (gradient, pattern, image) fall back to SVG automatically.
| Heatmap cells | SVG | canvas |
|---|---|---|
| 10,000 | 95 ms | 27 ms |
| 50,000 | 519 ms | 170 ms |
| 100,000 | 1,083 ms | 388 ms |
import ApexCharts from 'apexcharts'
import 'apexcharts/features/renderer-canvas'
const options = {
chart: {
type: 'heatmap',
renderer: 'canvas', // or 'auto' to switch above rendererThreshold
},
// ...series
}
A reorder update now animates into a bar chart race. When you re-sort the data and update the chart, the bars slide to their new ranks and their category labels ride along automatically (whenever dynamicAnimation is on). Two opt-in flags complete the effect: dataLabels.animate rides each value label to its bar's new position, and dataLabels.countUp tweens the number from its previous value.
const options = {
chart: {
type: 'bar',
animations: { dynamicAnimation: { speed: 800 } },
},
plotOptions: { bar: { horizontal: true } },
dataLabels: {
enabled: true,
animate: { enabled: true }, // value labels ride to the new rank
countUp: { enabled: true }, // and count up or down from the last value
},
}
// On each frame, re-sort your data and call updateOptions with the new series
// and categories. Bars, category labels, and value labels animate to the new
// order together.
Both label flags are off by default and apply to bar and column charts. Rotated axis labels ride correctly too.
The heatmap tooltip now sits centered above the hovered cell with a downward arrow pointing at it, flipping below when the cell is against the top edge. This matches the horizontal-bar tooltip and makes it unambiguous which cell the tooltip describes; previously it trailed the cursor. Opt back into the old behavior with tooltip.followCursor: true. Custom heatmap tooltips keep the arrow as well.
A heatmap is a fixed grid, so wheel, drag, and pinch zoom only distorted it, and on a datetime axis it collapsed the month labels into repeats. Zoom is now disabled by default, mirroring treemap. Re-enable it with chart.zoom.enabled: true.
When a heatmap has more rows than can fit as readable labels and no custom y-axis formatter is set, it now shows every Nth label, evenly spaced, instead of an unreadable overlap. The ticks and the plot are unchanged, and setting your own yaxis.labels.formatter opts out.
- Light series no longer wash to white on hover. The lighten hover filter pushed already-bright fills all the way to white, so light-colored series lost their hue when hovered. The filter now preserves the color.
dataReducerno longer mutates your data. With zoom-aware downsampling active, the reduced (windowed) view was written back into the originalseriesarray, which is shared by reference, so later re-renders started already downsampled and could never recover the full-resolution points. The reducer now operates on a detached copy, leaving your input intact.- Custom tooltips keep their arrow. A
tooltip.customfunction replaced the tooltip's inner HTML, which discarded the arrow element. The arrow is now preserved across custom content, for every chart type.
dataLabels.animate and dataLabels.countUp (bar chart race) are typed on ApexDataLabels.
- No breaking API changes, and no renamed or removed options.
- Evenly spaced heatmaps render as before; continuous-x only repositions cells when the x values are irregular or gapped.
- Three heatmap defaults change (tooltip placement, zoom off, y-label thinning), each with a documented opt-out above.
- New regression tests cover the canvas rect batching and cell hit-testing, the above-cell tooltip placement, and the bar chart race label ride and count-up, alongside the existing unit, interaction, and end-to-end suites. Heatmap end-to-end snapshots are expected to update where continuous-x repositions cells and where y-labels are thinned.
v3.0.0-alpha.0
https://github.com/pmndrs/jotai/blob/v3/docs/guides/migrating-to-v3.mdx
- [v3] drop old TS by @dai-shi in https://github.com/pmndrs/jotai/pull/3336
- [v3] drop UMD and SystemJS builds by @dai-shi in https://github.com/pmndrs/jotai/pull/3338
- [v3] drop old node by @dai-shi in https://github.com/pmndrs/jotai/pull/3339
- [v3] module-first package by @dai-shi in https://github.com/pmndrs/jotai/pull/3340
- [v3] drop CJS by @dai-shi in https://github.com/pmndrs/jotai/pull/3341
- [v3] use NODE_ENV directly by @dai-shi in https://github.com/pmndrs/jotai/pull/3342
- [v3] drop rollup by @dai-shi in https://github.com/pmndrs/jotai/pull/3344
- [v3] drop old React by @dai-shi in https://github.com/pmndrs/jotai/pull/3345
- [v3] es2020 target by @dai-shi in https://github.com/pmndrs/jotai/pull/3346
- [v3] drop atomFamily by @dai-shi in https://github.com/pmndrs/jotai/pull/3347
- [v3] drop loadable by @dai-shi in https://github.com/pmndrs/jotai/pull/3348
- [v3] drop jotai/babel by @dai-shi in https://github.com/pmndrs/jotai/pull/3349
- [v3] drop setSelf by @dai-shi in https://github.com/pmndrs/jotai/pull/3350
- [v3] useAtomValueRaw & useAtomValueRawSync by @dai-shi in https://github.com/pmndrs/jotai/pull/3351
- [v3] redesign buildingBlocks by @dai-shi in https://github.com/pmndrs/jotai/pull/3358
- [v3] migration guide by @dai-shi in https://github.com/pmndrs/jotai/pull/3359
Full Changelog: https://github.com/pmndrs/jotai/compare/v2.20.2...v3.0.0-alpha.0
Release 2026-07-20 12:05
Release 2026-07-20 12:05
- special case arrays in partialMatchKey (#11084) (7e3c822a1) by @43081j
- @tanstack/angular-query-experimental@5.101.3
- @tanstack/eslint-plugin-query@5.101.3
- @tanstack/lit-query@0.2.10
- @tanstack/preact-query@5.101.3
- @tanstack/preact-query-devtools@5.101.3
- @tanstack/preact-query-persist-client@5.101.3
- @tanstack/query-async-storage-persister@5.101.3
- @tanstack/query-broadcast-client-experimental@5.101.3
- @tanstack/query-core@5.101.3
- @tanstack/query-devtools@5.101.3
- @tanstack/query-persist-client-core@5.101.3
- @tanstack/query-sync-storage-persister@5.101.3
- @tanstack/react-query@5.101.3
- @tanstack/react-query-devtools@5.101.3
- @tanstack/react-query-next-experimental@5.101.3
- @tanstack/react-query-persist-client@5.101.3
- @tanstack/solid-query@5.101.3
- @tanstack/solid-query-devtools@5.101.3
- @tanstack/solid-query-persist-client@5.101.3
- @tanstack/svelte-query@6.1.37
- @tanstack/svelte-query-devtools@6.1.37
- @tanstack/svelte-query-persist-client@6.1.37
- @tanstack/vue-query@5.101.3
- @tanstack/vue-query-devtools@6.1.37
Release 2026-07-20 12:05
Release 2026-07-20 12:05
- special case arrays in partialMatchKey (#11084) (7e3c822a1) by @43081j
- @tanstack/angular-query-experimental@5.101.3
- @tanstack/eslint-plugin-query@5.101.3
- @tanstack/lit-query@0.2.10
- @tanstack/preact-query@5.101.3
- @tanstack/preact-query-devtools@5.101.3
- @tanstack/preact-query-persist-client@5.101.3
- @tanstack/query-async-storage-persister@5.101.3
- @tanstack/query-broadcast-client-experimental@5.101.3
- @tanstack/query-core@5.101.3
- @tanstack/query-devtools@5.101.3
- @tanstack/query-persist-client-core@5.101.3
- @tanstack/query-sync-storage-persister@5.101.3
- @tanstack/react-query@5.101.3
- @tanstack/react-query-devtools@5.101.3
- @tanstack/react-query-next-experimental@5.101.3
- @tanstack/react-query-persist-client@5.101.3
- @tanstack/solid-query@5.101.3
- @tanstack/solid-query-devtools@5.101.3
- @tanstack/solid-query-persist-client@5.101.3
- @tanstack/svelte-query@6.1.37
- @tanstack/svelte-query-devtools@6.1.37
- @tanstack/svelte-query-persist-client@6.1.37
- @tanstack/vue-query@5.101.3
- @tanstack/vue-query-devtools@6.1.37
@tanstack/vue-query@5.101.3
- Updated dependencies [
7e3c822]:- @tanstack/query-core@5.101.3