Back to Skiasharp

3.0.0

documentation/docfx/releases/3.0.0.md

4.150.022.2 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:46Z by generate-release-notes.py version: 3.0.0 status: preview superseded: 3.116.0 (preview only, never released as stable) branch: release/3.0.0-preview.5 diff: release/2.88.9..release/3.0.0-preview.5 prs: 122 api: self=3.0.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 (1 PRs) - 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.0.0

Major 3.x milestone preview · Preview only · Superseded by 3.116.0 · These changes later shipped in 3.116.0 · NuGet · GitHub Release

API changes · SkiaSharp API diff · HarfBuzzSharp 8.3.0

Highlights

SkiaSharp 3.0 marked the major reset for the library: a cleaned-up API surface, modernized platform support, broader GPU and view coverage, and a large wave of new bindings on the road to the first stable 3.x release. This preview train never shipped as 3.0.0 stable, but its work rolled directly into 3.116.0.

Breaking Changes

  • Obsolete 2.x APIs were removed — The 3.x line drops members and types that had already been marked obsolete, making this a real migration point for existing applications. (#2539)

New Features

Engine

  • Established the 3.x Skia foundation — Moved the new line onto the refreshed Skia milestone 116 base and continued updating the externals during the preview cycle. (#2829, #2885, #3026)
  • Expanded core graphics bindings — Added SKBlender, more SKPicture APIs, Skottie's Animation Builder, SKImage.ToRawShader, and beginRecording overloads with R-Tree support. (#2830, #2883, #2630, #2748, #2889)

Views & UI

API Surface

  • Added migration-friendly overloads and spans — Added GetPixelSpan with offsets, SetRectRadii span overloads, compatibility overloads for SKFilterQuality, and span-based color filter APIs. (#2609, ❤️ @Youssef1313 #2949 #2963, #2879)
  • Modernized native interop — Adopted function pointers and LibraryImport for the binding layer. ❤️ @maxkatz6 (#2917)

Platform

  • Updated the platform baseline for 3.x — Added .NET 9 support, switched WinForms to the new GLControl packages, and refreshed ANGLE and workload packaging for modern SDKs. (❤️ @jeromelaban #3010, #2989, #2950, #2970)

Bug Fixes

  • Fixed memory and encoding regressions — Resolved MAUI view leaks and restored the earlier SKBitmap.Encode behavior for SKPngEncoderOptions. (#2955, ❤️ @sungaila #3014)
  • Improved rendering correctness — Fixed Apple Metal snapshot color output, cloned SKPaint disposal crashes, GetKerningPairAdjustments, and background stretching behavior. (❤️ @taublast #2804, ❤️ @jeremy-visionaid #2904, ❤️ @pdjonov #2858, #2922)

Platform Support

PlatformWhat's New
🎨 Core APISKBlender, SKPicture additions, Skottie builder, shader APIs, and new span overloads
🪟 WindowsNew WinForms GLControl packages, accelerated WinUI views, and WPF SKGLElement
🍎 AppleMetal on Mac Catalyst and common Metal APIs across target frameworks
🌐 WebAssemblyBlazor DPI support plus Uno and canvas reliability fixes
🤖 AndroidUpdated toolchains and packaging for the 3.x line

Community Contributors ❤️

ContributorWhat They Did
@jeromelabanAdded .NET 9 support and fixed Uno, WASM, and XAML view issues
@maxkatz6Modernized interop and unified Metal APIs
@Youssef1313Added compatibility overloads and fixed Uno BGRA rendering
@gmurray81Added SKGLElement for WPF
@beto-rodriguezExposed Blazor component DPI
@taublastFixed the Apple Metal snapshot color regression
@jeremy-visionaidFixed cloned SKPaint disposal crashes
@pdjonovFixed GetKerningPairAdjustments
@sungailaRestored SKBitmap.Encode compatibility
@RedthUpdated Skia late in the preview cycle

Unreleased

Updated Skia once more ahead of the later handoff into the stable 3.116 release.


Preview 5 (October 24, 2024)

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

Full Changelog


Preview 4 (July 18, 2024)

Expanded the 3.x API surface with SKBlender, more SKPicture work, better Uno behavior, and a broad set of reliability 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.0 preview with new views, WinUI acceleration, obsolete API cleanup, and the initial wave of 3.x platform work.

Full Changelog