Table of Contents

Version 2.88.0

.NET 6, MAUI, and Mac Catalyst debut · Released May 22, 2022 · NuGet · GitHub Release

Highlights

A landmark release bringing SkiaSharp into the .NET 6 era. This version introduces first-class .NET MAUI views (both compatibility shims and native handlers), adds Mac Catalyst support, enables ASP.NET Blazor WebAssembly rendering, and splits the monolithic NuGet package into smaller per-platform native asset packages for faster restores and smaller deployments. Six community contributors helped shape the release.

Breaking Changes

None in this release.

New Features

Platform

  • Mac Catalyst support — Full support for Mac Catalyst, including framework-based native packaging and build task integration. (#1681, #1760)
  • .NET MAUI views — New SKCanvasView and SKGLView for .NET MAUI with both compatibility and handler-based implementations. (#1678)
  • .NET 6 TFMs — Added net6.0-ios, net6.0-android, net6.0-macos, net6.0-maccatalyst, and net6.0-tvos targets for the binding projects. (#1707)
  • ASP.NET Blazor WebAssembly — Render SkiaSharp content in Blazor WASM applications. (#1811)
  • Xamarin.Forms on netcoreapp3.1 — Extended Xamarin.Forms support to .NET Core 3.1 desktop scenarios. (#1774)
  • Emscripten 2.0.23 support — Updated WASM builds for newer Emscripten toolchain. ❤️ @jeromelaban (#1746)
  • Uno Platform 4.0 — Bumped Uno Platform support to version 4.0. ❤️ @jeromelaban (#1873)

Packaging

  • Split native asset packages — The SkiaSharp NuGet is now split into smaller per-platform SkiaSharp.NativeAssets.* packages for faster restore and reduced download size. (#1758)
  • HarfBuzzSharp.NativeAssets packages — HarfBuzz native assets also split into per-platform packages with Windows symbols included. (#1797)
  • PDB files in packages — Debug symbols now ship inside the NuGet packages for better debugging. (#1781)
  • Software Bill of Materials (SBOM) — SBOM manifest generation added to the build. ❤️ @mjbond-msft (#1954)

Engine

  • WindowsAppSDK support — Migrated Windows views to the Windows App SDK. (#1800)
  • HarfBuzz updated to 2.8.2 — Brings the latest text shaping improvements. (#1766)
  • New APIs — Additional Skia APIs exposed to C#. (#1828)

Bug Fixes

  • Fix NRE in .NET MAUI SKCanvasView — Resolved a null reference when using the canvas view in MAUI. ❤️ @jsuarezruiz (#1734)
  • Return empty surface on allocation failure — Gracefully handle failed surface allocations instead of crashing. ❤️ @richirisu (#1784)
  • IsAntialias now controls Edging — Setting IsAntialias correctly updates the font edging mode. (#1802)
  • Fix IgnorePixelScaling behavior — Corrected how the IgnorePixelScaling property works on views. (#1804)
  • Prevent infinite loop in Blazor SKCanvasView — Fixed a rendering loop that could freeze Blazor apps. ❤️ @JensKrumsieck (#1889)
  • HandleDictionary lock replaced with critical section — Improved thread-safety on Windows by replacing lock with a lightweight critical section. ❤️ @toptensoftware (#1817)
  • Never dispose native statics — Prevents crashes from premature disposal of shared native objects. (#1863)
  • Work around enums not being blittable — Fixed interop issues with enum types in certain .NET runtimes. (#1857)
  • LibraryLoader: Try libdl.so.2 before libdl.so on Linux — Fixes library loading on newer Linux distributions. ❤️ @akoeplinger (#2010)
  • Android: Don't include .so files in class libraries — Corrected native library packaging for Android. ❤️ @jonathanpeppers (#1895)
  • Android: Eliminate unnecessary Resource.designer.cs fields — Reduced generated code size. ❤️ @jonathanpeppers (#1812)

Platform Support

Platform What's New
🍎 Apple Mac Catalyst support, iOS view background fix, macOS Monterey CI
🪟 Windows WindowsAppSDK migration, native symbols in packages
🐧 Linux libdl.so.2 fallback for newer distros
🤖 Android Leaner .so packaging, reduced Resource.designer.cs
🌐 WebAssembly Blazor WASM support, Emscripten 2.0.23

Community Contributors ❤️

Contributor What They Did
@jsuarezruiz Fixed NRE in MAUI SKCanvasView
@richirisu Graceful surface allocation failure handling
@jonathanpeppers Android packaging improvements
@toptensoftware HandleDictionary critical section optimization
@JensKrumsieck Fixed Blazor infinite loop
@mjbond-msft SBOM manifest generation
@jeromelaban Emscripten 2.0.23, Uno 4.0
@akoeplinger Linux libdl.so.2 fallback

Preview 256 (May 11, 2022)

Building with .NET MAUI RC 2.

Full Changelog


Preview 254 (May 11, 2022)

Updated to .NET MAUI RC 1 and macOS 11 build environment.

Full Changelog


Preview 232 (May 11, 2022)

SBOM generation, MAUI Preview 14, and CI pipeline improvements.

Full Changelog


Preview 209 (May 11, 2022)

CI improvements and Mac Catalyst workaround removals.

Full Changelog


Preview 187 (May 11, 2022)

Android packaging fix and MAUI Preview 12 update.

Full Changelog


Preview 179 (January 18, 2022)

Uno Platform 4.0 support.

Full Changelog


Preview 178 (January 18, 2022)

HandleDictionary critical section, Blazor infinite loop fix, and native statics disposal fix.

Full Changelog


Preview 155 (January 18, 2022)

Dependency updates across the board.

Full Changelog


Preview 152 (October 22, 2021)

New Skia APIs exposed to C#.

Full Changelog


Preview 150 (October 11, 2021)

ASP.NET Blazor WebAssembly support added.

Full Changelog


Preview 145 (September 28, 2021)

Windows native symbols and HarfBuzzSharp native asset packages.

Full Changelog


Preview 140 (September 28, 2021)

ANGLE zlib1.dll output fix for Windows GPU rendering.

Full Changelog


Preview 139 (September 13, 2021)

WindowsAppSDK migration, IsAntialias/IgnorePixelScaling fixes, and graceful surface allocation failure.

Full Changelog


Preview 127 (September 13, 2021)

HarfBuzz 2.8.2 update, Xamarin.Forms netcoreapp3.1 support, and PDB files in packages.

Full Changelog


Preview 120 (August 10, 2021)

Mac Catalyst support, split native asset packages, and Emscripten 2.0.23.

Full Changelog


Preview 61 (July 12, 2021)

Initial .NET 6 TFMs and .NET MAUI views with compatibility and handler support.

Full Changelog