Description
This issue represents the list of major investments our team will focus on during the .NET 9 timeframe. It doesn't include all the features and bug fixes we'll be tackling during this time.
Note that this is an aspirational list of what we hope to get to. Many of these items will require thorough investigation and design, which can result in changes to our plans. We'll end up cutting some things and making changes as we go, but we'll try to keep this issue up to date to reflect on our progress and learnings.
There's a lot to discuss in the ASP.NET Core roadmap, and GitHub issue comments aren't great for multi-topic conversations, so we've set up the ASP.NET Core Roadmap for .NET 9 discussion to better handle these threaded conversations.
You can best express your support for specific GitHub issues by giving a 👍 reaction on the original post in the issue and by commenting with details about your scenarios and requirements. We try our best to prioritize work based on broad community support and feedback.
Servers/Scalability
- [Epic] Improve the Data Protection experience for apps with multiple instances #53654
- Epic: IDistributedCache updates in .NET 9 #53255
- Improve Kestrel metrics #53358
Minimal APIs
Blazor
Static Web Assets improvements
- Optimize file delivery for web apps #52824
- Append Hashes To Blazor Published Files #47575
- Move integrity support to the Static Web Assets SDK from the Blazor WebAssembly SDK #47000
Blazor Web improvements
- Add an API to tell you the current render mode #49401
- Provide a mechanism for rendering Blazor pages statically even when the app is set up for interactive rendering #51046
Activity
ghd258 commentedon Nov 17, 2023
Ability to run multiple Blazor server / Web assembly apps in the same document (micro-frontends)
#38128
thisisnabi commentedon Nov 20, 2023
Add validator for Minimal APIs can be great!
Something like this:
https://github.com/thisisnabi/Endpoints.FluentValidation
gabephudson commentedon Dec 2, 2023
I would love to see the ASP.NET session state provider work with InteractiveServer components in Blazor Web so we can share session state across RenderMode boundaries.
gabephudson commentedon Dec 2, 2023
I would like to be able to specify a "Static" RenderMode for a Blazor component/page. This is usefull when a global (higher level) RenderMode has been set to InteractiveServer.
marinasundstrom commentedon Dec 2, 2023
@gabephudson
Do you mean that you don't want any interactivity for that specific component in an otherwise interactive component tree?
What benefits or value would that bring to you?
marinasundstrom commentedon Dec 2, 2023
@ghd258
That would require to load multiple .NET runtimes within the browser or on the server. The server scenario seems more realistic.
I just can't see how you could even make this a great developer experience.
You are already able to host multiple components on a page, provided that they are in the same app.
davidfowl commentedon Dec 2, 2023
@thisisnabi We're discussing adding data annotations validation support to minimal APIs (via filters): #46349.
For fluent validation, there are much better implementations (e.g.):
gabephudson commentedon Dec 2, 2023
Fair question; let me elaborate. This need has been requested frequently in the community as we are upgrading "classic" Blazor apps to the dotnet 8 "Blazor Web" model.
There are several reasons one would want to do this, but the most pervasive today is when one has a Blazor Web application that is primarily an SPA, so one sets "global" interactivity (typically on the Routes component, as in the MS templates), but needs certain pages to render statically.
A good example of this would be the authentication pages, which require access to the HttpContext, need to be static. This cannot currently be achieved (in a "global" interactive app) without having to intercept a path from the HttpContext in app.razor and setting the RenderMode based on the path. In fact, this "hack" is what is being used to force the authentication pages to render statically in the MS Blazor Web Global Interactive Sever template. There are many other scenarios where one would need to "overwrite" a "global RenderMode" to static.
This is important now, because most UI libraries are currently incompatible with the SSR Blazor modes, and porting applications to the Blazor Web model typically requires one to set a global interactive RenderMode for them to continue to function. We would, however, like an easier way to set pages to uses the static mode in these scenarios.
To your point, I think this is much more useful on a per page level component.
Please see this GitHub issue from Daniel Roth...
#51046
Hopefully this makes it into 9 (or sooner). I think it will really help porting applications and was surprised to find it wasn't included currently. :)
marinasundstrom commentedon Dec 2, 2023
@gabephudson Thanks for clarifying. I agree with you on the problems expressed.
Static rendering did break a lot for me. I have been using MudBlazor, and this library is relying on interactivity, and doesn't work well with SSR. It is OK when you understand the problem and how to solve it. But I think that devs who are not into the mechanics of Blazor would get frustrated.
The SSR story needs to be finished. And it in involves giving guidance to component library authors.
andrew-vdb commentedon Dec 3, 2023
Give us crystal clear answer if mvc will support aot or not
sanamhub commentedon Dec 4, 2023
Removal of jQuery (maybe bootstrap as well) and revamp of default templates for ASP.NET Core MVC
sajjadarashhh commentedon Dec 5, 2023
Make full support for native aot would be nice
34 remaining items