Pixata.Blazor
4.4.0
dotnet add package Pixata.Blazor --version 4.4.0
NuGet\Install-Package Pixata.Blazor -Version 4.4.0
<PackageReference Include="Pixata.Blazor" Version="4.4.0" />
<PackageVersion Include="Pixata.Blazor" Version="4.4.0" />
<PackageReference Include="Pixata.Blazor" />
paket add Pixata.Blazor --version 4.4.0
#r "nuget: Pixata.Blazor, 4.4.0"
#:package Pixata.Blazor@4.4.0
#addin nuget:?package=Pixata.Blazor&version=4.4.0
#tool nuget:?package=Pixata.Blazor&version=4.4.0
Pixata.Blazor 

Like many developers, I find myself writing the same Blazor components over and over again. I have gathered some of those components together in one place, and am making them available for anyone else who might find them useful.
A Nuget package is available for these components.
I sometimes waffle on about these components in my blog. No-one reads it, but it satisfies my deeply buried desire to be a writer. If you read the blog, you'll realize why the desire is still deeply buried!
There is a complementary package, which contains additional components for those who have a subscription to Telerik.
Sample project
I have added a Blazor web project to the repository, and use that to try out and demonstrate the components. It doesn't contain samples for all the components yet, but I hope to add more over time. It is deployed at test.pixata.co.uk.
Documentation
The documentation is split over the following pages...
| Page | What's in it |
|---|---|
| Styling | The stylesheet the components ship with, how to fit it to your own theme, and what changed when the Bootstrap dependency was dropped |
| Components | VirtualiseWithState, SitePageTitle, IdentityInspector, HebrewDatePicker, ListOrGridChooser and the CommonComponentBase base class |
| Containers | HtmlRaw, Busy, Loader, Confirm, Inform, MessageView, Expander and DumpCollection |
| ApiResponseView | The container that renders an ApiResponse<T>, handling loading, errors and expired sessions for you |
| Forms | The form layout components and the complete FormRowXxx rows |
| Notifications | Toast-style notifications, and how to have API errors reported through them |
| Audit viewer | The component for browsing the audit trail recorded by Pixata.AspNetCore |
| Helpers and services | PersistentStateHelper, TemplateHelper, MessageBroker, PasswordOptionsHelper, ScrollStateService, PixataBaseClientService and TryGetQueryString() |
| Payload encryption | Client-side setup for encrypting API traffic between a WASM app and an ASP.NET Core server |
| Declarative control flow | If, Switch and ForEach, which replace the Razor @if, @switch and @foreach statements |
Registering dependencies
Some components in this package require services to be registered in the DI container. To make this easier, you can use the AddPixataBlazor extension method in your Program.cs file...
builder.Services.AddPixataBlazor();
This registers the following services (all from this package)...
| Service | What needs it |
|---|---|
MessageBrokerInstance |
The MessageBroker, which lets components send messages to each other without knowing about each other |
NotificationHelper |
The notifications (sample page) |
PasswordOptionsHelper |
Showing the user your Identity password requirements |
PersistentStateHelper<T> |
Avoiding hitting the database twice when a page loads. Used by the ApiResponseView, but can be used independently |
ScrollStateService |
The VirtualiseWithState component |
TemplateHelper |
Building templates for grids and other templated components (sample page) |
PersistentStateHelper<T>does the same job as the[PersistentState]attribute added in .NET 10. This one was written around .NET 8, and is still useful for projects targetting .NET versions before 10.
It also registers Blazored.LocalStorage, which ScrollStateService needs. This package has always referenced Blazored.LocalStorage, but until v2.34.0 it left you to register it, so unless you knew to add builder.Services.AddBlazoredLocalStorage() yourself, your app fell over at startup when the container was validated. If you have already registered it (with your own options, for example), your registration is left alone.
Note that you need to do this in any Program.cs file, so if you have a mixed rendering mode (both server-side and client-side), you'll need to call AddPixataBlazor in both Program.cs files.
It is a good idea to add this line after your own service registrations, as it checks for duplicate registrations. Therefore, if you have already registered any of the services, you will see a message in your console...
A service of type TemplateHelper has already been registered
This isn't actually a problem, but removing the duplicate registration will keep the code file a bit cleaner.
The audit viewer and the payload encryption have their own registration methods, as most apps don't want them. See the pages listed above.
Styling
Don't forget to add the stylesheet, or the components will render unstyled...
<link rel="stylesheet" href="_content/Pixata.Blazor/pixata.css" />
See Styling for what's in it, and how to fit it to your own theme.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Blazored.FluentValidation (>= 2.2.0)
- Blazored.LocalStorage (>= 4.5.0)
- Microsoft.AspNetCore.Components.Authorization (>= 10.0.0)
- Microsoft.AspNetCore.Components.Web (>= 10.0.0)
- Microsoft.AspNetCore.WebUtilities (>= 10.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Identity.Core (>= 10.0.0)
- Newtonsoft.Json.Bson (>= 1.0.3)
- Pixata.Extensions (>= 2.20.0)
-
net8.0
- Blazored.FluentValidation (>= 2.2.0)
- Blazored.LocalStorage (>= 4.5.0)
- Microsoft.AspNetCore.Components.Authorization (>= 8.0.22)
- Microsoft.AspNetCore.Components.Web (>= 8.0.22)
- Microsoft.AspNetCore.WebUtilities (>= 8.0.22)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Identity.Core (>= 8.0.22)
- Newtonsoft.Json.Bson (>= 1.0.3)
- Pixata.Extensions (>= 2.20.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Pixata.Blazor:
| Package | Downloads |
|---|---|
|
Pixata.Blazor.LanguageExtComponents
A set of reusable Blazor components related to the LanguageExt Nuget package |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.4.0 | 48 | 9/22/2026 |
| 4.3.0 | 104 | 9/8/2026 |
| 4.2.0 | 112 | 9/3/2026 |
| 3.0.0 | 131 | 8/25/2026 |
| 2.33.0 | 107 | 8/18/2026 |
| 2.32.0 | 150 | 8/17/2026 |
| 2.30.4 | 145 | 7/19/2026 |
| 2.30.3 | 117 | 7/16/2026 |
| 2.30.2 | 121 | 7/16/2026 |
| 2.30.1 | 111 | 7/16/2026 |
| 2.30.0 | 122 | 7/16/2026 |
| 2.29.0 | 154 | 6/21/2026 |
| 2.28.0 | 153 | 6/8/2026 |
| 2.27.2 | 130 | 6/5/2026 |
| 2.27.1 | 130 | 6/5/2026 |
| 2.27.0 | 127 | 6/5/2026 |
| 2.26.1 | 136 | 6/1/2026 |
| 2.26.0 | 135 | 6/1/2026 |
| 2.25.0 | 131 | 5/28/2026 |
| 2.24.0 | 131 | 5/27/2026 |