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
SKPainttext/font members to errors — The old font-on-paint APIs (deprecated in favour ofSKFont) now produce compile errors. ❤️ @ramezgerges (#4068) - Obsoleted remaining legacy paint state-reading APIs — The few remaining state-reading convenience APIs on
SKPaintare marked obsolete. (#4114) - Variable font support — Full variable font support in SkiaSharp and HarfBuzzSharp:
HBFace/HBFontvariation 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-SKDataconversion. (#3772)SKSamplingOptionsonSKSurface.Draw/SKCanvas.DrawSurface— Filtering-quality overloads. ❤️ @Copilot (#3491)HBColorstruct — Proper managed type forhb_color_t. (#4000)- Missing API wrappers and naming fixes (#4001)
Bug Fixes
- Fixed
SKPixmap/SKBitmap.GetPixelSpanstride —GetPixelSpannow usesRowBytesfor 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 usingHeightinstead ofWidthwhen computing the column offset. (#4128) - Fixed
SKPathfinalizer crash — Resolves a crash whenSKPathBuilderis collected before theSKPathit 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.WinUIin .NET 9 projects. (#4084) - Fixed Android
SKGLViewrendering 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
SkiaApistatic 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.0for 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% |
Links
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.
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.
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.
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.