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
SKCanvasViewandSKGLViewfor .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, andnet6.0-tvostargets 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)
IsAntialiasnow controls Edging — SettingIsAntialiascorrectly updates the font edging mode. (#1802)- Fix
IgnorePixelScalingbehavior — Corrected how theIgnorePixelScalingproperty 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
lockwith 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 |
Links
Preview 256 (May 11, 2022)
Building with .NET MAUI RC 2.
Preview 254 (May 11, 2022)
Updated to .NET MAUI RC 1 and macOS 11 build environment.
Preview 232 (May 11, 2022)
SBOM generation, MAUI Preview 14, and CI pipeline improvements.
Preview 209 (May 11, 2022)
CI improvements and Mac Catalyst workaround removals.
Preview 187 (May 11, 2022)
Android packaging fix and MAUI Preview 12 update.
Preview 179 (January 18, 2022)
Uno Platform 4.0 support.
Preview 178 (January 18, 2022)
HandleDictionary critical section, Blazor infinite loop fix, and native statics disposal fix.
Preview 155 (January 18, 2022)
Dependency updates across the board.
Preview 152 (October 22, 2021)
New Skia APIs exposed to C#.
Preview 150 (October 11, 2021)
ASP.NET Blazor WebAssembly support added.
Preview 145 (September 28, 2021)
Windows native symbols and HarfBuzzSharp native asset packages.
Preview 140 (September 28, 2021)
ANGLE zlib1.dll output fix for Windows GPU rendering.
Preview 139 (September 13, 2021)
WindowsAppSDK migration, IsAntialias/IgnorePixelScaling fixes, and graceful surface allocation failure.
Preview 127 (September 13, 2021)
HarfBuzz 2.8.2 update, Xamarin.Forms netcoreapp3.1 support, and PDB files in packages.
Preview 120 (August 10, 2021)
Mac Catalyst support, split native asset packages, and Emscripten 2.0.23.
Preview 61 (July 12, 2021)
Initial .NET 6 TFMs and .NET MAUI views with compatibility and handler support.