SVG rendering library
Svg.Skia
Standards-minded SVG rendering across the .NET ecosystem.
Overview
A robust SVG 1.1 and static SVG 2 rendering library for SkiaSharp, with Avalonia controls and source-generation support.
Svg.Skia separates document interpretation from Skia drawing, framework controls, source generation, animation, and editing. The same asset can move from runtime content to compiled application resources without changing meaning.
SVG 1.1 support
SkiaSharp rendering
Avalonia controls
W3C and resvg parity lanes
Rendering story
One SVG model, several delivery paths.
SVG is both a document format and a rendering contract. The library keeps those concerns close enough for fidelity, yet separate enough that UI controls, build tools, and editors can share the same interpretation.
One document, four routes
- 01 · Document
Parse the meaning
Elements, paint, transforms, text, images, clipping, and filters become a reusable drawing model.
↗ - 02 · Application
Host it in UI
Avalonia controls turn the same renderer into scalable icons, content, and application artwork.
↗ - 03 · Build
Compile the asset
Source generation moves known SVG resources out of runtime parsing and into deterministic code.
↗ - 04 · Motion
Keep the scene alive
Scene and animation layers preserve the document model while adding controlled temporal behavior.
↗
Built for
Where it fits.
- Cross-platform .NET apps rendering SVG
- Asset pipelines that need code generation
- Avalonia apps using scalable icons and artwork
Compatibility & status
Broad support
Partial
Controls
Supported
In the work
Real output,
not a mockup.

Architecture
Clear layers.
Replaceable seams.
Input
Portable data and framework resources enter through focused APIs.
Preparation
Geometry, text, images, or effects become renderer-ready operations.
Rendering
The backend records and submits deterministic drawing work.
Inside Svg.Skia
One repository.
Multiple serious systems.
Explore the focused capabilities, their package boundaries, architecture, installation, and smallest useful example.
The core SVG parser and renderer turns standards-oriented SVG documents into reusable Skia pictures and exportable raster or vector output.
1 module→02 · SVG in Avalonia XAMLAvalonia SVG ControlsReady-to-use Avalonia controls load SVG sources, participate in layout and styling, and render through the Svg.Skia pipeline.
3 modules→03 · Cross-platform XAML hostsUno & MAUI ControlsUno Platform and .NET MAUI packages host Svg.Skia through native Skia canvas controls while preserving a familiar source-and-stretch API.
2 modules→04 · Compile SVG into codeSource GenerationCode generation packages transform SVG assets into strongly referenced Skia drawing code at build time, reducing runtime parsing and asset lookup.
2 modules→05 · Retained and time-based SVGScene Graph & AnimationA retained SVG scene graph and shared animation runtime separate document state, playback, invalidation, and host rendering.
2 modules→06 · Reusable authoring stackSVG EditorEditor core, SVG mutation services, Skia interaction, Avalonia views, and workspace composition form a reusable visual SVG authoring system.
5 modules→07 · Inline SVG in XAMLSvgMLSvgML packages let applications author SVG elements directly in Avalonia, Uno Platform, and .NET MAUI XAML while rendering through Svg.Skia.
3 modules→Quick start
From package
to first frame.
Choose the package workflow used by your repository, then start from the smallest working example. Replace VERSION with the current stable or prerelease version shown on NuGet.
dotnet add package Svg.Skiadotnet add package Svg.Controls.Skia.Avalonia<PackageReference Include="Svg.Skia" Version="VERSION" /><PackageVersion Include="Svg.Skia" Version="VERSION" />using Svg.Skia;
var svg = new SKSvg();svg.Load("icon.svg");canvas.DrawPicture(svg.Picture);Package surface
Start focused.
Compose as needed.
Source, docs, samples, and releases
The repository is the source of truth.
Use the current documentation and samples, inspect changes, report issues, or support continued open-source maintenance.