Table of Contents

Version 4.148.0

First stable v4 · Released June 22, 2026 · NuGet · GitHub Release

Supersedes 4.147.0 · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below.

API changes · SkiaSharp API diff · HarfBuzzSharp 14.2.0

Highlights

SkiaSharp 4.148.0 is the first stable v4 release, rolling up all preview work from 4.147.0 cumulatively and completing the v4 API surface cleanup. This release delivers the Skia m148 engine upgrade, promotes legacy obsoletes to compile errors, reworks singleton object lifecycles for correctness, and ships several important bug fixes including SKPixmap stride and coordinate calculations. HarfBuzz 14.2.0 ships alongside — see HarfBuzzSharp 14.2.0 for the binding details. Notable community contributions from @ramezgerges, @4Darmygeometry, @SimonvBez, @ebariche, and @Copilot.

Engine

  • Skia milestone m148 — Upgrades the native Skia engine to Chrome milestone m148. (#4125)
  • Skia milestone m147 — Included from the 4.147.0 rollup. ❤️ @ramezgerges (#3702)

API Surface

  • Promoted remaining pre-v4 obsoletes to errors — Legacy members deprecated in v3 are now compile errors, and obsolete enum members are trimmed from the ref assembly, completing the v4 migration path. ❤️ @ramezgerges (#4195)
  • Promoted SKPaint text/font members to errors — The old font-on-paint APIs (deprecated in favour of SKFont) now produce compile errors. ❤️ @ramezgerges (#4068)
  • Obsoleted remaining legacy paint state-reading APIs — The few remaining state-reading convenience APIs on SKPaint are marked obsolete. (#4114)
  • Variable font support — Full variable font support in SkiaSharp and HarfBuzzSharp: HBFace/HBFont variation axes, font palette APIs. ❤️ @ramezgerges (#3703)
  • Color font palette support — Color palette APIs for emoji and color fonts. (#3742)
  • SKWebpEncoder — Animated WebP encoding — New encoder for multi-frame animated WebP files. (#3771)
  • SKStream.GetData() — Zero-copy stream-to-SKData conversion. (#3772)
  • SKSamplingOptions on SKSurface.Draw / SKCanvas.DrawSurface — Filtering-quality overloads. ❤️ @Copilot (#3491)
  • HBColor struct — Proper managed type for hb_color_t. (#4000)
  • Missing API wrappers and naming fixes (#4001)

Bug Fixes

  • Fixed SKPixmap/SKBitmap.GetPixelSpan strideGetPixelSpan now uses RowBytes for stride instead of width × bytes-per-pixel, fixing incorrect results on padded bitmaps. (#4148)
  • Fixed SKPixmap.GetPixelSpan<T>(x, y) coordinate offset — The typed overload was using Height instead of Width when computing the column offset. (#4128)
  • Fixed SKPath finalizer crash — Resolves a crash when SKPathBuilder is collected before the SKPath it created. ❤️ @ramezgerges (#3796)
  • Fixed default-typeface resolution — Moves default-typeface lookup to the managed layer, correcting typeface fallback. ❤️ @ramezgerges (#3730)
  • Fixed WinUI Projection DLL not found for .NET 9 — Resolves a build-time error when consuming SkiaSharp.Views.WinUI in .NET 9 projects. (#4084)
  • Fixed Android SKGLView rendering after MAUI tab switch ❤️ @SimonvBez (#3076)

Lifecycle & Internals

  • Reworked singleton lifecycle — Singleton native objects (default paints, fonts, etc.) now use a proper ref-counted lifecycle, preventing use-after-free crashes. ❤️ @ramezgerges (#4080)
  • Moved native-compat gate to SkiaApi static constructor — The native library version check now runs at startup, giving a clearer error when the wrong binary is loaded. (#4133)

Platform

  • Linux Bionic native assets ❤️ @4Darmygeometry (#3217)
  • Tizen x64 and ARM64 native builds (#3620)
  • WASM: Dropped pre-.NET 8 Emscripten builds (#4022)
  • Fixed Apple platform TFMs.26.0 for libraries, unversioned for apps. (#3798)
  • C# 13 support on legacy TFMs via PolySharp ❤️ @4Darmygeometry (#3642)

Security

  • libexpat updated to 2.8.1 (#4079)
  • HarfBuzz updated to 14.2.0 (#4035)
  • libjpeg-turbo updated to 3.1.4.1 (#4012)
  • freetype updated to 2.14.3 (#3726)
  • zlib updated to 1.3.2.1-motley (#3720)
  • libpng updated to 1.6.58 (#3718)
  • libexpat updated to 2.7.5 (#3717)

Platform Support

Platform What's New
🍎 Apple Fixed platform TFMs for libraries vs apps
🤖 Android Fixed SKGLView blank after MAUI tab switch
🌐 WebAssembly Dropped pre-.NET 8 Emscripten builds
🐧 Linux Linux Bionic native assets
🪟 Windows Fixed WinUI Projection DLL for .NET 9
📦 General Tizen x64/arm64 native builds; C# 13 support

Community Contributors ❤️

Contributor What They Did
@ramezgerges Skia m147 bump; variable fonts; v4 obsoletes promotion; SKPaint obsoletes; singleton lifecycle; SKPath crash fix; typeface fix; SkiaSharpGenerator on Linux
@Copilot SKSamplingOptions overloads for SKSurface.Draw and SKCanvas.DrawSurface
@4Darmygeometry Linux Bionic native assets; C# 13 support on legacy TFMs
@SimonvBez Fixed Android SKGLView rendering after MAUI tab switch
@ebariche Reduced SkiaFiddle WASM application size by ~60%

Release Candidate 1 (June 12, 2026)

Upgraded Skia to m148, reworked singleton lifecycles, promoted legacy SKPaint text/font APIs and remaining v4 obsoletes to compile errors, fixed SKPixmap stride and coordinate calculations, and resolved a WinUI Projection DLL issue on .NET 9.

Full Changelog


Preview 3 (May 24, 2026)

Added HBColor struct, dependency updates (libjpeg-turbo, freetype, zlib), API wrappers and naming fixes, Blazor Gallery redesign, and dropped pre-.NET 8 WASM Emscripten support.

Full Changelog


Preview 2 (May 6, 2026)

Added SKWebpEncoder for animated WebP, SKStream.GetData() for zero-copy conversion, fixed SKPath finalizer crash, fixed Apple platform TFMs, and expanded the gallery with five new interactive samples.

Full Changelog


Preview 1 (April 28, 2026)

Launched SkiaSharp v4: upgraded to Skia m147, introduced variable font support, color font palettes, SKSamplingOptions overloads, Linux Bionic and Tizen native builds, fixed Android SKGLView rendering, fixed default-typeface resolution, and added C# 13 support on legacy TFMs.

Full Changelog