Back to Skiasharp

3.116.0

documentation/docfx/releases/3.116.0.md

4.150.023.6 KB
Original Source
<!-- RAW PR DATA — Do not remove this comment block. AI uses this data to generate the polished release notes below. Re-run the script to refresh this data from git history. Generated: 2026-06-17T23:57:51Z by generate-release-notes.py version: 3.116.0 status: stable supersedes: 3.0.0 (preview only, rolled up) branch: release/3.116.0 diff: release/2.88.9..release/3.116.0 prs: 129 api: self=3.116.0/index.md;hb=8.3.0 PRs grouped by the preview they first shipped in (newest first). Render each milestone as a trailing "## <label> (<date>)" section per TEMPLATE.md, and merge them all for the top-level Highlights: ## Unreleased — not yet in a tagged preview (5 PRs) - Fix the import for apps with a base path (#3092) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3093 [community ✨] - Move the WASM fix to SkiaSharp (#3088) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3089 [community ✨] - Fix .NET 9 ASP.NET Blazor issues (#3064) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3081 [community ✨] - Move the Blazor workaround into WASM (#3082) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3087 [community ✨] - Use `<WindowsSdkPackageVersion>` to set the SDK version (#3085) by @github-actions[bot] in https://github.com/mono/SkiaSharp/pull/3086 [community ✨] ## Preview 6 · 3.116.0 · 2024-11-05 · https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.5.4...v3.116.0-preview.6.1 (3 PRs) - Add support for multi-thread and/or SIMD WebAssembly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2620 - Add SKMatrix.MapPoints/MapVectors, SKPath.AddPoly overloads with Span<SKPoint> by @alexandrvslv in https://github.com/mono/SkiaSharp/pull/3030 [community ✨] - Update skia by @Redth in https://github.com/mono/SkiaSharp/pull/3026 [community ✨] (skia: mono/skia#137) ## Preview 5 · 3.0.0 · 2024-10-24 · https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.4.1...v3.0.0-preview.5.4 (18 PRs) - Revert SKBitmap.Encode with SKPngEncoderOptions to previous behavior (2.88.8) by @sungaila in https://github.com/mono/SkiaSharp/pull/3014 [community ✨] - Update bug-report.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/3022 - feat: Add support for .NET 9 by @jeromelaban in https://github.com/mono/SkiaSharp/pull/3010 [community ✨] - Use the new GLControl packages for WinForms by @mattleibow in https://github.com/mono/SkiaSharp/pull/2989 - Function pointers and LibraryImport by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2917 [community ✨] - Don't fail Mac Catalyst just so we can go green by @mattleibow in https://github.com/mono/SkiaSharp/pull/2975 - Update SDK, workloads and projects by @mattleibow in https://github.com/mono/SkiaSharp/pull/2971 - Add compatibility overloads for SKFilterQuality by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2963 [community ✨] - Make sure ANGLE reaches the nugets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2970 - Install workloads with diagnostic by @mattleibow in https://github.com/mono/SkiaSharp/pull/2969 - Improve stability of CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2959 - Fix memory leaks in MAUI views by @mattleibow in https://github.com/mono/SkiaSharp/pull/2955 - Create a rebase bot by @mattleibow in https://github.com/mono/SkiaSharp/pull/2957 - Update .NET to 8.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2927 - Download the native artifacts for _NativeAssets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2954 - Build ANGLE separately by @mattleibow in https://github.com/mono/SkiaSharp/pull/2950 - Provide Span overload for SetRectRadii by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2949 [community ✨] - Update IBufferByteAccess for AOT by @mattleibow in https://github.com/mono/SkiaSharp/pull/2920 ## Preview 4 · 3.0.0 · 2024-07-18 · https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.3.1...v3.0.0-preview.4.1 (30 PRs) - Update the signing template (#2932) by @mattleibow in https://github.com/mono/SkiaSharp/pull/2946 - Fix CI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2938 - Fix the download artifacts script by @mattleibow in https://github.com/mono/SkiaSharp/pull/2935 - Skip building Tizen on Linux by @mattleibow in https://github.com/mono/SkiaSharp/pull/2934 - Authenticate Docker (#2929) by @mattleibow in https://github.com/mono/SkiaSharp/pull/2930 - Fix AVE disposing cloned SKPaint by @jeremy-visionaid in https://github.com/mono/SkiaSharp/pull/2904 [community ✨] - Update Tizen Studio by @mattleibow in https://github.com/mono/SkiaSharp/pull/2926 - Do not stretch the background by @mattleibow in https://github.com/mono/SkiaSharp/pull/2922 - Use the SKPaint.FilterQuality for the SamplingOptions in obsolete methods by @mattleibow in https://github.com/mono/SkiaSharp/pull/2924 - Fix SKXamlCanvas on Uno Skia to use Bgra8888 by @Youssef1313 in https://github.com/mono/SkiaSharp/pull/2918 [community ✨] - Add R-Tree overload of beginRecording by @mattleibow in https://github.com/mono/SkiaSharp/pull/2889 (skia: mono/skia#129) - Re-generate APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2891 - Make unit tests more reliable by @mattleibow in https://github.com/mono/SkiaSharp/pull/2890 - Fix the GetKerningPairAdjustments API. by @pdjonov in https://github.com/mono/SkiaSharp/pull/2858 [community ✨] - Add more SKPicture APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2883 (skia: mono/skia#127) - Update skia external by @mattleibow in https://github.com/mono/SkiaSharp/pull/2885 (skia: mono/skia#126) - Add spans to the color filters by @mattleibow in https://github.com/mono/SkiaSharp/pull/2879 - fix: XamlRoot may be null when the SKXamlCanvas is unloaded by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2854 [community ✨] - Use the new license expressions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2878 - Disable more unused tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/2880 - Remove some unused dependencies by @mattleibow in https://github.com/mono/SkiaSharp/pull/2876 - Remove usage of `gsutil` by @mattleibow in https://github.com/mono/SkiaSharp/pull/2875 - Disable the unused and problematic tools by @mattleibow in https://github.com/mono/SkiaSharp/pull/2873 (skia: mono/skia#124) - Only process assemblies that exist by @mattleibow in https://github.com/mono/SkiaSharp/pull/2864 - Create similarissues.yml by @mattleibow in https://github.com/mono/SkiaSharp/pull/2851 - fix typo in README.dib by @Fxplorer in https://github.com/mono/SkiaSharp/pull/2839 [community ✨] - Expose SKBlender by @mattleibow in https://github.com/mono/SkiaSharp/pull/2830 (skia: mono/skia#123) - Update skia to m116 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2829 (skia: mono/skia#122) - GRMtlTextureInfo should have readonly getters by @mattleibow in https://github.com/mono/SkiaSharp/pull/2833 - Validate the generated interop files by @mattleibow in https://github.com/mono/SkiaSharp/pull/2831 ## Preview 3 · 3.0.0 · 2024-04-09 · https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.2.1...v3.0.0-preview.3.1 (17 PRs) - Bring Metal APIs to a common .NET TFM by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2788 [community ✨] - Add and remove the compatibility APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2789 - Expose Blazor components dpi by @beto-rodriguez in https://github.com/mono/SkiaSharp/pull/1832 [community ✨] - Installing Java is troublesome, so avoid it by @mattleibow in https://github.com/mono/SkiaSharp/pull/2815 - Fix Snapshot returning magenta color Apple Metal by @taublast in https://github.com/mono/SkiaSharp/pull/2804 [community ✨] - Clean up SKTextBlobBuilder and SKRunBuffer APIs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2775 - Add SKGLElement to SkiaSharp.Views.WPF by @gmurray81 in https://github.com/mono/SkiaSharp/pull/2317 [community ✨] - Scan the correct things correctly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2808 - Use the new connection string by @mattleibow in https://github.com/mono/SkiaSharp/pull/2802 - FabricBot: Onboarding to GitOps.ResourceManagement because of FabricBot decommissioning by @dotnet-policy-service[bot] in https://github.com/mono/SkiaSharp/pull/2799 [community ✨] - Fix 1ES Builds by @mattleibow in https://github.com/mono/SkiaSharp/pull/2785 - Use Unsafe.As for better perf by @mattleibow in https://github.com/mono/SkiaSharp/pull/2780 (skia: mono/skia#120) - Fix benchmarks project by @mattleibow in https://github.com/mono/SkiaSharp/pull/2781 - Improve compliance jobs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2772 - Migrate to 1ES PT by @mattleibow in https://github.com/mono/SkiaSharp/pull/2770 - Add a build using MSVC by @mattleibow in https://github.com/mono/SkiaSharp/pull/2769 - Fix comment by @mattleibow in https://github.com/mono/SkiaSharp/pull/2763 ## Preview 2 · 3.0.0 · 2024-02-20 · https://github.com/mono/SkiaSharp/compare/v3.0.0-preview.1.8...v3.0.0-preview.2.1 (9 PRs) - Bind Skottie's Animation Builder by @mattleibow in https://github.com/mono/SkiaSharp/pull/2630 (skia: mono/skia#114) - Add the Vulcanized compiler options by @mattleibow in https://github.com/mono/SkiaSharp/pull/2753 - Fix the script for mac by @mattleibow in https://github.com/mono/SkiaSharp/pull/2749 - Use Metal as a backend on Mac Catalyst by @mattleibow in https://github.com/mono/SkiaSharp/pull/2747 - Add SKImage.ToRawShader by @mattleibow in https://github.com/mono/SkiaSharp/pull/2748 (skia: mono/skia#119) - Do not provide invalid externs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2710 - Run APIScan after packaging on the packages by @mattleibow in https://github.com/mono/SkiaSharp/pull/2730 - Don't put metadata in package versions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2743 - Correctly package managed runtime-only files by @mattleibow in https://github.com/mono/SkiaSharp/pull/2741 ## Preview 1 · 3.0.0 · 2024-02-06 · https://github.com/mono/SkiaSharp/compare/v2.88.9...v3.0.0-preview.1.8 (47 PRs) - Reduce checkout size of submodules by @mattleibow in https://github.com/mono/SkiaSharp/pull/2739 - Implemented SKGLView by @mattleibow in https://github.com/mono/SkiaSharp/pull/2598 - Split the packaging job by @mattleibow in https://github.com/mono/SkiaSharp/pull/2737 - Add support for WinUI accelerated views by @mattleibow in https://github.com/mono/SkiaSharp/pull/2733 - Pin the Tizen workload by @mattleibow in https://github.com/mono/SkiaSharp/pull/2736 - Make PlatformConfiguration properties trimmable by @maxkatz6 in https://github.com/mono/SkiaSharp/pull/2717 [community ✨] - Avoid async void in SKXamlCanvas. by @lindexi in https://github.com/mono/SkiaSharp/pull/2720 [community ✨] - Use the version of gn that works on old Apline by @mattleibow in https://github.com/mono/SkiaSharp/pull/2711 - NuGet versions need to be < 64 characters by @mattleibow in https://github.com/mono/SkiaSharp/pull/2707 - Update changelogs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2706 - Update harfbuzz to 8.3.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2624 (skia: mono/skia#118) - SkiaSharp 3.0 is ready for a first public preview by @mattleibow in https://github.com/mono/SkiaSharp/pull/2705 - SkResources is skia_component not static_library by @mattleibow in https://github.com/mono/SkiaSharp/pull/2703 (skia: mono/skia#117) - Revert the libjpeg-turbo update and roll back to 2.1.5.1 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2699 (skia: mono/skia#115) - Only run the full compliance nightly by @mattleibow in https://github.com/mono/SkiaSharp/pull/2700 - Add the new APIScan to the pipeline by @mattleibow in https://github.com/mono/SkiaSharp/pull/2696 - Update OpenJDK to v17 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2698 - Fix Android NDK extraction by @mattleibow in https://github.com/mono/SkiaSharp/pull/2697 - Install missing Tizen packages after image update by @mattleibow in https://github.com/mono/SkiaSharp/pull/2695 - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2627 - Update README.md by @mattleibow in https://github.com/mono/SkiaSharp/pull/2625 - Update webp to 1.3.2 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2622 (skia: mono/skia#112) - fix: Restore nosimd builds for edge enhanced security and safari by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2612 [community ✨] - Include platform changes by @mattleibow in https://github.com/mono/SkiaSharp/pull/2611 - Add a human-radable diff by @mattleibow in https://github.com/mono/SkiaSharp/pull/2610 - Added GetPixelSpan() with offsets by @mattleibow in https://github.com/mono/SkiaSharp/pull/2609 - Set up dev containers by @mattleibow in https://github.com/mono/SkiaSharp/pull/2605 - Update and publish the changelogs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2604 - Fix the erroneous `>` by @mattleibow in https://github.com/mono/SkiaSharp/pull/2596 - Update docs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2597 - Re-generate all the changelogs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2592 - Update harfbuzz to 7.3.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2582 (skia: mono/skia#104) - Remove the unused arm64e architecture by @mattleibow in https://github.com/mono/SkiaSharp/pull/2587 - libjpeg is not used by @mattleibow in https://github.com/mono/SkiaSharp/pull/2588 - Update libjpeg-turbo to 3.0.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2583 - Add some more specific tests by @mattleibow in https://github.com/mono/SkiaSharp/pull/2573 - Floor outwards when converting to SKRectI by @mattleibow in https://github.com/mono/SkiaSharp/pull/2568 - Add YAML issue templates by @mattleibow in https://github.com/mono/SkiaSharp/pull/2571 - Try do a better job at detecting workloads by @mattleibow in https://github.com/mono/SkiaSharp/pull/2567 - fix(skxamlcanvas): [Wasm] Don't fail when the canvas can't be found by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2563 [community ✨] - fix(uno): Ensure that the canvas' context is active when rendering by @jeromelaban in https://github.com/mono/SkiaSharp/pull/2559 [community ✨] - Add an argument for device OS version by @mattleibow in https://github.com/mono/SkiaSharp/pull/2558 - Try and follow more dotnet versions by @mattleibow in https://github.com/mono/SkiaSharp/pull/2556 - Adding back text-based blobs by @mattleibow in https://github.com/mono/SkiaSharp/pull/2545 - Remove all [Obsolete] members and types by @mattleibow in https://github.com/mono/SkiaSharp/pull/2539 - Revert unintentional merge by @mattleibow in https://github.com/mono/SkiaSharp/pull/2540 - Modernize the repository and prepare SkiaSharp 3.0 by @mattleibow in https://github.com/mono/SkiaSharp/pull/2505 --> <!-- Generated: 2026-06-18T00:00:00Z by claude-sonnet-4.5 -->

