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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Plugin.Maui.Shimmer" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Plugin.Maui.Shimmer" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Plugin.Maui.Shimmer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Plugin.Maui.Shimmer --version 0.1.0
                    
#r "nuget: Plugin.Maui.Shimmer, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Plugin.Maui.Shimmer@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Plugin.Maui.Shimmer&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Plugin.Maui.Shimmer&version=0.1.0
                    
Install as a Cake Tool

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.

Plugin.Maui.Shimmer demo

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 Compatible and additional computed target framework versions.
.NET net10.0-android36.0 is compatible.  net10.0-ios26.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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