diff --git a/docs/docs/lottie-blazor.md b/docs/docs/lottie-blazor.md
new file mode 100644
index 0000000000..60ba726ea7
--- /dev/null
+++ b/docs/docs/lottie-blazor.md
@@ -0,0 +1,232 @@
+# Blazor Lottie Animations
+
+Play Lottie animations in Blazor WebAssembly apps with [`SKLottieView`](xref:SkiaSharp.Extended.UI.Blazor.Controls.SKLottieView). This component wraps the shared [`SKLottiePlayer`](lottie-player.md) engine with a Blazor-friendly API — just point it at a JSON URL and it handles loading, frame updates, and rendering.
+
+For building custom animated canvases beyond Lottie, see [`SKAnimatedCanvasView`](#custom-animations-with-skanimatedcanvasview) below.
+
+## Quick Start
+
+### 1. Add the NuGet package
+
+```bash
+dotnet add package SkiaSharp.Extended.UI.Blazor
+```
+
+### 2. Add the namespace
+
+In your `_Imports.razor`:
+
+```cshtml-razor
+@using SkiaSharp.Extended.UI.Blazor.Controls
+```
+
+### 3. Add the component
+
+```cshtml-razor
+
+ Duration: @lottieView.Duration.TotalSeconds.ToString("0.00")s | + Progress: @lottieView.Progress.TotalSeconds.ToString("0.00")s | + @(lottieView.IsComplete ? "Complete ✓" : "Playing") +
+} + +@code { + private SKLottieView? lottieView; +} +``` + +> **Tip:** Bind `AnimationUpdated` to `StateHasChanged` so the UI refreshes with each frame. Without this, the displayed progress won't update live. + +## Events + +| Event | Type | Description | +| :---- | :--- | :---------- | +| `AnimationLoaded` | `EventCallback` | The animation JSON was loaded and parsed successfully | +| `AnimationCompleted` | `EventCallback` | All repeats finished (never fires for infinite loops) | +| `AnimationFailed` | `EventCallback