Version 3.0.0
SkiaSharp v3 preview series · NuGet (prerelease)
Superseded by 3.116.0 · Never released as stable — these changes rolled up into 3.116.0.
API changes · SkiaSharp API diff · HarfBuzzSharp API diff
Highlights
SkiaSharp 3.0.0 is the first v3 preview, removing all v2 obsoletes and modernizing the cross-platform foundation. The entire v2 deprecated API surface has been removed. This series adds WinUI, WPF GL, and Blazor DPI support; introduces LibraryImport/function pointers for faster P/Invoke; brings SKBlender, Skottie animation builder, and new picture APIs; and updates to .NET 8 with broad MAUI and Uno improvements.
Breaking Changes
- All v2 obsolete API members removed — Every member marked [Obsolete] in SkiaSharp 2.x has been removed. Migrate to the v3 replacements before upgrading — the compilation errors will guide you to the new APIs. (#2539)
Engine
- Skia updated to m116 — The bundled Skia engine advances to milestone m116, bringing upstream rendering improvements and bug fixes. — ❤️ @Redth (#2829, #2885, #3026)
API Surface
- SKBlender and custom blend modes exposed — SKBlender is now part of the public API, allowing custom blending with SkSL shaders and enabling advanced compositing effects. (#2830)
- Skottie animation builder bound — The Skottie animation builder API is now available, enabling Lottie-format animation loading and playback via Skia's Skottie library. (#2630)
- New SKPicture, SKImage, and color filter APIs — SKPicture gains additional recording and playback APIs; SKImage.ToRawShader is added; and spans are added to color filter factory methods. (#2883, #2748, #2879)
- SKColorFilter compatibility overloads for SKFilterQuality — Compatibility overloads for SKFilterQuality are added so existing code compiles cleanly during migration. — ❤️ @Youssef1313 (#2963)
- Span and ReadOnlySpan overloads added — SetRectRadii gains Span overloads for working with rounded-rect radii without allocations. — ❤️ @Youssef1313 (#2949)
- SKTextBlobBuilder and SKRunBuffer APIs cleaned up — SKTextBlobBuilder and SKRunBuffer have been modernized, removing legacy text-based blob APIs where only glyph-ID paths remain. (#2775, #2545)
- GetPixelSpan() overloads with offsets added — SKBitmap.GetPixelSpan gains offset parameters for accessing pixel data at a specific location. (#2609)
- SKRectI floor-outwards conversion corrected — Converting a floating-point rect to integer now floors outwards in all four directions as expected. (#2568)
Bug Fixes
- AccessViolationException when disposing cloned SKPaint fixed — Disposing a cloned SKPaint was causing an access violation; the native ownership tracking is now correct. — ❤️ @jeremy-visionaid (#2904)
- Memory leaks in MAUI views fixed — Several native handle leaks in the MAUI SKCanvasView and SKGLView have been resolved. (#2955)
- Metal Snapshot returning magenta on Apple platforms fixed — SKSurface.Snapshot was returning a magenta image when the Metal backend was in use; the colour space handling is now correct. — ❤️ @taublast (#2804)
- GetKerningPairAdjustments API fixed — SKTypeface.GetKerningPairAdjustments was returning incorrect values due to a wrong native call signature; this is now corrected. — ❤️ @pdjonov (#2858)
- Uno and WASM canvas rendering fixes — The Uno Skia canvas now ensures its GL context is active when rendering, the WASM canvas handles missing elements gracefully, and XamlCanvas on Uno uses the correct Bgra8888 format. — ❤️ @jeromelaban, @Youssef1313 (#2559, #2563, #2918)
- SKXamlCanvas XamlRoot null reference fixed — SKXamlCanvas no longer throws a NullReferenceException when XamlRoot is null during unload. — ❤️ @jeromelaban (#2854)
- SKBitmap.Encode with SKPngEncoderOptions reverted to 2.88.8 behaviour — A behaviour change introduced in early v3 previews for SKBitmap.Encode with SKPngEncoderOptions has been reverted to match the 2.88.x behaviour. — ❤️ @sungaila (#3014)
Lifecycle & Internals
- LibraryImport and function pointers for faster P/Invoke — The native interop layer switches to LibraryImport source generators and function pointers, reducing managed-to-native call overhead and improving AoT compatibility. — ❤️ @maxkatz6 (#2917)
- IBufferByteAccess updated for AoT — The IBufferByteAccess COM interface implementation is updated to work correctly under Native AoT compilation. (#2920)
Platform
- WinUI accelerated views added — Hardware-accelerated SKCanvasView and SKGLView are now available for WinUI 3 (Windows App SDK) applications. (#2733)
- WPF GPU-accelerated view added — SKGLElement provides an OpenGL-accelerated canvas for WPF applications. — ❤️ @gmurray81 (#2317)
- Blazor DPI support added — Blazor canvas components now expose the device pixel ratio, enabling correct high-DPI rendering in browser applications. — ❤️ @beto-rodriguez (#1832)
- Metal backend used on Mac Catalyst — Mac Catalyst applications now use the Metal rendering backend by default for better performance and compatibility. (#2747)
- ANGLE support for Windows — ANGLE (Almost Native Graphics Layer Engine) is now available in NuGet packages for Windows platforms. (#2970)
- PlatformConfiguration properties made trimmable — Platform configuration APIs are now compatible with .NET trimming, reducing app size for published applications. — ❤️ @maxkatz6 (#2717)
- async void avoided in SKXamlCanvas — SKXamlCanvas no longer uses async void for event handlers, preventing unobserved exception swallowing. — ❤️ @lindexi (#2720)
- WinForms updated to new GLControl packages — SkiaSharp.Views.WindowsForms is updated to use the current OpenTK GLControl NuGet packages. (#2989)
- nosimd WASM builds restored — Non-SIMD WebAssembly builds are restored for environments requiring edge-enhanced security or Safari compatibility. — ❤️ @jeromelaban (#2612)
Security
- Native dependencies updated — HarfBuzz updated to 8.3.0 (from 7.3.0), WebP to 1.3.2, libjpeg-turbo to 3.0.0 (later rolled back to 2.1.5.1), and .NET updated to 8.0. (#2624, #2622, #2583, #2927)
HarfBuzzSharp 8.3.0
Ships HarfBuzzSharp 8.3.0 with the v3 foundation updates including LibraryImport P/Invoke, .NET 8 upgrade, and the new platform support from this series.
Community Contributors ❤️
Thank you to everyone who contributed to this release!
| Contributor | Contributions |
|---|---|
| @jeromelaban | Uno platform rendering fixes including canvas context activation, XamlRoot null handling, and WASM canvas stability (#2559, #2563, #2612, #2854, #3010) |
| @maxkatz6 | PlatformConfiguration trimming support, async void removal from SKXamlCanvas, and HarfBuzz function-pointer P/Invoke (#2717, #2788, #2917) |
| @Youssef1313 | SKFilterQuality compatibility overloads, Span overloads for SetRectRadii, and Bgra8888 fix for Uno Skia (#2918, #2949, #2963) |
| @beto-rodriguez | Blazor DPI support for canvas components (#1832) |
| @Fxplorer | Enabled MSVC build configuration (#2839) |
| @gmurray81 | Added SKGLElement for WPF (#2317) |
| @jeremy-visionaid | Fixed the AccessViolationException when disposing a cloned SKPaint (#2904) |
| @lindexi | Avoided async void in SKXamlCanvas event handlers (#2720) |
| @pdjonov | Fixed the GetKerningPairAdjustments API (#2858) |
| @Redth | Skia m116 milestone update (#3026) |
| @sungaila | Reverted SKBitmap.Encode with SKPngEncoderOptions to 2.88.8 behaviour (#3014) |
| @taublast | Fixed SKXamlCanvas when XamlRoot is null during unload (#2804) |
Preview 5 (October 24, 2024)
Preview 5 stabilized the release with SKBitmap.Encode revert, LibraryImport/function pointers, SKFilterQuality compat overloads, .NET 8 update, ANGLE support, and Span overloads.
Preview 4 (July 18, 2024)
Preview 4 fixed the SKPaint dispose AVE, MAUI memory leaks, Uno/WASM canvas bugs, XamlRoot null reference, and added SKBlender and expanded SKPicture APIs.
Preview 3 (April 9, 2024)
Preview 3 added Metal Mac Catalyst backend, WPF SKGLElement, and Metal Snapshot colour correction.
Preview 2 (February 20, 2024)
Preview 2 introduced the Skottie animation builder, Metal on Mac Catalyst, SKImage.ToRawShader, and MSVC build support.
Preview 1 (February 6, 2024)
Preview 1 established the v3 foundation: WinUI and WPF views, SKGLView, Blazor DPI, LibraryImport groundwork, HarfBuzz 8.3.0, WebP 1.3.2, and removal of all v2 obsoletes.