Table of Contents

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)
  • HBColor struct — Proper managed representation for hb_color_t in HarfBuzzSharp, replacing raw integer values. (#4000)
  • SKSamplingOptions on SKSurface.Draw and SKCanvas.DrawSurface — Overloads accepting SKSamplingOptions for 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.0 to 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.0 and net462. ❤️ @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 SKGLView blank after tab switch in MAUI TabBar — Fixes a long-standing rendering regression where the GL view stopped rendering after switching away from and back to a tab. ❤️ @SimonvBez (#3076)
  • SKPath finalizer crash when SKPathBuilder is collected first — Eliminates a crash in the GC finalizer caused by dispose-ordering between SKPath and 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

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.

Full Changelog


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%.

Full Changelog


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.

Full Changelog