.NET 8 came out on November 14th at .NET Conf. The annual cadence is now well established. The improvements in .NET 8 span performance, native AOT compilation, Blazor architecture, and the new Aspire stack.
Performance as a competitive advantage
The .NET team publishes benchmark comparisons with previous versions and with other runtimes. .NET 8 shows 15-30% throughput improvements on common web workloads compared to .NET 7. The consistent performance investment across .NET versions since .NET 5 has moved .NET from a runtime with a mixed performance reputation to one of the fastest server-side runtimes available. TechEmpower benchmark rankings for .NET have improved substantially with each version.
Native AOT reaches practical usability
Ahead-of-time compilation for .NET means the runtime compiles to native machine code before deployment. The resulting binary has no JIT compilation overhead, startup in milliseconds rather than seconds, and memory usage reduced by 30-50%. .NET 8 significantly expanded the framework surface area that is compatible with native AOT. For AWS Lambda cold starts, Azure Container Apps scaling, and other latency-sensitive serverless scenarios, native AOT changes the economics.
Blazor United
Blazor in .NET 8 introduces a unified model that lets you mix server-side and client-side rendering at the component level within the same application. A page can have components running on the server via SignalR, components running in the browser via WebAssembly, and static pre-rendered components, all composable in one Razor file. This resolves the previous either/or choice between Blazor Server and Blazor WebAssembly.
What to upgrade and when
For new projects, .NET 8 is the obvious choice. For existing .NET 6 LTS projects, the migration path is well-documented and the performance and native AOT benefits are worth the effort. .NET 6 LTS support ends November 2024, so migration planning should start now. The migration from .NET 6 to .NET 8 is generally smoother than previous major version upgrades.