The announcement within this post is important and I don't wish to minimize its impact. My goal is to give everyone as much advance notice as possible but I will save a more in-depth discussion for a later post.
As of last month, we officially canceled XAF's React-based SPA UI project. We have made the decision to focus our efforts on Blazor going forward.
We asked many XAF users for feedback and almost universally, most felt that Blazor was indeed the right path forward. Since our ASP.NET team is also fully committed to the Blazor platform, we believe Blazor represents our best long-term option. Truth is that we seriously considered Blazor a year ago, but unfortunately it was not in the best possible state at that time.
We can no longer ignore the value Blazor brings to the table for our .NET user base. We appreciate all the wonderful React-related feedback you've given us over the last twelve months and though cancelling a project is not fun (nor does it help anyone's bottom line) we are confident that this decision will be a win/win for everyone.
Benefits of Blazor for You and DevExpress
Though waiting another year for a Blazor UI is not the best news, our decision to pursue this new direction brings with it a number of benefits:
- XAF v19.2 will include .NET Standard 2.0 Nuget packages. This helps the Security APIs in Non-XAF apps and allows us to address more usage scenarios for both XAF and non-XAF customers.
- Blazor better fits the long term needs of our .NET users and those with little or no JavaScript, HTML and CSS experience.
- Blazor has fewer moving parts and a simpler architecture than our React SPA UI (DevExtreme React components are wrapped with a custom written UI scaffolding framework that works on top of XAF's server-side Application Model and View-based infrastructure).
- Blazor provides simpler development flow - one that is familiar to WinForms and ASP.NET devs.
- Our initial impression is that Blazor will allow us to add features more quickly and is easier to maintain. For instance, one developer can create a basic MainDemo-like app with list and detail forms in only 5 days with Blazor server-side.
- Blazor provides better performance than ASP.NET WebForms apps, because of its 'virtual DOM'-based UI updates (produces less traffic (bytes)). In our early tests, Blazor server-side spike performance is comparable to our SPA UI demos. Additionally, Blazor does not have issues with slow initial build (due to hundreds of megabytes in the node_modules folder).
To Client-side, or Server-side, that is the Question.
As of this moment, our former SPA UI team is conducting final tests and we'll soon know whether to pursue Blazor client-side or Blazor server-side. Blazor client-side hosting mode supports offline and better scalability. Blazor server-side mode is much more mature, easier to use and much faster in our syntethic tests. Needless to say, we don't want customer apps (with hundreds of business classes and controllers) to load slowly with Mono inside the browser, especially on low power mobile devices.
The race continues and no obvious winner has emerged as of yet. I will announce who wins our Blazor client-side vs server-side shootout as soon as I am able. Please stay tuned.