Version 4.147.0
Major release — new APIs, new platforms, and a new major version · Preview only · NuGet · GitHub Release
Highlights
SkiaSharp 4.x is here, built on Skia milestone 147. This release brings variable font support and color font palettes to the text API, animated WebP encoding, and a zero-copy SKStream.GetData() for efficient data access. Platform reach expands with Linux Bionic and Tizen x64/arm64 support landing thanks to community contributors @4Darmygeometry and @ramezgerges, who also drove the core Skia milestone bump and a full WebAssembly gallery sample.
Breaking Changes
SkiaSharp 4.x is a new major version. Consumers referencing 3.x packages will need to update their NuGet references. The public API surface is otherwise additive.
New Features
Engine
- Skia milestone 147 — Updated the underlying Skia engine to milestone 147, bringing all upstream rendering improvements and fixes. ❤️ @ramezgerges (#3702)
- Skia milestone 133 and 132 — Intermediate engine bumps picked up from the 3.x series. (#3660) ❤️ @ramezgerges (#3560)
Text & Fonts
- Variable font support — Full variable font axis enumeration and manipulation in both
SkiaSharpandHarfBuzzSharp, allowing fine-grained control over weight, width, and custom axes. ❤️ @ramezgerges (#3703) - Color font palette support — Enumerate and select color font palettes (e.g. emoji and decorative fonts that ship multiple color schemes). Includes robustness improvements to variable font rendering. (#3742)
- Default typeface resolution fix — Moved default-typeface resolution to the managed layer to fix incorrect font fallback behavior. ❤️ @ramezgerges (#3730)
API Surface
SKStream.GetData()— Zero-copy stream-to-data conversion, avoiding extra allocations when reading stream contents asSKData. (#3772)- Animated WebP encoding (
SKWebpEncoder) — Encode multi-frame animated WebP images directly from SkiaSharp. (#3771) SKSamplingOptionsonSKSurface.Draw/SKCanvas.DrawSurface— Exposes sampling quality control on surface drawing operations. ❤️ @Copilot (#3491)
Platform
- Linux Bionic native assets — Adds pre-built native libraries for Linux Bionic (Android's libc-based Linux variant), broadening deployment scenarios. ❤️ @4Darmygeometry (#3217)
- Tizen x64 and arm64 — Native build support for Tizen on both architectures. (#3620)
- Apple platform TFM fix — Corrected Apple platform target framework monikers to use versioned TFMs for libraries and unversioned for apps, resolving compatibility issues. (#3798)
- C# 13 support on legacy TFMs — PolySharp added to enable C# 13 language features on older target frameworks. ❤️ @4Darmygeometry (#3642)
Samples & Gallery
- Uno Platform WebAssembly gallery — Full interactive gallery running on WebAssembly via Uno Platform, including a SkiaFiddle live editor. ❤️ @ramezgerges (#3758, #3762, #3790)
- Interactive Blazor gallery samples — Five new interactive samples plus a redesigned Blazor home page. (#3757)
Security
- libpng updated to 1.6.58 — Picks up upstream security and stability fixes. (#3718)
- libexpat updated to 2.7.5 — Picks up upstream security fixes. (#3717)
Bug Fixes
SKPathfinalizer crash — Fixed a crash whenSKPathBuilderwas garbage-collected before theSKPathit created, causing a double-free in the finalizer. ❤️ @ramezgerges (#3796)- Android
SKGLViewnot rendering after tab switch — FixedSKGLViewgoing blank when switching back to a tab containing it in a MAUITabBar. ❤️ @SimonvBez (#3076)
Plus several CI and documentation improvements.
Platform Support
| Platform | What's New |
|---|---|
| 🍎 Apple | TFM compatibility fix for libraries vs. apps |
| 🤖 Android | Fixed SKGLView rendering after MAUI tab switch |
| 🐧 Linux | Linux Bionic native assets |
| 🎨 Core API | Variable fonts, color palettes, animated WebP, SKStream.GetData() |
| 🌐 WebAssembly | Uno Platform WebAssembly gallery |
Community Contributors ❤️
| Contributor | What They Did |
|---|---|
| @ramezgerges | Bumped Skia to milestone 147, added variable font support, fixed default typeface resolution, fixed SKPath finalizer crash, improved Uno Platform samples |
| @4Darmygeometry | Added Linux Bionic native assets, enabled C# 13 on legacy TFMs |
| @SimonvBez | Fixed SKGLView not rendering after MAUI tab switch on Android |
| @Copilot | Added SKSamplingOptions support to SKSurface.Draw and SKCanvas.DrawSurface |
Links
Preview 2
Added SKStream.GetData() for zero-copy stream-to-data conversion, animated WebP encoding (SKWebpEncoder), fixed SKPath finalizer crash, and fixed Apple platform TFMs.
Preview 1
Bumped Skia to milestone 147, added variable font support and color font palette support, introduced Linux Bionic native assets, Tizen x64/arm64 support, an Uno Platform WebAssembly gallery, security updates to libpng and libexpat, and the major version bump to 4.x.