fluentui-blazor
Guide for using the Microsoft Fluent UI Blazor component library (Microsoft.FluentUI.AspNetCore.Components NuGet package) in Blazor applications. Use this when the user is building a Blazor app with Fluent UI components, setting up the library, using FluentUI components like FluentButton, FluentData
By github · 9,027 installs
npx skills add github/awesome-copilot --skill fluentui-blazor
Source repository · Upstream listing
Fluent UI Blazor — Consumer Usage Guide
This skill teaches how to correctly use the Microsoft.FluentUI.AspNetCore.Components (version 4) NuGet package in Blazor applications.
Critical Rules
1. No manual <script or <link tags needed
The library auto loads all CSS and JS via Blazor's static web assets and JS initializers. Never tell users to add <script or <link tags for the core library.
2. Providers are mandatory for service based components
These provider components MUST be added to the root layout (e.g. MainLayout.razor ) for their corresponding services to work. Without them, service calls fail silently (no error, no UI).
3. Service registration in Program.cs
ServiceLifetime rules:
ServiceLifetime.Scoped — for Blazor Server / Interactive (default)
ServiceLifetime.Singleton — for Blazor WebAssembly standalone
ServiceLifetime.Transient — throws NotSupportedException
4. Icons require a separate NuGet package
Usage with a @using alias:
Pattern: Icons.[Variant].[Size].[Name]
Variants: Regular , Filled
Sizes: Size12 , Size16 , Size20 , Size24 , Size28 , Size32 , Size48
Custom image: Icon.FromImageUrl("/path/to/image.png")
Never use string based icon names — icons are strongly typed classes.
5. List component binding model
FluentSelect<TOption , FluentCombobox<TOption , FluentListbox<TOption , and FluentAutocomplete<TOption do NOT work like <InputSelect . They use:
Items — the data source ( IEnumerable<TOption )
OptionText — Func<TOption, string? to extract display text
OptionValue — Func<TOption, string? to extract the value string
SelectedOption / SelectedOptionChanged — for single selection binding
SelectedOptions / SelectedOptionsChanged — for multi selection binding
NOT like this (wrong pattern):
6. FluentAutocomplete specifics
Use ValueText (NOT Value — it's obsolete) for the search input text
OnOptionsSearch is the required callback to filter options
Default is Multiple="true"
7. Dialog service pattern
Do NOT toggle visibility of <FluentDialog tags. The service pattern is:
1. Create a content component implementing IDialogContentComponent<TData :
2. Show the dialog via IDialogService :
For convenience dialogs:
8. Toast notifications
FluentToastProvider parameters: Position (default TopRight ), Timeout (default 7000ms), MaxToastCount (default 4).
9. Design tokens and themes work only after render
Design tokens rely on JS interop. Never set them in OnInitialized — use OnAfterRenderAsync .
10. FluentEditForm vs EditForm
FluentEditForm is only needed inside FluentWizard steps (per step validation). For regular forms, use standard EditForm with Fluent form components:
Use FluentValidationMessage and FluentValidationSummary instead of standard Blazor validation components for Fluent styling.
Reference files
For detailed guidance on specific topics, see:
[Setup and configuration](references/SETUP.md)
[Layout and navigation](references/LAYOUT AND NAVIGATION.md)
[Data grid](references/DATAGRID.md)
[Theming](references/THEMING.md)