Table of Contents

Version 3.0.0

Major version overhaul · Previews released February – October 2024 · NuGet · GitHub Release

Highlights

SkiaSharp 3.0 is a major overhaul of the library, modernizing the interop layer with function pointers and LibraryImport, upgrading the Skia engine to milestone 116, and adding .NET 8 and .NET 9 support. This release removes all previously deprecated APIs and introduces new features including SKBlender, Skottie Animation Builder, Metal on Mac Catalyst, GPU-accelerated views for MAUI, WPF, and WinUI, and Span-based API overloads throughout. Ten community contributors drove significant features and bug fixes across the preview series.

Note

Version 3.0.0 was released only as previews. The first stable release in the 3.x line is 3.116.0, which adopted milestone-based versioning.

Breaking Changes

Removed Deprecated APIs

  • All [Obsolete] members and types removed — Previously deprecated APIs have been removed to clean up the API surface. See the full API diff for details. (#2539)

API Cleanup

  • SKTextBlobBuilder and SKRunBuffer APIs cleaned up — Streamlined text blob builder APIs for consistency. (#2775)
  • Compatibility APIs added and removed — Some APIs were added for backward compatibility while others were removed as part of the 3.0 transition. (#2789)

New Features

Engine

  • Skia updated to milestone 116 — Core graphics engine updated through milestones 115 and 116 for the latest rendering improvements. (#2547, #2829)
  • Function pointers and LibraryImport — Modernized P/Invoke layer using function pointers and LibraryImport for improved performance and AOT compatibility. ❤️ @maxkatz6 (#2917)
  • Performance improvements with Unsafe.As — Internal performance optimizations using Unsafe.As for type conversions. (#2780)

API Surface

  • SKBlender exposed — New SKBlender type for custom blending operations. (#2830)
  • SKImage.ToRawShader — Create shaders from images with raw (non-color-managed) data. (#2748)
  • Skottie Animation Builder — Bound Skottie's Animation Builder for Lottie animation support. (#2630)
  • Additional SKPicture APIs — Extended the SKPicture API surface with new methods. (#2883)
  • R-Tree overload for BeginRecording — Enables spatial indexing for recorded drawing operations. (#2889)
  • GetPixelSpan() with offsets — Access pixel data at specific offsets without copying. (#2609)
  • Span overloads for color filters — Memory-efficient Span-based overloads for color filter APIs. (#2879)
  • Span overload for SetRectRadii — Memory-efficient overload for setting rounded rectangle radii. ❤️ @Youssef1313 (#2949)
  • SKFilterQuality compatibility overloads — Backward-compatible overloads easing migration from the removed filter quality API. ❤️ @Youssef1313 (#2963)
  • Text-based blobs restored — Re-added text-based blob creation APIs that were removed in the initial cleanup. (#2545)

GPU & Rendering

  • Metal backend on Mac Catalyst — Use Metal as the GPU backend on Mac Catalyst for hardware-accelerated rendering. (#2747)
  • Metal APIs on common .NET TFM — Metal GPU APIs are now available on a common target framework, simplifying cross-platform GPU code. ❤️ @maxkatz6 (#2788)
  • ANGLE built separately — ANGLE (OpenGL ES backend for Windows) is now built as a separate component. (#2950)

Platform

  • .NET 8 and .NET 9 support — Updated target frameworks to support .NET 8 and .NET 9. ❤️ @jeromelaban (.NET 9) (#2927, #3010)
  • SKGLView for .NET MAUI — Hardware-accelerated OpenGL view for MAUI applications. (#2598)
  • SKGLElement for WPF — Hardware-accelerated OpenGL element for WPF applications. ❤️ @gmurray81 (#2317)
  • WinUI accelerated views — GPU-accelerated rendering views for WinUI applications. (#2733)
  • Updated GLControl for WinForms — Switched to the new GLControl packages for Windows Forms. (#2989)
  • Blazor DPI exposure — Expose DPI information in Blazor components for high-DPI rendering. ❤️ @beto-rodriguez (#1832)
  • Trimmable PlatformConfiguration (tvOS fix) — Made platform configuration properties trimmable, fixing tvOS compilation. ❤️ @maxkatz6 (#2717)
  • AOT-compatible IBufferByteAccess — Updated IBufferByteAccess for ahead-of-time compilation compatibility. (#2920)
  • WASM no-SIMD builds — Restored no-SIMD builds for Edge enhanced security mode and Safari compatibility. ❤️ @jeromelaban (#2612)

Dependencies

  • HarfBuzz updated to 8.3.0 — Text shaping engine updated from 7.3.0 through to 8.3.0. (#2582, #2624)
  • libwebp updated to 1.3.2 — WebP codec updated for bug fixes and improvements. (#2622)

Bug Fixes

  • MAUI view memory leaks fixed — Resolved memory leaks in MAUI views. (#2955)
  • SKPaint.Clone fixed — Corrected the clone behavior for paint objects. ❤️ @jeremy-visionaid (#2904)
  • GetKerningPairAdjustments API fixed — Corrected the kerning pair adjustments API. ❤️ @pdjonov (#2858)
  • SKXamlCanvas Bgra8888 on Uno Skia — Fixed color format for SKXamlCanvas on Uno Skia platform. ❤️ @Youssef1313 (#2918)
  • Apple Metal snapshot magenta fix — Fixed snapshot returning magenta color on Apple Metal. ❤️ @taublast (#2804)
  • SKRectI floor conversion — Fixed floor-outward rounding when converting to SKRectI. (#2568)
  • SKBitmap.Encode behavior reverted — Reverted SKBitmap.Encode with SKPngEncoderOptions to the 2.88.8 behavior. ❤️ @sungaila (#3014)
  • Async void removed from SKXamlCanvas — Eliminated async void pattern in SKXamlCanvas for better error handling. ❤️ @lindexi (#2720)
  • XamlRoot null check on unload — Fixed null reference when SKXamlCanvas is unloaded. ❤️ @jeromelaban (#2854)
  • Uno canvas rendering context — Ensured the canvas context is active when rendering on Uno. ❤️ @jeromelaban (#2559)
  • WASM canvas graceful failure — Don't fail when the canvas can't be found in WASM. ❤️ @jeromelaban (#2563)

Platform Support

Platform What's New
🍎 Apple Metal on Mac Catalyst, Metal APIs on common TFM, fixed snapshot magenta on Metal, trimmable tvOS
🪟 Windows WinUI accelerated views, updated GLControl for WinForms, ANGLE built separately
🌐 WebAssembly Blazor DPI exposure, no-SIMD builds for Edge/Safari, canvas graceful failure

Community Contributors ❤️

Contributor What They Did
@maxkatz6 Function pointers and LibraryImport, Metal APIs on common TFM, trimmable tvOS
@jeromelaban .NET 9 support, Uno canvas fixes, WASM no-SIMD builds
@Youssef1313 Span overloads for SetRectRadii, SKFilterQuality compatibility, Uno Bgra8888 fix
@gmurray81 SKGLElement for WPF
@taublast Fixed Apple Metal snapshot magenta color
@beto-rodriguez Exposed Blazor components DPI
@pdjonov Fixed GetKerningPairAdjustments API
@jeremy-visionaid Fixed SKPaint.Clone
@lindexi Removed async void from SKXamlCanvas
@sungaila Reverted SKBitmap.Encode to 2.88.8 behavior

Preview 5 (October 24, 2024)

Updated .NET to 8.0, added function pointers and LibraryImport for modern interop, Span overloads for SetRectRadii and SKFilterQuality, fixed MAUI memory leaks, and added .NET 9 support.

Full Changelog


Preview 4 (July 18, 2024)

Updated Skia to milestone 116, exposed SKBlender, added Span-based color filter overloads, additional SKPicture and R-Tree recording APIs, and multiple Uno/XAML bug fixes.

Full Changelog


Preview 3 (April 10, 2024)

Added SKGLElement for WPF, cleaned up text blob APIs, exposed Blazor DPI, brought Metal APIs to common TFM, and fixed Apple Metal snapshot color issues.

Full Changelog


Preview 2 (February 20, 2024)

Added SKImage.ToRawShader, Metal backend on Mac Catalyst, and bound Skottie's Animation Builder.

Full Changelog


Preview 1 (February 6, 2024)

Initial SkiaSharp 3.0 preview: modernized repository, updated Skia to milestone 115, removed deprecated APIs, added SKGLView for MAUI, WinUI accelerated views, and dev container support.

Full Changelog