{"id":4455,"date":"2026-06-29T21:04:42","date_gmt":"2026-06-29T21:04:42","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/06\/29\/skiasharp-4-0-is-here-announcing-the-first-stable-release\/"},"modified":"2026-06-29T21:04:42","modified_gmt":"2026-06-29T21:04:42","slug":"skiasharp-4-0-is-here-announcing-the-first-stable-release","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/06\/29\/skiasharp-4-0-is-here-announcing-the-first-stable-release\/","title":{"rendered":"SkiaSharp 4.0 is here: announcing the first stable release"},"content":{"rendered":"<p>SkiaSharp has been the backbone of cross-platform 2D graphics in .NET for over a decade. It powers pixel-perfect text,<br \/>\ngeometry, and image rendering across mobile, desktop, web, and server using the<br \/>\n<a href=\"https:\/\/github.com\/google\/skia\">open-source Skia engine<\/a>, and it sits under .NET MAUI, WebAssembly, WinUI 3, and<br \/>\nframeworks like <a href=\"https:\/\/platform.uno\/\">Uno Platform<\/a>. A few months ago we shipped SkiaSharp 4.0 Preview 1. Today we are<br \/>\ntaking the next big step.<\/p>\n<p><strong>SkiaSharp 4.148.0 is now available. This is the first stable release of SkiaSharp v4.<\/strong><\/p>\n<p><a href=\"https:\/\/www.nuget.org\/packages\/SkiaSharp\/4.148.0\">Get SkiaSharp 4.148.0 on NuGet<\/a><\/p>\n<p>Read the full <a href=\"https:\/\/mono.github.io\/SkiaSharp\/docs\/releases\/4.148.0.html\">SkiaSharp 4.148.0 release notes<\/a> for every<br \/>\ndetail, and explore the new <a href=\"https:\/\/mono.github.io\/SkiaSharp\/\">SkiaSharp website and interactive gallery<\/a>.<\/p>\n<p>It rolls up all of the v4 preview work into one stable package you can ship with confidence. If you have been waiting<br \/>\nfor v4 to settle before upgrading, this is the release to move to. And to celebrate, the .NET Foundation and Uno<br \/>\nPlatform are hosting a half-day SkiaSharp event focused on what is new, what is improved, and how to get the most out of<br \/>\nv4.<\/p>\n<h2>What is in it<\/h2>\n<p><strong>A better engine, for free.<\/strong> The native Skia engine is current through milestone m148: years of upstream rendering,<br \/>\ncodec, performance, and security work that benefits every app automatically, with no code changes. Sharper downscaled<br \/>\nimages, automatic photo orientation, more accurate colors, and broad performance gains all come along for the ride.<\/p>\n<p><strong>New capabilities.<\/strong> Full OpenType variable font axis control across SkiaSharp and HarfBuzzSharp, color font palettes<br \/>\nfor emoji and icon fonts, and animated WebP encoding with <code>SKWebpEncoder<\/code>.<\/p>\n<p><strong>A cleaner, more correct API.<\/strong> v4 completes a long migration: legacy APIs are retired and the surface is clean.<br \/>\nUnderneath, the object lifecycle was reworked so native singletons are properly reference counted, quietly fixing a<br \/>\nwhole class of use-after-free crashes that could occur when the garbage collector finalized managed wrappers during<br \/>\nin-flight native calls. The kind of fix you never see, which is the point.<\/p>\n<p><strong>Modernized underneath.<\/strong> The test suite moved to xUnit v3, builds run on reproducible Docker images, device and<br \/>\nWebAssembly testing runs through DeviceRunners, and every bundled native dependency was updated with the latest security<br \/>\nfixes.<\/p>\n<p><img data-opt-id=548785575  fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/06\/skiasharp-variable.webp\" alt=\"The word SkiaSharp rendered in the Inter variable font, its weight axis morphing from thin to bold and back\" \/><\/p>\n<p><img data-opt-id=664633612  fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/06\/skiasharp-color.webp\" alt=\"The text v4 rendered in the Nabla COLR\/CPAL color font, cycling through seven color palettes\" \/><\/p>\n<p><em>Both animations were drawn and encoded with SkiaSharp 4.148.0 itself: variable-font axes and color-font palettes<br \/>\nrendered to frames, then written as animated WebP.<br \/>\n<a href=\"https:\/\/gist.github.com\/mattleibow\/931bea02db94ec769f884513a881cab8\">See the source<\/a>.<\/em><\/p>\n<h2>Faster where it counts<\/h2>\n<p>A newer engine should not just do more, it should do it faster. In our initial testing on the hardware-accelerated GPU<br \/>\nbackend, the work that dominates modern app UIs (elevated cards, drop shadows, and layered surfaces) renders up to <strong>24%<br \/>\nfaster<\/strong> on v4 than on the previous stable release, with no regressions anywhere else.<\/p>\n<p>Comparing the last stable release (3.119) against v4 over OpenGL, a busy dashboard of shadowed cards rose from 65 to 80<br \/>\nFPS, and a scrolling activity feed from 47 to 58 FPS, both about 24% faster in our initial testing. Scenes that do not<br \/>\nlean on shadows, like charts, text, and vector maps, were already efficient and carry over unchanged, so you get the<br \/>\nupside with no downside. As a bonus, procedural Perlin-noise shaders run about 6 times faster on the CPU, a nice win for<br \/>\ngenerative textures and effects.<\/p>\n<p><em>Initial testing on Windows 11 and .NET 10 over OpenGL. Absolute frame rates vary by GPU and driver.<\/em><\/p>\n<h2>Built a little differently<\/h2>\n<p>SkiaSharp wraps an enormous Google C++ codebase, and a lot of the work that used to be manual toil is now driven by<br \/>\nagentic workflows: syncing upstream Skia milestones, auditing for upstream CVEs, generating release notes and API diffs,<br \/>\nand keeping the docs current. The point is not the automation for its own sake. It is that the human time now goes to<br \/>\nAPI design and correctness, which is exactly where it should be, and it is a big part of how the project keeps pace with<br \/>\nChrome\u2019s release train.<\/p>\n<h2>Keeping pace with Skia, together<\/h2>\n<p>Going forward, SkiaSharp has a stronger commitment to staying in lock step with upstream Skia milestones. This has been<br \/>\none of the most consistent pieces of feedback from the community and from Microsoft internal teams: developers need a<br \/>\nmore predictable way to understand which SkiaSharp versions are current, how they map to Skia, and how fixes reach them.<\/p>\n<p>Thanks to the co-maintenance partnership between the .NET team and Uno Platform, SkiaSharp now ships on a regular<br \/>\ncadence in two channels that follow upstream Skia milestones. The Stable channel corresponds to the Skia milestones in<br \/>\nChrome\u2019s Stable and Extended Stable channels, while the Preview channel corresponds to the milestone in Chrome\u2019s Beta<br \/>\nchannel. If you build on SkiaSharp, you can plan around it with more confidence.<\/p>\n<p>The next preview is already here.<br \/>\n<a href=\"https:\/\/www.nuget.org\/packages\/SkiaSharp\/4.150.0-preview.2.1\">SkiaSharp 4.150.0 Preview 2<\/a> is on NuGet now. Its<br \/>\nheadline is Graphite, the next-generation Skia GPU backend contributed by Uno Platform, alongside new image and color<br \/>\nfilter APIs, SkSL image filters, and more.<\/p>\n<h2>Thank you, Uno Platform<\/h2>\n<p>SkiaSharp 4 is the result of the .NET team and <a href=\"https:\/\/platform.uno\/\">Uno Platform<\/a> building it together. Uno builds<br \/>\ntheir rendering pipeline on SkiaSharp, which makes them one of the most active and invested contributors to the project,<br \/>\nand it shows. Working alongside the .NET team, their engineers contributed major pieces of this release and the next:<br \/>\nengine upgrades, the full variable font implementation, object-lifecycle and crash fixes, cross-platform binding<br \/>\ngenerator tooling that lowered the barrier for other contributors, the interactive WebAssembly gallery, and the upcoming<br \/>\nGraphite backend.<\/p>\n<p>A faster-moving SkiaSharp makes Uno apps better, and a strong Uno community makes SkiaSharp better. Thank you to Ramez<br \/>\nGerges, Eric Bariche, Sa\u0161a Krsmanovi\u0107, and everyone at Uno. We are excited to keep building together. You can read more<br \/>\nabout <a href=\"https:\/\/platform.uno\/blog\/skiasharp4\/\">how Uno Platform contributed to SkiaSharp 4<\/a> on their blog.<\/p>\n<p>Explore what is possible in the interactive <a href=\"https:\/\/mono.github.io\/SkiaSharp\/\">SkiaSharp gallery<\/a>, or try your own code<br \/>\nlive in <a href=\"https:\/\/mono.github.io\/SkiaSharp\/fiddle\">SkiaFiddle, powered by Uno Platform<\/a>.<\/p>\n<h2>Tune in: the SkiaSharp live event<\/h2>\n<p>To celebrate the release, the .NET Foundation and Uno Platform are hosting a live event dedicated entirely to SkiaSharp,<br \/>\nwith members of the .NET team. We will walk through everything in this release, show it off live, and talk about what is<br \/>\nahead, including the co-maintenance model and the road to Graphite.<\/p>\n<p>If you want the full story behind 4.0, this is where to get it.<\/p>\n<p><strong><img data-opt-id=1909021845  data-opt-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f4c5.png\"  decoding=\"async\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\ud83d\udcc5\" class=\"wp-smiley\" \/> Date:<\/strong> June 30, 11am to 3pm ET<\/p>\n<p><strong><img data-opt-id=1399897509  data-opt-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f4fa.png\"  decoding=\"async\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\ud83d\udcfa\" class=\"wp-smiley\" \/> Where to watch:<\/strong> Uno Platform on YouTube, X, and LinkedIn, and the .NET Foundation YouTube channel<\/p>\n<p><strong><img data-opt-id=870356230  data-opt-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/1f517.png\"  decoding=\"async\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\ud83d\udd17\" class=\"wp-smiley\" \/> Event details:<\/strong> <a href=\"https:\/\/platform.uno\/skiasharp\">platform.uno\/skiasharp<\/a><\/p>\n<p>Come for the demos, stay for the deep dives. We will see you there.<\/p>\n<h2>Summary<\/h2>\n<p>SkiaSharp 4.148.0 is the first stable release of SkiaSharp v4: a current Skia engine, variable fonts, color palettes,<br \/>\nanimated WebP, a cleaner and more correct API, and a predictable release cadence.<br \/>\n<a href=\"https:\/\/www.nuget.org\/packages\/SkiaSharp\/4.148.0\">Try it on NuGet<\/a>, read the<br \/>\n<a href=\"https:\/\/mono.github.io\/SkiaSharp\/docs\/releases\/4.148.0.html\">release notes<\/a>, give us feedback at<br \/>\n<a href=\"https:\/\/github.com\/mono\/SkiaSharp\">github.com\/mono\/SkiaSharp<\/a>, and join us at the<br \/>\n<a href=\"https:\/\/platform.uno\/skiasharp\">SkiaSharp live event on June 30<\/a>. Happy SkiaSharp-ing.<\/p>\n<p>The post <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/skiasharp-4-0-stable\/\">SkiaSharp 4.0 is here: announcing the first stable release<\/a> appeared first on <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\">.NET Blog<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>SkiaSharp has been the backbone of cross-platform 2D graphics in .NET for over a decade. It powers pixel-perfect text, geometry, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4456,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7],"tags":[],"class_list":["post-4455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=4455"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4455\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/4456"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=4455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=4455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=4455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}