Version 4.147.0
First v4 previews · NuGet (prerelease)
Superseded by 4.148.0 · Never released as stable — these changes rolled up into 4.148.0.
API changes · SkiaSharp API diff · HarfBuzzSharp API diff
Highlights
SkiaSharp 4.147.0 previews the v4 line with Skia m147, variable fonts, and animated WebP encoding. The preview series also adds sampling control for surface draws and zero-copy stream-to-data conversion, broadens native platform support, and fixes a finalizer crash. It includes a breaking Vulkan API rename; review the migration note before testing an upgrade.
Breaking Changes
- Vulkan YCbCr conversion info has a new type name —
GRVkImageInfo.YcbcrConversionInfonow usesGRVkYcbcrConversionInfoinstead ofGrVkYcbcrConversionInfo. Update references and equality comparisons when rebuilding Vulkan code, because the former type's value-equality interface and operators are removed.
Engine
- Skia advances to milestone m147 — The v4 preview line moves the bundled renderer through Skia milestones m132, m133, and m147. — ❤️ @ramezgerges (#3560, #3660, #3702)
- Variable and color font support — Variable fonts flow through SkiaSharp and HarfBuzzSharp, while color font palette selection and variable-font handling are improved. — ❤️ @ramezgerges (#3703, #3742)
API Surface
- Sampling control for surface draws — New surface-draw overloads accept
SKSamplingOptions, allowing callers to choose filter and mipmap behavior. (#3491) - Animated WebP and stream data conversion —
SKWebpEncodercan encode frame sequences as animated WebP, andSKStream.GetData()converts seekable streams toSKDatawithout an intermediate byte array. (#3771, #3772) - HarfBuzz value and wrapper additions — HarfBuzzSharp adds the
HBColorrepresentation and fills in missing wrappers with consistent naming. (#4000, #4001)
Bug Fixes
- SKPath finalizer crash fixed — A collection-order bug no longer crashes finalization when an
SKPathBuilderis collected before anSKPathit created. — ❤️ @ramezgerges (#3796) - MAUI Android tab switching restores SKGLView — SKGLView is reattached after returning to a MAUI TabBar tab instead of remaining blank. — ❤️ @SimonvBez (#3076)
Platform
- Additional Linux and Tizen native assets — Android-hosted Linux Bionic and Tizen x64 and arm64 are available as native targets. — ❤️ @4Darmygeometry (#3217, #3620)
- Updated Apple and WASM targeting — Apple libraries align with current versioned TFMs, and WASM native assets now require .NET 8 or later. (#3798, #4022)
Security
- Bundled native libraries refreshed — The bundled libexpat, libpng, zlib, FreeType, and libjpeg-turbo dependencies have been updated. (#3717, #3718, #3720, #3726, #4012)
HarfBuzzSharp 8.3.1.6
Adds variable-font and color-palette support, the HBColor value type, and missing HarfBuzz wrappers.
Community Contributors ❤️
Thank you to everyone who contributed to this release!
| Contributor | Contributions |
|---|---|
| @ramezgerges | Skia milestone and variable-font work, managed default-typeface resolution, the SKPath finalizer fix, and sample improvements (#3560, #3666, #3692, #3702, #3703, #3714, #3730, #3758, #3762, #3785, #3790, #3796, #3821, #3867) |
| @4Darmygeometry | Linux Bionic native assets and C# 13 support for legacy target frameworks (#3217, #3642) |
| @ebariche | Uno sample and integration improvements (#3849) |
| @sasakrsmanovic | Sample and infrastructure improvements (#3966) |
| @SimonvBez | The Android MAUI TabBar fix for SKGLView rendering (#3076) |
Preview 3 (May 24, 2026)
Preview 3 added HBColor and HarfBuzz wrapper improvements, refreshed bundled dependencies, and updated WASM targeting.
Preview 2 (May 6, 2026)
Preview 2 added animated WebP encoding, zero-copy SKStream.GetData(), and the SKPath finalizer fix.
Preview 1 (April 28, 2026)
Preview 1 opened the v4 line with the Skia m147 engine update, variable fonts, surface sampling options, and expanded Linux and Tizen support.