documentation/docfx/releases/4.147.0.md
<!-- Generated: 2026-06-11T22:15:00Z by claude-sonnet-4.6 -->Preview only · Superseded by 4.148.0 · Never released as stable — these changes rolled up into 4.148.0 · NuGet
All of the work in this preview rolled up into 4.148.0. The 127 PRs here represent a major milestone for SkiaSharp: the library's first major version bump (3.x → 4.x), three consecutive Skia engine updates (milestones 132, 133, and 147), and a wave of long-requested features including variable font support, animated WebP encoding, color font palettes, Linux Bionic native assets, and expanded Tizen architecture coverage. A large community contingent led by @ramezgerges, @4Darmygeometry, @SimonvBez, and @ebariche contributed core features, platform support, and a fully reworked Uno Platform gallery.
3.x to 4.x. (#3640)HBColor struct — Adds a proper managed HBColor struct to represent hb_color_t values, replacing raw integer handling. (#4000)SKWebpEncoder) — New SKWebpEncoder class supporting multi-frame animated WebP output, wrapping Skia's native animated WebP support. (#3771)SKStream.GetData() zero-copy conversion — Adds SKStream.GetData() for converting a stream to SKData without copying when the underlying data is already contiguous. (#3772)SKSamplingOptions on SKSurface.Draw and SKCanvas.DrawSurface — Overloads accepting SKSamplingOptions bring these methods to parity with the rest of the drawing API. ❤️ @Copilot (#3491)TreatWarningsAsErrors in binding/ — All compiler warnings in the binding layer are now treated as errors, and the backlog of existing warnings has been resolved. (#3752)SKPath when SKPathBuilder is collected first — A race condition between the finalizers of SKPath and SKPathBuilder could crash the process; the disposal order is now safe. ❤️ @ramezgerges (#3796)SKGLView not rendering after tab switch in MAUI TabBar on Android — The GL view surface was not being recreated after the tab was hidden and re-shown. ❤️ @SimonvBez (#3076)ios26.0) while app projects use the unversioned forms, resolving linker and deployment issues. (#3798)| Library | New Version | PR |
|---|---|---|
| freetype | 2.14.3 | #3726 |
| libpng | 1.6.58 | #3718 |
| libexpat | 2.7.5 | #3717 |
| zlib | 1.3.2.1-motley | #3720 |
| libjpeg-turbo | 3.1.4.1 | #4012 |
| HarfBuzzSharp | 8.3.1.6 | #3780 |
Plus extensive CI and automation improvements: content-based build caching, automated Skia upstream sync, AI-powered API docs pipeline, issue-triage workflows, release notes automation, and an agentic workflow data persistence system.
| Platform | What's New |
|---|---|
| 🐧 Linux | Bionic native assets; CI disk-space and Docker fixes |
| 🌐 WebAssembly | SkiaFiddle bundle −60 %; dropped pre-.NET 8 Emscripten targets |
| 🎨 Tizen | x64 and arm64 native builds |
| 🍎 Apple | TFM versioning fixes for libraries vs. apps |
| 🤖 Android | Fixed SKGLView blank after MAUI TabBar tab switch |
| Contributor | What They Did |
|---|---|
| @ramezgerges | Variable font support; Skia milestone bumps (132, 147); Uno Platform gallery; SKPath finalizer fix; default-typeface resolution; SkiaFiddle UX |
| @4Darmygeometry | Linux Bionic native assets; C# 13 PolySharp support on legacy TFMs |
| @SimonvBez | Fixed SKGLView not rendering after tab switch in MAUI TabBar on Android |
| @ebariche | Reduced SkiaFiddle WASM bundle size by ~60% |
| @Copilot | Added SKSamplingOptions overloads to SKSurface.Draw and SKCanvas.DrawSurface |
| @sasakrsmanovic | Updated Uno Platform link and description in README |