Blazor Server has been generally available since .NET Core 3.0. Blazor WebAssembly since .NET 5. Two years of production experience has produced a clearer picture of where Blazor works and where it does not.
Blazor Server for internal tools
Blazor Server's SignalR-based model gives it a tight development loop and excellent performance for internal line-of-business applications. The server-side rendering means no WASM download, fast initial load, and full .NET capability on the server. The limitation is latency sensitivity to server connectivity: UI interactions require a round trip to the server. For enterprise intranet applications where the server is close to the clients, this is not a concern. For internet-facing applications with users globally, it is.
Blazor WebAssembly for offline and edge
Blazor WASM runs the .NET runtime in the browser. After an initial download of the WASM runtime and application DLLs, the application runs client-side with no server dependency for UI interactions. This is the right model for applications that need offline capability, progressive web app (PWA) installation, or client-side performance. The initial load time (1-3 seconds for the WASM download on first visit) is the trade-off.
The JavaScript interop reality
Blazor's JavaScript interop (IJSRuntime) lets you call JavaScript from C# and C# from JavaScript. Production Blazor applications typically use JSInterop for: browser API access (clipboard, geolocation, WebSockets), third-party JavaScript libraries (charting, rich text editors), and performance-critical browser interactions. The interop is reliable but adds complexity when it is used extensively. Applications that require heavy JavaScript integration are often better served by a JavaScript framework with a .NET API backend.
Component library ecosystem
The Blazor component ecosystem in 2022 has matured: Syncfusion, Radzen, MudBlazor, and Blazorise provide comprehensive component libraries with data grids, charts, and form inputs. MudBlazor, the open source Material Design component library, has particularly strong adoption for enterprise line-of-business applications. The ecosystem gap that existed at Blazor's launch, where there were no mature component options, is closed.