Version 4.147.0
Major version release with Skia m147, variable fonts, and new platform support · Preview only · NuGet · GitHub Release
Highlights
SkiaSharp 4.x is here — the first major version bump since 3.x — bringing Skia milestone 147, full variable font support, color font palette APIs, animated WebP encoding, Linux Bionic (Android-like) native assets, and a wave of dependency security updates. Community contributors were instrumental across nearly every feature in this release: @ramezgerges drove the Skia engine upgrade, variable font APIs, and the Uno Platform gallery; @4Darmygeometry added Linux Bionic support and C# 13 compatibility; and @SimonvBez fixed a long-standing Android rendering bug.
New Features
Engine
- Skia milestone 147 — Upgrades the underlying Skia graphics engine to milestone 147, including all upstream rendering improvements and bug fixes. ❤️ @ramezgerges (#3702)
- Skia milestone 133 → 132 baseline — Earlier engine bumps bringing m132 and m133 as stepping stones to m147. (#3560, #3660)
API Surface
- Variable font support — Full variable font axis APIs in SkiaSharp and HarfBuzzSharp, enabling precise control over weight, width, slant, and custom axes. ❤️ @ramezgerges (#3703)
- Color font palette support — New APIs for reading and applying color font palettes, with improved robustness for variable color fonts. (#3742)
- Animated WebP encoding (
SKWebpEncoder) — Encode multi-frame animations directly to WebP format. (#3771) SKStream.GetData()— Zero-copy stream-to-data conversion, avoiding unnecessary buffer allocation when reading stream contents. (#3772)HBColorstruct — Proper managed representation forhb_color_tin HarfBuzzSharp, replacing raw integer values. (#4000)SKSamplingOptionsonSKSurface.DrawandSKCanvas.DrawSurface— Overloads acceptingSKSamplingOptionsfor quality-controlled surface drawing. ❤️ @Copilot (#3491)- Missing API wrappers — Several previously-unbound C API functions are now accessible from C#, with naming convention fixes throughout. (#4001)
- Default typeface resolution in managed layer — Moves default-typeface fallback from native into managed code, fixing resolution inconsistencies across platforms. ❤️ @ramezgerges (#3730)
Platform
- Linux Bionic native assets — Adds pre-built native libraries for Linux Bionic (the Android-compatible Linux ABI), enabling SkiaSharp on more embedded and custom Linux targets. ❤️ @4Darmygeometry (#3217)
- Tizen x64 and arm64 — Native build support for Tizen on x64 and ARM64 architectures, with the Tizen SDK upgraded from 6.1 to 10.0. (#3620, #3743)
- Apple platform TFM alignment — Libraries now target
net9.0-ios26.0/net9.0-maccatalyst26.0/net9.0-tvos26.0to match Apple SDK requirements, while app projects remain unversioned. (#3798) - WebAssembly: dropped pre-.NET 8 Emscripten builds — Removes legacy Emscripten-version-specific WASM natives, slimming the package. (#4022)
- C# 13 support on legacy TFMs — PolySharp enables C# 13 language features when targeting
netstandard2.0andnet462. ❤️ @4Darmygeometry (#3642)
Security
- libjpeg-turbo 3.1.4.1 — Picks up the latest security and correctness fixes. (#4012)
- libpng 1.6.58 — Addresses upstream CVE fixes. (#3718)
- libexpat 2.7.5 — Addresses upstream security patches. (#3717)
- freetype 2.14.3 — Picks up upstream bug and security fixes. (#3726)
- zlib 1.3.2.1-motley — Updated to latest patched zlib fork. (#3720)
Bug Fixes
- Android
SKGLViewblank after tab switch in MAUITabBar— Fixes a long-standing rendering regression where the GL view stopped rendering after switching away from and back to a tab. ❤️ @SimonvBez (#3076) SKPathfinalizer crash whenSKPathBuilderis collected first — Eliminates a crash in the GC finalizer caused by dispose-ordering betweenSKPathand its builder. ❤️ @ramezgerges (#3796)
Platform Support
| Platform | What's New |
|---|---|
| 🍎 Apple | TFM alignment for iOS/macCatalyst/tvOS 26.0 |
| 🤖 Android | Fixed SKGLView blank after MAUI tab switch |
| 🐧 Linux | Linux Bionic native assets |
| 🌐 WebAssembly | Dropped pre-.NET 8 legacy Emscripten builds |
| 🎨 Core API | Variable fonts, color font palettes, animated WebP, SKStream.GetData() |
Community Contributors ❤️
| Contributor | What They Did |
|---|---|
| @ramezgerges | Skia m147 engine bump, variable font APIs, default-typeface fix, SKPath finalizer fix, Uno Platform gallery |
| @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% |
| @Copilot | Added SKSamplingOptions overloads for SKSurface.Draw / SKCanvas.DrawSurface |
| @sasakrsmanovic | Updated Uno Platform link and description in README |
Links
Preview 3
Updated native dependencies (libjpeg-turbo 3.1.4.1), dropped pre-.NET 8 WebAssembly builds, added missing API wrappers and HBColor struct, and improved CI and documentation tooling.
Preview 2
Added animated WebP encoding, SKStream.GetData(), color font palette APIs, Blazor gallery redesign with API Atlas, and the SkiaFiddle Uno Platform sample. Community-driven: @ramezgerges shipped the Uno gallery and SKPath finalizer fix; @ebariche cut SkiaFiddle WASM size by ~60%.
Preview 1
First 4.x preview — major version bump, Skia m147 engine, variable font APIs, Linux Bionic support, Tizen x64/arm64, five native dependency security updates, and the Android SKGLView tab-switch fix. The Uno Platform multi-page gallery sample debuted here.