Version 4.148.0
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.
Highlights
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.
⚠️ Breaking Changes
- SkiaSharp major version bump to 4.x — The package version jumps from 3.x to 4.x. Existing NuGet references require a version update. (#3640)
SKPainttext/font obsolete members are now errors — APIs marked[Obsolete]in earlier releases now produce compile errors. Migrate to theSKFont-based text APIs. ❤️ @ramezgerges (#4068)
New Features
Engine
- Skia milestone m148 — Updated the Skia engine to milestone 148, picking up rendering improvements, bug fixes, and upstream security patches. (#4125)
Images & Encoding
- Animated WebP encoding (
SKWebpEncoder) — Full support for encoding multi-frame animated WebP files. (#3771)
API Surface
SKStream.GetData()— Zero-copy conversion of anySKStreamto anSKDataobject. (#3772)HBColorstruct — Adds a proper managed type for HarfBuzzhb_color_t, replacing raw integer handling. (#4000)SKSamplingOptionsonSKSurface.Draw/SKCanvas.DrawSurface— Exposes sampling-quality control on surface-to-canvas drawing. ❤️ @Copilot (#3491)- Missing API wrappers and naming fixes — Adds several previously unbound C API entry points and corrects naming convention violations. (#4001)
- Obsolete legacy
SKPaintstate-reading APIs — RemainingSKPainttext/font state properties are marked[Obsolete]in preparation for removal. (#4114)
Text & Fonts
- Variable font support — Full OpenType variable font axis support in
SKTypefaceandHarfBuzzSharp. ❤️ @ramezgerges (#3703) - Color font palette support — Adds
SKTypefaceAPIs to enumerate and select color font palettes (CPAL/COLR). (#3742)
Platform
- Linux Bionic native assets — New native assets for Linux Bionic to support scenarios using the Android NDK sysroot outside of Android. ❤️ @4Darmygeometry (#3217)
- Tizen x64 and ARM64 native builds — Tizen native support extended to x64 and arm64 architectures. (#3620)
Bug Fixes
SKPixmap.GetPixelSpan<T>(x, y)offset — Fixed a bug where the row stride calculation usedHeightinstead ofWidth, producing wrong pixel addresses. (#4128)SKPathfinalizer crash — Fixed a crash whenSKPathBuilderis collected by the GC before theSKPathbuilt from it. ❤️ @ramezgerges (#3796)- Default typeface resolution — Moved default-typeface lookup from native to the managed layer, fixing inconsistencies on platforms without a system font manager. ❤️ @ramezgerges (#3730)
- Singleton instance lifecycle — Reworked the lifecycle of shared singleton objects to prevent premature disposal and ordering bugs. ❤️ @ramezgerges (#4080)
- Native-compat gate timing — Moved the native compatibility check from
[ModuleInitializer]to theSkiaApistatic constructor, fixing edge cases in .NET trimming and NativeAOT scenarios. (#4133) - Android
SKGLViewtab switch — FixedSKGLViewnot re-rendering after a MAUITabBartab switch on Android. ❤️ @SimonvBez (#3076) - WinUI Projection DLL discovery — Fixed
libWinAppSDK_SkiaSharp.dllnot being found by .NET 9 WinUI consumers. (#4084)
Security
Multiple native dependencies updated with security patches:
- expat 2.8.1 (#4079)
- HarfBuzz 14.2.0 (#4035)
- libjpeg-turbo 3.1.4.1 (#4012)
- FreeType 2.14.3 (#3726)
- zlib 1.3.2.1 (#3720)
- libpng 1.6.58 (#3718)
- libexpat 2.7.5 (#3717)
Platform Support
| 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 |
Community Contributors ❤️
| 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.