documentation/docfx/releases/4.148.0.md
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
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.
SKPaint text/font members to errors — The old font-on-paint APIs (deprecated in favour of SKFont) now produce compile errors. ❤️ @ramezgerges (#4068)SKPaint are marked obsolete. (#4114)HBFace/HBFont variation axes, font palette APIs. ❤️ @ramezgerges (#3703)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)SKPixmap/SKBitmap.GetPixelSpan stride — GetPixelSpan now uses RowBytes for stride instead of width × bytes-per-pixel, fixing incorrect results on padded bitmaps. (#4148)SKPixmap.GetPixelSpan<T>(x, y) coordinate offset — The typed overload was using Height instead of Width when computing the column offset. (#4128)SKPath finalizer crash — Resolves a crash when SKPathBuilder is collected before the SKPath it created. ❤️ @ramezgerges (#3796)SkiaSharp.Views.WinUI in .NET 9 projects. (#4084)SKGLView rendering after MAUI tab switch ❤️ @SimonvBez (#3076)SkiaApi static constructor — The native library version check now runs at startup, giving a clearer error when the wrong binary is loaded. (#4133).26.0 for libraries, unversioned for apps. (#3798)| 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 |
| 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% |
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.
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.
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.
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.