Plugin.Maui.Shimmer
0.1.0
dotnet add package Plugin.Maui.Shimmer --version 0.1.0
NuGet\Install-Package Plugin.Maui.Shimmer -Version 0.1.0
<PackageReference Include="Plugin.Maui.Shimmer" Version="0.1.0" />
<PackageVersion Include="Plugin.Maui.Shimmer" Version="0.1.0" />
<PackageReference Include="Plugin.Maui.Shimmer" />
paket add Plugin.Maui.Shimmer --version 0.1.0
#r "nuget: Plugin.Maui.Shimmer, 0.1.0"
#:package Plugin.Maui.Shimmer@0.1.0
#addin nuget:?package=Plugin.Maui.Shimmer&version=0.1.0
#tool nuget:?package=Plugin.Maui.Shimmer&version=0.1.0
Plugin.Maui.Shimmer
A shimmer/skeleton-loading control for .NET MAUI, drawn entirely with
Microsoft.Maui.Graphics (a GraphicsView overlay) — no third-party
rendering dependency.

How it's meant to be used
ShimmerLayout wraps placeholder shapes — plain BoxViews and
Borders standing in for a mimic of an avatar or a line of text or a card — and sweeps
the shimmer over them while data is loading.
<Grid>
<shimmer:ShimmerLayout x:Name="Shimmer" IsLoading="True">
<VerticalStackLayout Spacing="12">
<Border StrokeShape="RoundRectangle 18"
shimmer:ShimmerLayout.IsContainer="True">
<Grid ColumnDefinitions="56,*" ColumnSpacing="12">
<BoxView WidthRequest="56" HeightRequest="56" CornerRadius="28" />
<VerticalStackLayout Grid.Column="1" Spacing="8" VerticalOptions="Center">
<BoxView HeightRequest="14" CornerRadius="7" WidthRequest="140" />
<BoxView HeightRequest="11" CornerRadius="6" WidthRequest="190" />
</VerticalStackLayout>
</Grid>
</Border>
</VerticalStackLayout>
</shimmer:ShimmerLayout>
</Grid>
See example/Plugin.Maui.Shimmer.Example/MainPage.xaml for the full working demo above.
Bindable properties
| Property | Type | Default | Description |
|---|---|---|---|
IsLoading |
bool |
false |
Starts/stops the sweep animation. |
PackedView |
View |
— | Content property — the skeleton tree to shimmer over. |
Duration |
uint |
1000 |
Length of one sweep, in milliseconds. |
BackgroundGradientColor |
Color |
#B1AEB2 |
Resting color of the placeholder shapes. |
ForegroundGradientColor |
Color |
#9B969C |
Color of the sweeping highlight band. |
GradientSize |
float |
0.4 |
Width of the highlight band, as a fraction of the layout's width. |
Angle |
int |
-45 |
Direction of the sweep, in degrees (CSS gradient-angle convention). |
CornerRadiusOverlayDefault |
CornerRadius |
0 |
Fallback corner radius for children that don't set CornerRadiusOverlay. |
PaddingOverlayDefault |
Thickness |
0 |
Fallback padding for children that don't set PaddingOverlay. |
Attached properties
| Property | Applies to | Description |
|---|---|---|
ShimmerLayout.IsContainer |
Border |
A Border isn't a Layout, so by default it's captured as one shape covering its whole bounds — right for something the shimmer itself should represent (a rounded avatar), wrong for a card wrapping several placeholders. Set True to flatten the shimmer into the Border's Content instead. |
ShimmerLayout.CornerRadiusOverlay |
any child | Overrides the corner radius drawn for that element, in place of whatever was auto-detected (BoxView.CornerRadius, a Border's RoundRectangle). |
ShimmerLayout.PaddingOverlay |
any child | Grows or shrinks the drawn shimmer rect relative to that child's own bounds. |
Alternatives
Syncfusion's MAUI Toolkit ships a Shimmer view too, and it's a reasonable option if you're already pulling in the toolkit for other components. Two differences worth knowing before you choose:
- It's part of the whole Syncfusion MAUI Toolkit — adopting it for one control means taking the dependency on the full toolkit.
- Its shapes come from a fixed set of built-in presets.
Plugin.Maui.Shimmer has no dependency beyond Microsoft.Maui.Controls,
and there's no preset system: you build the skeleton out of your own
layouts and BoxView/Border shapes, so it matches whatever you're
loading exactly rather than the closest built-in shape.
Project structure
src/Plugin.Maui.Shimmer/ the library (net10.0-android, net10.0-ios)
ShimmerLayout.cs the ShimmerLayout control
Internals/ drawable, layout-flattening, and extension helpers
Handlers/ shared handler partials go here
Platforms/
iOS/Handlers/ iOS-specific handler implementation
Android/Handlers/ Android-specific handler implementation
example/Plugin.Maui.Shimmer.Example/ a MAUI app demonstrating the skeleton/real-content pattern above
Getting started
dotnet add package Plugin.Maui.Shimmer
Or open Plugin.Maui.Shimmer.slnx and run the Plugin.Maui.Shimmer.Example
project.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-ios26.0 is compatible. |
-
net10.0-android36.0
- Microsoft.Maui.Controls (>= 10.0.20)
-
net10.0-ios26.0
- Microsoft.Maui.Controls (>= 10.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 88 | 8/25/2026 |