Table of Contents

Version 4.148.0

Upcoming release · In development · Not yet available on NuGet

Supersedes 4.147.0 · Rolls up preview-only work that was never released as stable — those changes are included cumulatively below.

Highlights

SkiaSharp 4 is the first major version upgrade in many years, built on the Skia m148 engine and bringing a wave of new capabilities: animated WebP encoding, variable and color-palette font support, expanded platform reach (Linux Bionic, Tizen x64/arm64), and a comprehensive API modernization sweep. This release cumulatively includes all work from the skipped 4.147.0 preview cycle. Special thanks to @ramezgerges, @4Darmygeometry, @SimonvBez, and @ebariche for major community contributions across this release.

⚠️ Breaking Changes

  • SkiaSharp major version bump to 4.x — The package version jumps from 3.x to 4.x. Existing NuGet references require a version update. (#3640)
  • SKPaint text/font obsolete members are now errors — APIs marked [Obsolete] in earlier releases now produce compile errors. Migrate to the SKFont-based text APIs. ❤️ @ramezgerges (#4068)

New Features

Engine

  • Skia milestone m148 — Updated the Skia engine to milestone 148, picking up rendering improvements, bug fixes, and upstream security patches. (#4125)

Images & Encoding

  • Animated WebP encoding (SKWebpEncoder) — Full support for encoding multi-frame animated WebP files. (#3771)

API Surface

  • SKStream.GetData() — Zero-copy conversion of any SKStream to an SKData object. (#3772)
  • HBColor struct — Adds a proper managed type for HarfBuzz hb_color_t, replacing raw integer handling. (#4000)
  • SKSamplingOptions on SKSurface.Draw / SKCanvas.DrawSurface — Exposes sampling-quality control on surface-to-canvas drawing. ❤️ @Copilot (#3491)
  • Missing API wrappers and naming fixes — Adds several previously unbound C API entry points and corrects naming convention violations. (#4001)
  • Obsolete legacy SKPaint state-reading APIs — Remaining SKPaint text/font state properties are marked [Obsolete] in preparation for removal. (#4114)

Text & Fonts

  • Variable font support — Full OpenType variable font axis support in SKTypeface and HarfBuzzSharp. ❤️ @ramezgerges (#3703)
  • Color font palette support — Adds SKTypeface APIs to enumerate and select color font palettes (CPAL/COLR). (#3742)

Platform

  • Linux Bionic native assets — New native assets for Linux Bionic to support scenarios using the Android NDK sysroot outside of Android. ❤️ @4Darmygeometry (#3217)
  • Tizen x64 and ARM64 native builds — Tizen native support extended to x64 and arm64 architectures. (#3620)

Bug Fixes

  • SKPixmap.GetPixelSpan<T>(x, y) offset — Fixed a bug where the row stride calculation used Height instead of Width, producing wrong pixel addresses. (#4128)
  • SKPath finalizer crash — Fixed a crash when SKPathBuilder is collected by the GC before the SKPath built from it. ❤️ @ramezgerges (#3796)
  • Default typeface resolution — Moved default-typeface lookup from native to the managed layer, fixing inconsistencies on platforms without a system font manager. ❤️ @ramezgerges (#3730)
  • Singleton instance lifecycle — Reworked the lifecycle of shared singleton objects to prevent premature disposal and ordering bugs. ❤️ @ramezgerges (#4080)
  • Native-compat gate timing — Moved the native compatibility check from [ModuleInitializer] to the SkiaApi static constructor, fixing edge cases in .NET trimming and NativeAOT scenarios. (#4133)
  • Android SKGLView tab switch — Fixed SKGLView not re-rendering after a MAUI TabBar tab switch on Android. ❤️ @SimonvBez (#3076)
  • WinUI Projection DLL discovery — Fixed libWinAppSDK_SkiaSharp.dll not being found by .NET 9 WinUI consumers. (#4084)

Security

Multiple native dependencies updated with security patches:

Platform Support

Platform What's New
🐧 Linux Bionic (NDK legacy ABI) native assets
🍎 Apple TFM alignment: 26.0 for libraries, unversioned for app targets
🤖 Android Fixed SKGLView rendering after MAUI tab switch
🪟 Windows Fixed WinUI Projection DLL discovery for .NET 9
🏗️ Tizen x64 and ARM64 native builds
🌐 WebAssembly Dropped pre-.NET 8 Emscripten build variants

Community Contributors ❤️

Contributor What They Did
@ramezgerges Variable font support, color font robustness, singleton lifecycle rework, SKPath finalizer fix, default-typeface fix, SKPaint API cleanup, Skia milestone bumps
@4Darmygeometry Linux Bionic native assets, C# 13 PolySharp support on legacy TFMs
@SimonvBez Fixed Android SKGLView not rendering after MAUI tab switch
@Copilot SKSamplingOptions support on SKSurface.Draw / SKCanvas.DrawSurface
@ebariche Reduced SkiaFiddle WASM application size by ~60%
@sasakrsmanovic Updated Uno Platform link and description in README

Plus several CI, build infrastructure, and developer tooling improvements.