documentation/docfx/releases/4.148.0-unreleased.md
Upcoming release · In development · Not yet available on NuGet
Supersedes 4.147.0 · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below.
SkiaSharp 4 is the first major version upgrade in many years, built on the Skia m148 engine and bringing a wave of new capabilities: animated WebP encoding, variable and color-palette font support, expanded platform reach (Linux Bionic, Tizen x64/arm64), and a comprehensive API modernization sweep. This release cumulatively includes all work from the skipped 4.147.0 preview cycle. Special thanks to @ramezgerges, @4Darmygeometry, @SimonvBez, and @ebariche for major community contributions across this release.
SKPaint text/font obsolete members are now errors — APIs marked [Obsolete] in earlier releases now produce compile errors. Migrate to the SKFont-based text APIs. ❤️ @ramezgerges (#4068)SKWebpEncoder) — Full support for encoding multi-frame animated WebP files. (#3771)SKStream.GetData() — Zero-copy conversion of any SKStream to an SKData object. (#3772)HBColor struct — Adds a proper managed type for HarfBuzz hb_color_t, replacing raw integer handling. (#4000)SKSamplingOptions on SKSurface.Draw / SKCanvas.DrawSurface — Exposes sampling-quality control on surface-to-canvas drawing. ❤️ @Copilot (#3491)SKPaint state-reading APIs — Remaining SKPaint text/font state properties are marked [Obsolete] in preparation for removal. (#4114)SKTypeface and HarfBuzzSharp. ❤️ @ramezgerges (#3703)SKTypeface APIs to enumerate and select color font palettes (CPAL/COLR). (#3742)SKPixmap.GetPixelSpan<T>(x, y) offset — Fixed a bug where the row stride calculation used Height instead of Width, producing wrong pixel addresses. (#4128)SKPath finalizer crash — Fixed a crash when SKPathBuilder is collected by the GC before the SKPath built from it. ❤️ @ramezgerges (#3796)[ModuleInitializer] to the SkiaApi static constructor, fixing edge cases in .NET trimming and NativeAOT scenarios. (#4133)SKGLView tab switch — Fixed SKGLView not re-rendering after a MAUI TabBar tab switch on Android. ❤️ @SimonvBez (#3076)libWinAppSDK_SkiaSharp.dll not being found by .NET 9 WinUI consumers. (#4084)Multiple native dependencies updated with security patches:
| Platform | What's New |
|---|---|
| 🐧 Linux | Bionic (NDK legacy ABI) native assets |
| 🍎 Apple | TFM alignment: 26.0 for libraries, unversioned for app targets |
| 🤖 Android | Fixed SKGLView rendering after MAUI tab switch |
| 🪟 Windows | Fixed WinUI Projection DLL discovery for .NET 9 |
| 🏗️ Tizen | x64 and ARM64 native builds |
| 🌐 WebAssembly | Dropped pre-.NET 8 Emscripten build variants |
| Contributor | What They Did |
|---|---|
| @ramezgerges | Variable font support, color font robustness, singleton lifecycle rework, SKPath finalizer fix, default-typeface fix, SKPaint API cleanup, Skia milestone bumps |
| @4Darmygeometry | Linux Bionic native assets, C# 13 PolySharp support on legacy TFMs |
| @SimonvBez | Fixed Android SKGLView not rendering after MAUI tab switch |
| @Copilot | SKSamplingOptions support on SKSurface.Draw / SKCanvas.DrawSurface |
| @ebariche | Reduced SkiaFiddle WASM application size by ~60% |
| @sasakrsmanovic | Updated Uno Platform link and description in README |
Plus several CI, build infrastructure, and developer tooling improvements.