Application & Data Migration Blog Posts | GAPVelocity AI

Blazor & .NET  10: A Developer's Guide

Written by Cheyenne Sokkappa | Sep 9, 2025 1:08:18 AM

.NET  10 is shaping up to be a significant release for Blazor developers. From performance optimizations to smoother UX and tighter integration, these improvements are worth knowing. We've taken all the info we could get from the .NET 10 previews for Blazor and ASP.NET Core and we're sure that there will be some more amazing features when the full .NET 10 update is released during .NET Conf this November.

P.S. Be sure to check back on this blog then when we update with all the newest Blazor features!

Here’s what stood out in the latest previews (Preview 6 and 7) and docs:

1. Leaner, Smarter Clients = Better Performance

Starting with .NET  10, the core blazor.web.js script is now served as a static asset that benefits from automatic compression and fingerprinting, leading to a 76% reduction in file size, from 183 KB down to about 43 KB. That’s faster load times, smaller bundles, and fewer stale caches to worry about.

Standalone Blazor WASM apps can now also reference fingerprinted static assets, using import maps and .js#[{fingerprint}].js syntax to ensure always-fresh loading.

2. Navigation and Routing That Don’t Break Your Flow

  • NavigateTo no longer forces the page to scroll to the top when navigating to the same page (e.g., updating query string or fragment). Smooth user experience and no unintentional jumps.

  • NavLink behavior is smarter: with NavLinkMatch.All, query strings and fragments are ignored when determining whether the link is active. Clean, predictable link highlighting without needing extra logic.

  • The [Route] attribute now includes syntax highlighting, making long route strings way easier to scan in your IDE.

3. Better Reliability & UX for SignalR/Reconnect

  • Blazor Web App templates now include a built-in ReconnectModal component: a developer-friendly reconnection UI that respects CSP policies. This replaces the older built-in UI that could violate CSP and gives you CSS/JS control.

  • Developer hooks like components-reconnect-state-changed events and a retrying state let you handle reconnection logic precisely.

4. Faster UX with QuickGrid Enhancements

  • The RowClass parameter gives you a clean way to style rows conditionally (e.g., mark archived rows with a different class) straight into your QuickGrid markup.

  • You can now programmatically close QuickGrid column options using HideColumnOptionsAsync(), enabling cleaner filtering flows.

5. Consistent Rendering and Simplified NotFound Handling

.NET 10 introduces automatic handling for .NotFound() via NavigationManager, both for static SSR and interactive render modes. That means cleaner 404 handling out of the box.

Plus, there's now a default NotFound.razor page in new templates, a nice nudge toward standardizing your error UX.

6. Persistent Client State with One Attribute

The new [SupplyParameterFromPersistentComponentState] attribute lets Blazor persist component state between pre-render and interactive modes without boilerplate. Your data is serialized and available client-side instantly.

7. Preloading, Streaming, and Diagnostics (Preview 6 Features)

Preview 6 of .NET 10 adds several productivity and diagnostics enhancements:

  • Preloading static assets and WASM preload controls like <LinkPreload /> improve startup performance.

  • Output targeting modern JS bundlers (e.g., webpack) by toggling WasmBundlerFriendlyBootConfig enables smoother integration.

  • Diagnostics improvements: server circuit tracing is now exposed as top-level activities (think Application Insights ready).

  • State persistence in Blazor Server allows users to resume where they left off even after a disconnect, with Blazor.pause() and Blazor.resume() controlling behavior.

  • Added UI validation for nested forms and collections via AddValidation() and the [ValidatableType] attribute (experimental).

8. Preview 6 → 7: Stronger Compile-Time Safety and Diagnostics

  • Required component parameters now trigger compile-time errors, helping catch missing inputs before runtime.

  • Byte-array transfers through JS interop are more efficient in WASM scenarios, which is good news for performance-intensive apps.

  • Validation in minimal APIs is tighter now with IProblemDetailsService integration and no more [FromServices] clutter.

9. Preview 7 Adds Refinement & Stability

  • APIs and component names have been cleaned up for clarity, and metrics follow OpenTelemetry conventions for easier observability.

  • WebAssembly builds now validate configured services at build time which means fewer runtime surprises.

  • Passkey authentication is more deeply integrated into Blazor Web App templates;  passwordless has never been easier.

  • Local development gets friendlier too: .localhost domains are now fully supported, helping run multiple apps securely in parallel.

TL;DR — Why All This Matters to You

Feature Area Impact for Developers
Asset performance Faster loads, cache-safe deployments
Navigation & routing Smoother UX, fewer surprises
State & reconnect UX Streamlined recoverability user flows
Productivity & validation Faster debugging, early error detection
Security & customization Stronger defaults, clearer handling mechanisms
Observability & APIs Easier monitoring and diagnostics

.NET  10 pushes Blazor towards being a battle-tested, performance-oriented, DX-enhanced modern framework. The roadmap is clear: faster, smarter, and safer.

Want help weaving these into your modernization project or leveraging them for legacy-to-modern workflows? Let’s chat