A lab manual for Blazor and MudBlazor
Learn by changing working examples.
Nine labs that explain how Blazor behaves and why. A working example of 84 MudBlazor components, with every parameter combination laid out side by side. 10 complete pages built from those parts. Read the source beside each one, change one thing, and see what happens.

Contents
Three ways in. Start with the labs if Blazor is new to you, or go straight to the components and samples if you are here for MudBlazor.
Labs
9 focused experiments, about 3 hours in all. Each states an objective, a common mistake and an exercise.
- State and lifecycle10 min
- Forms and transactional dialogs15 min
- DataGrid experiments20 min
- API and server paging20 min
- SQLite notebook25 min
- Authentication and policies20 min
- Localization and accessibility15 min
- Files and cancellable work25 min
- Observability and deployment20 min
Components
84 components with live examples, combination tables and playgrounds that write the markup for you.
- Actions9
- Inputs and forms12
- Pickers and uploads5
- Data display17
- Charts8
- Feedback and overlays13
- Navigation9
- Layout and structure9
- Theming and globalization2
Page samples
Whole screens composed only from MudBlazor components, with synthetic data and real interactions.
- Account settingsopen
- Admin recordsopen
- Analytics dashboardopen
- Checkoutopen
- Inboxopen
- Kanban boardopen
- Pricingopen
- Sign inopen
- Storefrontopen
- User profileopen
How to use this manual
Every page is built for one small, repeatable experiment. Reset controls take you back to a known state, so you can try again with a new guess.
- Predict. Read the objective and decide what should happen before you touch anything.
- Try. Change a value, add latency, cancel an operation, switch the culture.
- Inspect. Open the code beside the example and connect the behavior to the source.
- Reset. Return to a known state and repeat with a new guess.
One library, two hosts
The same Razor class library renders on the server and in your browser. Where a lab needs a server, the browser version uses a stand-in and says so.
Run it on your machine
- Install the .NET 10 SDK named in
global.json. - Clone, restore exactly the locked packages, and run.
- Open
http://localhost:5000/labsand start with the counter.
Getting started covers HTTPS, Docker and the WebAssembly host.
$ git clone https://github.com/jonathanperis/blazor-mudblazor-starter.git
$ cd blazor-mudblazor-starter
$ dotnet restore --locked-mode
$ dotnet run --project src/WebClient