Table of Contents

Version 3.0.0

First stable v3 release · 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 stable v3, built on Skia m116 with .NET 8 support and obsolete APIs removed. The line modernises the whole stack: LibraryImport-based P/Invokes, refreshed native dependencies (HarfBuzz, libjpeg-turbo, libwebp), new accelerated views on WinUI and WPF, Metal on Mac Catalyst, and dozens of MAUI/Uno/Blazor fixes.

Breaking Changes

  • All v2 [Obsolete] members removed — Everything marked [Obsolete] during the v2 line — including the legacy SKPaint text/font members — is gone. Move text to SKFont, use the modern sampling and encoder overloads, and re-generate against the 3.0 APIs. (#2539, #2789, #2775)
  • .NET Framework and workload targets modernised — The libraries now target .NET 8 and its MAUI/Uno/WinUI workloads. Projects still on older TFMs may need to update SDKs, workloads or PackageReferences to consume the new packages. (#2927, #2971, #2788, #2917)
  • Metal is the default backend on Mac Catalyst — SkiaSharp.Views on Mac Catalyst now renders through Metal instead of the deprecated GL path. Custom hosts that assumed GL should switch to the Metal APIs or the shared SKCanvasView. (#2747, #3070)

Engine

  • Skia rebased on milestone 116 — The bundled engine is Chrome/Skia m116, bringing years of upstream rendering, text and codec fixes into a stable release. — ❤️ @Redth (#2829, #2885, #3026)
  • Native dependencies refreshed — HarfBuzz moved to 8.3.0, libjpeg-turbo to 3.0.0 (then rolled to 2.1.5.1 for stability), libwebp to 1.3.2, plus the usual codec and font engine bumps. (#2624, #2582, #2583, #2699, #2622)

API Surface

  • SKBlender, extended color filters and picture APIs — Exposes SKBlender, adds the missing color-filter constructors, more SKPicture entry points and an R-Tree overload of BeginRecording for faster hit-testing. (#2830, #2879, #2883, #2889)
  • Span overloads for hot paths — SetRectRadii, color filters and GetPixelSpan with offsets now accept Span, so callers can avoid array allocations in tight rendering loops. — ❤️ @Youssef1313 (#2949, #2879, #2609)
  • Skottie animation builder and raw shaders — Binds Skottie's Animation Builder and adds SKImage.ToRawShader for advanced compositing scenarios. (#2630, #2748)
  • Metal backend surfaced cross-platform — Adds the Metal GRBackendRenderTarget APIs on every Apple platform and unifies GRMtlTextureInfo with readonly getters. — ❤️ @maxkatz6 (#3070, #2833, #2788)

Bug Fixes

  • Cloned SKPaint no longer crashes on dispose — Fixes an AccessViolationException when disposing a paint cloned from another paint. — ❤️ @jeremy-visionaid (#2904)
  • Metal snapshot returns real pixels — Snapshot on the Metal backend no longer returns a magenta image on Apple platforms. — ❤️ @taublast (#2804)
  • PNG encoder options behaviour restored — SKBitmap.Encode with SKPngEncoderOptions now matches the 2.88.8 behaviour that had regressed during the m11x work. — ❤️ @sungaila (#3014)
  • MAUI, WinUI and Uno view fixes — Fixes memory leaks in MAUI views, WinUI XamlRoot handling, Uno canvas context activation, and background stretching in SKXamlCanvas. — ❤️ @jeromelaban, @Youssef1313 (#2955, #2854, #2559, #2922, #2918)

Platform

  • New accelerated views for WinUI and WPF — Adds SKSwapChainPanel-backed WinUI views and a real SKGLElement for WPF, plus the SKGLView for MAUI on Windows. — ❤️ @gmurray81 (#2733, #2317, #2598)
  • Metal-first Apple stack — Mac Catalyst renders with Metal by default, and iOS/tvOS/macOS all share the Metal backend APIs. (#2747, #3070)

Lifecycle & Internals

  • LibraryImport-based interop — The P/Invoke layer moves to LibraryImport and function pointers for AOT-friendly, trim-safe interop, and PlatformConfiguration is trimmable. — ❤️ @maxkatz6 (#2917, #2717, #2920)

HarfBuzzSharp 8.3.0

HarfBuzzSharp 8.3.0 lands as part of the stable v3 line, tracking the HarfBuzz 8.3.0 upstream and getting the same LibraryImport/interop modernisation as SkiaSharp.

Community Contributors ❤️

Thank you to everyone who contributed to this release!

Contributor Contributions
@jeromelaban A run of Uno and Blazor fixes — canvas context activation, XamlRoot handling, WASM fallback safety and the nosimd build restoration (#2559, #2563, #2612, #2854, #3010)
@maxkatz6 Modernised the interop layer with function pointers and LibraryImport, unified the Metal TFM and made PlatformConfiguration trimmable (#2717, #2788, #2917)
@Youssef1313 Uno Skia BGRA8888 fix, the SetRectRadii Span overload and the SKFilterQuality compatibility overloads (#2918, #2949, #2963)
@beto-rodriguez Exposed the DPI properties on the Blazor components (#1832)
@Fxplorer README typo fix (#2839)
@gmurray81 Added the SKGLElement control to SkiaSharp.Views.WPF (#2317)
@jeremy-visionaid Fixed the AccessViolationException when disposing a cloned SKPaint (#2904)
@lindexi Removed the async void pattern from SKXamlCanvas (#2720)
@pdjonov Fixed the GetKerningPairAdjustments API (#2858)
@Redth Landed a Skia externals refresh (#3026)
@sungaila Restored SKBitmap.Encode with SKPngEncoderOptions to its 2.88.8 behaviour (#3014)
@taublast Fixed the magenta snapshot on the Apple Metal backend (#2804)

Preview 5 (October 24, 2024)

Preview 5 rebased on Skia m116, cut the remaining v2 shims and moved to LibraryImport.

Full changelog

Preview 4 (July 18, 2024)

Preview 4 landed the accelerated WinUI and WPF views, more Skottie bindings and a raft of MAUI/Uno fixes.

Full changelog

Preview 3 (April 9, 2024)

Preview 3 focused on APIs — SKBlender, more SKPicture entry points and the R-Tree overload.

Full changelog

Preview 2 (February 20, 2024)

Preview 2 landed the codec dependency refresh (libjpeg-turbo, libwebp, HarfBuzz).

Full changelog

Preview 1 (February 6, 2024)

Preview 1 modernised the repository, brought the .NET 8 target family online and started deleting the v2 [Obsolete] surface.

Full changelog