Avalonia animation controls
Lottie
Move from packaged motion assets to custom composition and shader animation with the same control vocabulary.
Overview
Lottie playback plus reusable frame-loop, composition-backed Skia, and animated shader controls for Avalonia.
Lottie is a compact family of Avalonia animation controls: a Skottie-backed asset player, a minimal frame-loop base, a composition-backed Skia surface, and a runtime SKSL shader control. Applications can start with design assets and progressively own more of the render loop.
Lottie/Skottie playback
Custom frame-loop control
Composition-backed Skia rendering
Animated SKSL shaders
Built for
Where it fits.
- Avalonia applications using Lottie motion assets
- Control authors building custom animation
- Skia and shader-driven visualization tools
Compatibility & status
Controls
Rendering
Runtime effects
Supported
In the work
Real output,
not a mockup.

Architecture
Clear layers.
Replaceable seams.
Asset player
Lottie JSON becomes Skottie vector animation.
Frame loop
AnimationControl supplies lifecycle, timing, and invalidation.
Composition
A Skia surface adds stretch, loop normalization, repeat, and static redraw.
Shader
SKSL runtime effects bind time and custom uniforms.
Inside Lottie
One repository.
Multiple serious systems.
Explore the focused capabilities, their package boundaries, architecture, installation, and smallest useful example.
An Avalonia control loads Lottie JSON assets and renders their vector animation through SkiaSharp Skottie inside the normal control tree.
1 module→02 · Minimal custom frame loopAnimationControlA lightweight base control owns attachment, frame scheduling, delta time, invalidation, and rendering so custom animation logic only overrides the meaningful hooks.
1 module→03 · Skia and SKSL motion surfacesComposition & Shader AnimationCompositionAnimatedControl supplies stretch-aware Skia rendering, elapsed normalization, repeat counts, per-frame updates, and static redraw; ShaderAnimatedControl adds URI-loaded SKSL runtime effects and uniform binding.
2 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 Lottie<PackageReference Include="Lottie" Version="VERSION" /><PackageVersion Include="Lottie" Version="VERSION" /><Lottie Path="/Assets/Success.json" />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.