{"id":26847,"date":"2025-08-20T20:30:04","date_gmt":"2025-08-20T20:30:04","guid":{"rendered":"https:\/\/www.highcharts.com\/blog\/?p=26847"},"modified":"2026-01-13T12:04:24","modified_gmt":"2026-01-13T12:04:24","slug":"highcharts-v12-3","status":"publish","type":"post","link":"https:\/\/www.highcharts.com\/blog\/product-updates\/highcharts-v12-3\/","title":{"rendered":"Highcharts v12.3"},"content":{"rendered":"<p>Highcharts 12.3 is here with some practical upgrades that will make life a bit easier for developers.<\/p>\n<p><b>Here\u2019s what\u2019s new:<\/b><\/p>\n<ul style=\"padding-left: 1em;\">\n<li aria-level=\"1\">New zoom support for non-cartesian charts<\/li>\n<li aria-level=\"1\">New adaptive theme with light\/dark mode switching<\/li>\n<li aria-level=\"1\">Local export of PNG, JPEG, SVG\u00a0 now defaults to true<\/li>\n<\/ul>\n<p>Let\u2019s dive into the details.<\/p>\n<h2><b>Zooming Isn\u2019t Just for XY Charts Anymore<\/b><\/h2>\n<p>Zooming is no longer exclusive to cartesian series. With 12.3, you can now zoom into non-cartesian charts like pie, treegraph, sankey, and wordcloud using the new <code>non-cartesian-zoom<\/code> module.<\/p>\n<p>The panning and zooming behavior for non-cartesian series mirrors that of cartesian series, with support for mouse drag, touch gestures, and mouse wheel zooming (when enabled.)<\/p>\n<p>The zoom rectangle in non-cartesian zooming has a fixed aspect ratio that matches the chart&#8217;s width-to-height ratio, as this ensures consistent and meaningful zoom behavior for these types of series.<\/p>\n<p>This feature is useful for any non-cartesian chart with a lot of data points where zooming can make dense visuals easier to explore, especially on smaller screens.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-26851\" style=\"border-radius: 8px; margin: 30px 0;\" src=\"https:\/\/wp-assets.highcharts.com\/www-highcharts-com\/blog\/wp-content\/uploads\/2025\/06\/24202115\/zoom-wordcloud.gif\" alt=\"\" width=\"794\" height=\"402\" \/><\/p>\n<h2><b>A New Adaptive Theme<\/b><\/h2>\n<p>Also included in this release is a new <code>adaptive.js<\/code> theme that automatically adjusts between light and dark mode based on the user\u2019s system settings.<\/p>\n<p>This theme uses the CSS variable support introduced in 12.2 and powers the <a href=\"https:\/\/www.highcharts.com\/demo\" target=\"_blank\" rel=\"noopener\">Highcharts demo gallery<\/a>, so you can see it in action across a range of chart types.<\/p>\n<p>Long term, we\u2019re looking at making this the default Highcharts theme, but we\u2019re still kicking the tires to make sure this approach holds up.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-26852\" style=\"border-radius: 8px; margin: 30px 0; border: 1px solid #ccc;\" src=\"https:\/\/wp-assets.highcharts.com\/www-highcharts-com\/blog\/wp-content\/uploads\/2025\/06\/24202116\/light-dark-mode-2.gif\" alt=\"\" width=\"776\" height=\"602\" \/><\/p>\n<h2><b>Local Exporting by Default<\/b><\/h2>\n<p>Exporting charts as PNG, JPEG, or SVG now defaults to <code>local<\/code>. That means charts are now exported using the browser\u2019s built-in capabilities without requiring access to the Highcharts export server.<\/p>\n<p>Local export is faster and more secure, but you can always revert back to using the Highcharts export server by setting\u00a0 <code>exporting.local<\/code> to <code>false<\/code>.<\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p>Check out the <a href=\"https:\/\/www.highcharts.com\/changelog\/\" target=\"_blank\" rel=\"noopener\">full changelog<\/a> for additional bug fixes. As always, if you run into something odd, or have suggestions for what to improve next, <a href=\"https:\/\/github.com\/highcharts\/highcharts\/issues\" target=\"_blank\" rel=\"noopener\">let us know<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Check out what&#8217;s new in Highcharts v12.3<\/p>\n","protected":false},"author":250,"featured_media":26853,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"meta_title":"","meta_description":"","hc_selected_options":[],"footnotes":""},"categories":[1103],"tags":[1063,1094,1031],"coauthors":[786],"class_list":["post-26847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-updates","tag-data-visualization","tag-highcharts-core","tag-javascript"],"_links":{"self":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/26847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/users\/250"}],"replies":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/comments?post=26847"}],"version-history":[{"count":3,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/26847\/revisions"}],"predecessor-version":[{"id":26874,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/posts\/26847\/revisions\/26874"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/media\/26853"}],"wp:attachment":[{"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/media?parent=26847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/categories?post=26847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/tags?post=26847"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.highcharts.com\/blog\/wp-json\/wp\/v2\/coauthors?post=26847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}