Version 3.116.0

First stable 3.x release · Released December 3, 2024 · NuGet · GitHub Release

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

API changes · SkiaSharp API diff · HarfBuzzSharp 8.3.0

Highlights

SkiaSharp 3.116.0 is the first stable 3.x release. It rolls up the entire 3.0.0 preview train, adds the last WebAssembly and Blazor fixes that landed after Preview 5, and brings the modernized 3.x API and platform stack to production.

Breaking Changes

  • Obsolete 2.x APIs are gone in 3.x — This stable line includes the preview-era removal of members and types that had already been marked obsolete, so upgrading from 2.88 may require source changes. (#2539)

New Features

Engine

  • Shipped the stable 3.x graphics foundation — Builds on the Skia milestone 116 base, then layers on later external refreshes that landed before the stable tag. (#2829, #2885, ❤️ @Redth #3026)
  • Expanded the core binding surface — Added SKBlender, more SKPicture APIs, Skottie's Animation Builder, SKImage.ToRawShader, beginRecording R-Tree overloads, and new span-based point and path helpers. (#2830, #2883, #2630, #2748, #2889, ❤️ @alexandrvslv #3030)

Views & Platform

  • Introduced the new 3.x view stack — Brings SKGLView, accelerated WinUI views, and SKGLElement for WPF into the stable line. (#2598, #2733, ❤️ @gmurray81 #2317)
  • Modernized platform support — Adds .NET 9 support, switches WinForms to the new GLControl packages, and adopts Metal on Mac Catalyst with common Metal APIs across TFMs. (❤️ @jeromelaban #3010, #2989, #2747, ❤️ @maxkatz6 #2788)

WebAssembly

  • Broadened browser support — Adds support for multi-threaded and SIMD WebAssembly builds and folds the remaining Blazor and base-path fixes directly into SkiaSharp. (#2620, #3064, #3082, #3088, #3092)

API Surface

  • Added migration-friendly compatibility helpers — Includes SKFilterQuality compatibility overloads, color-filter spans, GetPixelSpan with offsets, and readonly Metal accessors that smooth migration from 2.x. (❤️ @Youssef1313 #2949 #2963, #2879, #2609, #2833)

Bug Fixes

Platform Support

PlatformWhat's New
🎨 Core APISKBlender, SKPicture additions, Skottie builder, shader APIs, and span overloads
🪟 WindowsAccelerated WinUI views, new WinForms GLControl packages, and WPF SKGLElement
🍎 AppleMetal on Mac Catalyst and common Metal APIs across target frameworks
🌐 WebAssemblyMulti-thread and SIMD support plus Blazor and base-path fixes
🤖 AndroidUpdated 3.x tooling and packaging for modern SDKs

Community Contributors ❤️

ContributorWhat They Did
@RedthUpdated Skia near the stable release
@alexandrvslvAdded span overloads for point mapping and polygon paths
@jeromelabanAdded .NET 9 support and fixed Uno, WASM, and XAML view issues
@maxkatz6Unified Metal APIs across TFMs
@Youssef1313Added compatibility overloads and fixed Uno BGRA rendering
@gmurray81Added SKGLElement for WPF
@taublastFixed the Apple Metal snapshot color regression
@jeremy-visionaidFixed cloned SKPaint disposal crashes
@pdjonovFixed GetKerningPairAdjustments
@sungailaRestored SKBitmap.Encode compatibility

Unreleased

Finished the stable line with WASM and Blazor fixes plus the last platform adjustments that landed after the preview train.


Preview 6 (November 5, 2024)

Added multi-threaded and SIMD WebAssembly support, new span overloads, and the final pre-stable Skia refresh.

Full Changelog


Preview 5 (October 24, 2024)

.NET 9 support, interop modernization, MAUI leak fixes, and migration-focused compatibility overloads rounded out the last 3.0-branded preview.

Full Changelog


Preview 4 (July 18, 2024)

Expanded the 3.x API surface with SKBlender, more SKPicture work, and a broad set of Uno and rendering fixes.

Full Changelog


Preview 3 (April 9, 2024)

Added WPF, Blazor, and Metal platform work while continuing the 3.x compatibility cleanup.

Full Changelog


Preview 2 (February 20, 2024)

Added Skottie's Animation Builder, SKImage.ToRawShader, and Mac Catalyst Metal support.

Full Changelog


Preview 1 (February 6, 2024)

Introduced the first public 3.x preview with new views, WinUI acceleration, obsolete API cleanup, and the initial platform reset.

Full Changelog