Aspnetcore: Blazor Roadmap for .NET 5

Created on 5 May 2020  ·  38Comments  ·  Source: dotnet/aspnetcore

This issue is going to list the big deliverables the Blazor team is considering for ASP.NET Core 5.0 release. While we hope to deliver all of these issues, there are still many unknown and things will change as we go. Please note, that these are the major investment areas and in parallel work will be happening to bring in many smaller fixes and enhancements including community contributions.

Preview 7

  • [x] [Move Blazor to .NET 5](https://github.com/dotnet/aspnetcore/issues/20519)

Preview 8

  • [x] [CSS Isolation](https://github.com/dotnet/aspnetcore/issues/10170)
  • [x] [Support IAsyncDisposable](https://github.com/dotnet/aspnetcore/issues/9960)
  • [x] [Lazy loading of application areas](https://github.com/dotnet/aspnetcore/issues/5465)
  • [x] [Add focus support to BrowserRenderer](https://github.com/dotnet/aspnetcore/issues/17472)
  • [x] [Protected Browser Storage](https://github.com/dotnet/aspnetcore/issues/18755)

RC1

  • [x] [Blazor performance optimizations](https://github.com/dotnet/aspnetcore/issues/22432)
  • [x] [Virtualization](https://github.com/dotnet/aspnetcore/issues/23092)
  • [x] [How to upload files in Blazor App](https://github.com/dotnet/aspnetcore/issues/12205)
  • [x] [JS isolation and JSObjectReference](https://github.com/dotnet/aspnetcore/issues/23560)
  • [x] [Blazor WebAssembly prerendering](https://github.com/dotnet/aspnetcore/issues/24098)

    Potential cuts

  • [ ] [Drag & Drop](https://github.com/dotnet/aspnetcore/issues/18754)

  • [ ] [Add tooling support for required component parameters](https://github.com/dotnet/aspnetcore/issues/25055)

  • [ ] [Build performance improvements for Blazor](https://github.com/dotnet/aspnetcore/issues/22566)
  • [ ] [Required parameters to blazor components (runtime check)](https://github.com/dotnet/aspnetcore/issues/11815)
  • [ ] [Allow generic type constraints](https://github.com/dotnet/aspnetcore/issues/8433)
  • [ ] [AoT Compilation](https://github.com/dotnet/aspnetcore/issues/5466)
  • [ ] [SVG Support in Blazor](https://github.com/dotnet/aspnetcore/issues/18271)
  • [ ] [Support multiple event handlers for the same event on the same element](https://github.com/dotnet/aspnetcore/issues/14365)
  • [ ] [Restrict parent and child component hierarchy in blazor](https://github.com/dotnet/aspnetcore/issues/12302)
  • [ ] [Add ability to pass @typeparam down to child components](https://github.com/dotnet/aspnetcore/issues/7268)
Done area-blazor roadmap

Most helpful comment

@ pjmlp Your criticism is not without merit, but come on... Blazor (and WebAssembly in general) is the most surprising, exciting, awesome development in web tech - for AT LEAST 20 years! Roth, Sanderson and friends deserve our praise for making web development fun again.

And for magically improving our employability without learning anything new... think about that for a second!

And consider our .NET colleagues who've never done SPAs (angular/react/vue) - the aspnet gang just waved their magic wand and converted them from "backend devs" to "fullstack devs". Just like that... magic.


BTW: Very happy css isolation is planned. But please(!) add js isolation too. UI components that rely on js libaries (e.g. Bootstrap) should be able to declare/use css AND js within the component - otherwise the project becomes hard to maintain.

All 38 comments

Link to Required parameters to blazor components is pointing to wrong issue. I guess it should be
https://github.com/dotnet/aspnetcore/issues/11815 ?

@JvanderStad Thanks for pointing that out! Should be fixed now.

Will Blazor (Server Side) be available in future Mono implementations not only for net core runtime? For example, it would be great to launch Blazor (and other AspNetCore apps) in other cpu architectures where mono is supported.

Go team! Great job already, hope it's gonna get even better with time!

Will Blazor (Server Side) be available in future Mono implementations not only for net core runtime?

@EntityFX We don't have any plans to support Blazor Server except on .NET Core. Blazor Server is based on ASP.NET Core, which is part of .NET Core. If there are architectures where you'd like to see .NET Core supported, please let them know by opening an issue in the https://github.com/dotnet/runtime/issues repo.

Will there be backwards compatibility for QBasic? 🤪

Let's go Blazor 5.0 ! 🚀

RIPjs

Will there be any enhancements to the user management? It feels a little cumbersome having to create and redirect users to .cshtml pages in order to handle user logging in/out and user creation. Would be great if all of this could just be managed in Blazor components instead.

@KrazyTako We don't have any immediate work planned around user management, but we do our best to prioritize work based on user and community feedback, so please file an issue for any feedback you have in this area and we'll consider it.

I am a big fan of Blazor WASM, and recently implemented an enterprise application with Blazor. There was tremendous functionality in component-based features, full C# and .Net code usage, a great experience! However, after loading the app with data, I'm having some issues, mostly in performance; that I'm now hesitating if to continue or to wait till a performance boost in the upcoming versions:

  1. In complex entities, a change in a data-grid current row, will take almost 5 seconds for re-binding the form controls to the new row! (I used INotifyPropertyChanged pattern in my entities) - but the Angular Implementation is doing it instantly.
  2. All of the 3rd party data-grid components (at least those I tested), are somehow immature and slow in some features and very slow in loading data and in in-cell editing, which is a prominent feature in enterprise applications; if you click in a cell, it takes roughly 3-4 second for the textbox to appear and get ready for the user input (Telerik, Syncfusion, ...).
  3. Ultimately, I made a benchmark, comparing speed for Wasm Blazor and Angular for executing a simple function having a series of calculation (mostly increasing value of a form-binded variable in some loops). For Blazor Wasm it took 2000 ms, while for the Angular it was just 25 ms! And that was a tragic result. Over 80x slower! (All test re-done with the recent official Blazor Webassembly version)

I have heard that with the AoT feature we will get just a 5x performance gain and even that with the overhead of increase in size of the app.

So please help and say if we may have good news in upcoming versions of .Net 5 or 6 in these issues?
Thanks

_Offtopic_

Will there be backwards compatibility for QBasic? 🤪

Let's go Blazor 5.0 ! 🚀

RIPjs

You can submit a pull-request for https://github.com/microsoft/GW-BASIC

@Sherweeen We are working on various runtime performance improvements for Blazor WebAssembly in .NET 5. Blazor WebAssembly currently runs on an interpreter based runtime, which has known performance limitations that we are working to address. We are also working with various component vendor to help improve the efficiency of their component implementations.

@danroth27
Looking forward 5607 Directive support to be included

At present, a large part of the users who plan to adopt the blazor webassembly are transferred from the original WinForm, WPF, or react, angular, Vue developers, and many of the products developed are enterprise applications. If a set of multi tenant user management, registration, login and other security management mechanisms can be "out of the box", it will greatly speed up the application of blazor webaeembly.

@199621616 Do you mean something like Azure B2C?

https://docs.microsoft.com/en-us/azure/active-directory-b2c/overview

@stephenstroud

While I have been able to achieve Azure auth for my wasm app, it's not included in the wasm template like it is for server Blazor, perhaps this is what is being mentioned, in order to make it easier to setup for a new project?

@PylotLight The Blazor WebAssembly template does have support for using Azure AD or Azure AD B2C, but the options are only available from the command-line currently, not from VS. VS should enable these options in a future update.

@PylotLight You can see view some info about this in issue #21671. The current process to implement something like Azure AD B2C in Blazor Web Assembly is quite a process so hopefully the updates they mention will improve this process.

@lzinga, @danroth27 Thanks for the info but it doesn't bother me :P
I was only trying to help explain what the dude above was asking. Of course it would be great to see that functionality included in the standard templates though =].

@danroth27 While I understand the reasoning behind the roadmap decision, please take into consideration that after Silverlight, XNA, UWP (with its own .NET Flavor), EF6, WCF, .NET Native, C++/CX vs C++/WinRT, and plenty of other missteps, Microsoft has burned lot of developer love, and this influences the decisions we advise our customers on regarding technology adoption.

@ pjmlp Your criticism is not without merit, but come on... Blazor (and WebAssembly in general) is the most surprising, exciting, awesome development in web tech - for AT LEAST 20 years! Roth, Sanderson and friends deserve our praise for making web development fun again.

And for magically improving our employability without learning anything new... think about that for a second!

And consider our .NET colleagues who've never done SPAs (angular/react/vue) - the aspnet gang just waved their magic wand and converted them from "backend devs" to "fullstack devs". Just like that... magic.


BTW: Very happy css isolation is planned. But please(!) add js isolation too. UI components that rely on js libaries (e.g. Bootstrap) should be able to declare/use css AND js within the component - otherwise the project becomes hard to maintain.

@lonix1 I mentioned that I understand the reasons behind the change.

However I also wanted to pass the message that not everyone is happy with the ongoing changes from the last 10 years, which I am fully aware that Roth, Sanderson and friends aren't to blame, but they are in the position to pass the message up the chaing to Microsoft management.

The way .NET Core 1.0 => .NET Core 2.0 transition happened, landed me a project for a customer that decided to migrate some critical services from .NET away into Java and deploy them into Linux.

Maybe if he was happier, he would be willing to invest into .NET Core instead, as it was already quite capable for the desired set of service features.

So kill the messager if you will, but that won't change the perception in some circles.

rust's yew is very fast
https://jetli.github.io/rust-yew-realworld-example-app/#/

Blazor is too slow ! too slow ! too slow !
Blazor need performance !!!

@pjmlp I think it would help if you could clarify which decision in particular you're referring to. (Postponing AOT, maybe?)

@chucker All the decisions that have burned developers that happen to use .NET based technology since UWP was introduced, followed by the .NET Core reboot.

For polyglot developers .NET isn't the only technology we reach out for, just yet another option among many, so if Microsoft management decides to push roadmap items, like AOT compilation, to uncertain future, then we need to re-evaluate our business decisions accordingly, just in case AOT support WebAssembly never arrives, despite the amazing work done by Daniel and the team.

Looks like WebAssembly AOT is postponed to 6.0 release (November 2021).
https://github.com/dotnet/runtime/issues/38367#issuecomment-651117373

@Sherweeen we are starting a middle size app, and I’m very worried about the performance you said. Is your app a really data intensive one? Or what are the scenarios where this performance is present and maybe how to avoid to get into that spot? Appreciate any advice

Is Blazor server side part of .Net 5 and is it updated ?

Is Blazor server side part of .Net 5 and is it updated ?

@mg1357, yes, it's part of .NET 5 and it's getting all the component-model updates.

In one of the recent community standups, an intern demoed some virtualization capabilities which were hopefully going to land in the asp.net core 5.0 RC candidate. Is that still the case? Is there an issue that can be tracked for this functionality?

Hi, I saw #23560 was closed, does this mean we are getting JS isolation, or it is something that is not going to be covered?

PD: I don't see it in the roadmap that's why I am asking

@barahonajm - I think it's a safe bet that it has been completed and is coming in 5.0.0 RC-1 since that issue has both the Done label and 5.0.0-rc1 milestone ;)

@barahonajm Yup, JS isolation via ES6 modules will be available in the upcoming .NET 5 RC1 release :tada:.

Any update on WASM AOT?

Is there a roadmap for .NET 6? If there is, please give a link

@ivanivanyuk1993 Not yet. We're still finishing up .NET 5 and just starting on .NET 6 planning.

Where can I see docs today for:

  • CSS Isolation
  • Protected Browser Storage

@VictorioBerra Official docs are still a work in progress, but you can read up about these new features here: https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-8/

Was this page helpful?
0 / 5 - 0 ratings

Related issues

guardrex picture guardrex  ·  3Comments

aurokk picture aurokk  ·  3Comments

ipinak picture ipinak  ·  3Comments

BrennanConroy picture BrennanConroy  ·  3Comments

FourLeafClover picture FourLeafClover  ·  3Comments