{"id":60339,"date":"2026-06-29T14:00:00","date_gmt":"2026-06-29T21:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=60339"},"modified":"2026-07-07T15:24:00","modified_gmt":"2026-07-07T22:24:00","slug":"skiasharp-4-0-stable","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/skiasharp-4-0-stable\/","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,\ngeometry, and image rendering across mobile, desktop, web, and server using the\n<a href=\"https:\/\/github.com\/google\/skia\">open-source Skia engine<\/a>, is used by .NET MAUI and WinUI 3 development tools, and powers frameworks like <a href=\"https:\/\/platform.uno\">Uno Platform<\/a>. A few months ago we shipped SkiaSharp 4.0 Preview 1.\nToday we are taking 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\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\nfor v4 to settle before upgrading, this is the release to move to. And to celebrate, the .NET Foundation and Uno\nPlatform are hosting a half-day SkiaSharp event focused on what is new, what is improved, and how to get the most out of\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,\ncodec, performance, and security work that benefits every app automatically, with no code changes. Sharper downscaled\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\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.\nUnderneath, the object lifecycle was reworked so native singletons are properly reference counted, quietly fixing a\nwhole class of use-after-free crashes that could occur when the garbage collector finalized managed wrappers during\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\nWebAssembly testing runs through DeviceRunners, and every bundled native dependency was updated with the latest security\nfixes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/07\/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 decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2026\/07\/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\nrendered to frames, then written as animated WebP.\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\nbackend, the work that dominates modern app UIs (elevated cards, drop shadows, and layered surfaces) renders up to <strong>24%\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\nFPS, and a scrolling activity feed from 47 to 58 FPS, both about 24% faster in our initial testing. Scenes that do not\nlean on shadows, like charts, text, and vector maps, were already efficient and carry over unchanged, so you get the\nupside with no downside. As a bonus, procedural Perlin-noise shaders run about 6 times faster on the CPU, a nice win for\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\nagentic workflows: syncing upstream Skia milestones, auditing for upstream CVEs, generating release notes and API diffs,\nand keeping the docs current. The point is not the automation for its own sake. It is that the human time now goes to\nAPI design and correctness, which is exactly where it should be, and it is a big part of how the project keeps pace with\nChrome&#8217;s 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\none of the most consistent pieces of feedback from the community and from Microsoft internal teams: developers need a\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\ncadence in two channels that follow upstream Skia milestones. The Stable channel corresponds to the Skia milestones in\nChrome&#8217;s Stable and Extended Stable channels, while the Preview channel corresponds to the milestone in Chrome&#8217;s Beta\nchannel. If you build on SkiaSharp, you can plan around it with more confidence.<\/p>\n<p>The next preview is already here.\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\nheadline is Graphite, the next-generation Skia GPU backend contributed by Uno Platform, alongside new image and color\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\ntheir rendering pipeline on SkiaSharp, which makes them one of the most active and invested contributors to the project,\nand it shows. Working alongside the .NET team, their engineers contributed major pieces of this release and the next:\nengine upgrades, the full variable font implementation, object-lifecycle and crash fixes, cross-platform binding\ngenerator tooling that lowered the barrier for other contributors, the interactive WebAssembly gallery, and the upcoming\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\nGerges, Elie Bariche, Sasha Krsmanovic, and everyone at Uno. We are excited to keep building together. You can read more\nabout <a href=\"https:\/\/platform.uno\/blog\/announcing-skiasharp-4-0\/\">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\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,\nwith members of the .NET team. We will walk through everything in this release, show it off live, and talk about what is\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>\ud83d\udcc5 Date:<\/strong> June 30, 11am to 3pm ET<\/p>\n<p><strong>\ud83d\udcfa Where to watch:<\/strong> Uno Platform on YouTube, X, and LinkedIn, and the .NET Foundation YouTube channel<\/p>\n<p><strong>\ud83d\udd17 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,\nanimated WebP, a cleaner and more correct API, and a predictable release cadence.\n<a href=\"https:\/\/www.nuget.org\/packages\/SkiaSharp\/4.148.0\">Try it on NuGet<\/a>, read the\n<a href=\"https:\/\/mono.github.io\/SkiaSharp\/docs\/releases\/4.148.0.html\">release notes<\/a>, give us feedback at\n<a href=\"https:\/\/github.com\/mono\/SkiaSharp\">github.com\/mono\/SkiaSharp<\/a>, and join us at the\n<a href=\"https:\/\/platform.uno\/skiasharp\">SkiaSharp live event on June 30<\/a>. Happy SkiaSharp-ing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SkiaSharp 4.148.0 is the first stable release of SkiaSharp v4. Learn what is new, why you should be excited, and join the SkiaSharp live event on June 30.<\/p>\n","protected":false},"author":550,"featured_media":60391,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685,7233],"tags":[4,8190,8189,8153],"class_list":["post-60339","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-maui","tag-net","tag-graphics","tag-skiasharp","tag-uno-platform"],"acf":[],"blog_post_summary":"<p>SkiaSharp 4.148.0 is the first stable release of SkiaSharp v4. Learn what is new, why you should be excited, and join the SkiaSharp live event on June 30.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/60339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/550"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=60339"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/60339\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/60391"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=60339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=60339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=60339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}