Blazor WebAssembly runs C# in the browser. Your components, your models and your validation are the same types you would write on the server, compiled to WebAssembly and shipped to the client.
That is genuinely useful and it is not free. The download is larger than a JavaScript bundle, the first render is slower, and anything the browser API does natively still needs an interop call. The articles below say so where it matters rather than pretending otherwise.
The order follows how an application grows: components and binding first, then routing and forms, then talking to an API, then securing it, then getting it deployed. Authentication takes up a lot of room here because Blazor WebAssembly runs on the client, so nothing it holds can be trusted and every call has to carry proof.
Components, Binding and Lifecycle
The building block and the hooks around it. Read the lifecycle article early; a surprising number of Blazor bugs are a method running at the wrong moment.
- Required Parameters in Blazor WebAssembly
- Partial Classes, RenderFragment and Lifecycle in Blazor WebAssembly
- Blazor WebAssembly Component Virtualization with ASP.NET Core API
- CSS Isolation in Blazor Applications
- Blazor Server vs Blazor WebAssembly, Pros and Cons
- Blazor Components with Arbitrary and Cascading Parameters
- Custom Event Arguments in Blazor WebAssembly
- How to Use Sections in Blazor
- Working with Binding in Blazor Applications
Routing, Navigation and Query Strings
Moving between pages and carrying state while you do it.
- Blazor Routing – Page Directive, Navigation Manager, Nav Links
- Creating Blazor Material Navigation Menu
- How to Use Query Strings in Blazor WebAssembly
Forms and Validation
Blazor reuses the same validation attributes as the server, which is one of the strongest arguments for the whole model.
- Blazor Material Form Creation with File Upload and Dialogs
- Complex Model Validation in Blazor Applications
- Custom Validation in Blazor WebAssembly
- Blazor WebAssembly Forms, Form Validation, and @ref Directive
- How to Use onchange Event with Select DropDown in Blazor
- Validate User Input With Regular Expressions in Blazor WebAssembly
Calling an API With HttpClient
Fetching data from a Web API, including the error handling that is easy to leave until it is too late.
- Blazor WebAssembly HttpClient – Consuming a Web API
- Global HTTP Error Handling in Blazor WebAssembly
- PUT, DELETE Actions and Calling JavaScript Functions in Blazor WebAssembly
- Using Access Token with Blazor WebAssembly HttpClient
- How to Cancel an HTTP Request on Leaving a Blazor Component
Authentication and Authorization
The biggest section, and deliberately so. A WebAssembly client holds no secrets, so everything here is about proving identity to a server that does.
- AuthenticationStateProvider
- Blazor WebAssembly Authentication with ASP.NET Core Identity
- Keycloak Authentication With ASP.NET Core Web API and Blazor WebAssembly
- Authentication in Blazor WebAssembly Hosted Applications
- Refresh Token with Blazor WebAssembly and ASP.NET Core Web API
- Role-Based Authorization with Blazor WebAssembly
- Google Authentication in Blazor WebAssembly Hosted Applications
- Blazor WebAssembly Role-Based Security with IdentityServer4
- Facebook Authentication in Blazor WebAssembly Hosted Applications
- Attribute-Based Access Control with Blazor WebAssembly and IdentityServer4
- Blazor WebAssembly Registration Functionality with ASP.NET Core Identity
- Azure Active Directory B2C with Blazor WebAssembly Hosted Apps
- Implement Roles With Keycloak, Web API and Blazor WebAssembly (RBA)
- How to Secure Blazor WebAssembly with IdentityServer4
- Using Azure Active Directory to Secure a Blazor WebAssembly Standalone App
- Using Roles in Blazor WebAssembly Hosted Applications
- Using App Roles With Azure Active Directory and Blazor WebAssembly Hosted Apps
- Using Azure Active Directory to Secure Blazor WebAssembly Hosted Apps
Tables, Paging, Searching and Sorting
Showing a list of things and letting a user work through it.
- Blazor Material Table – Server-Side Paging, Searching, Sorting
- Blazor WebAssembly Pagination with ASP.NET Core Web API
- Blazor WebAssembly Searching with ASP.NET Core Web API
- Using Fluxor for State Management in Blazor
- Sorting in Blazor WebAssembly and ASP.NET Core Web API
Files, Clipboard and Browser APIs
The places where the browser still has to do the work.
- Upload Files With Drag & Drop or Paste in Blazor
- File Upload with Blazor WebAssembly and ASP.NET Core Web API
- Download Files from Azure With Blazor WebAssembly
- Upload Files to Azure with .NET Core Web API and Blazor WebAssembly
- Copy To Clipboard in Blazor WebAssembly
- How to Use Browser Functionalities with Blazor WebAssembly
JavaScript Interop
Calling out to JavaScript and back again, which you will need sooner than you expect.
- Wrapping JavaScript Libraries with C# in Blazor WebAssembly
- How to Call JavaScript Functions with C# in Blazor WebAssembly
- Using JSInterop to Pass HTML Elements and Handle JS Errors
- How to Call C# Methods from JavaScript in Blazor WebAssembly
Performance and Deployment
Making the download smaller and getting the thing hosted.
- Localization in Blazor WebAssembly Applications
- Publishing Blazor WebAssembly App to IIS
- Blazor WebAssembly Ahead of Time Compilation
- Lazy Loading in Blazor WebAssembly
- Deploying Blazor WebAssembly into Azure Static Web Apps
Testing and Error Handling
Proving a component behaves, and catching it when it does not.
- Introduction to Testing Blazor WebAssembly With bUnit
- Blazor WebAssembly Exception Handling With Error Boundaries
- Blazor Material UI – Configuration and Theme Customization
- Using MudBlazor to Create Reach and Functional Product's Details Page
- Creating Real-Time Charts with Blazor WebAssembly and SignalR
Where to Go Next
Blazor WebAssembly needs a server on the other end:
Decide early whether the application is hosted or standalone. Almost every authentication article below branches on that one choice, and changing it later means redoing the login.
