Blazor vs Aurelia vs React; My short story

Just wanted to share a short story:

I have used Aurelia in the past with great success. For the last year I’ve not done any frontend except for a bit of Blazor (I’m primarily a .NET developer). My business now requires a new platform with a strict deadline of 2 months.

The platform consumes a graphql API and is relatively simple (no authentication, just data visualization). I gave myself a 7 day period in order to evaluate different frontend technologies (A SPA app is a requirement).

Given my experience, I choose to investigate (with limited time in mind):

  • React: It’s popular
  • Aurelia: Much love
  • Blazor: I’m familiar with .NET and therefore it could be a good fit

After implementing a prototype in all 3 platforms:

  • React: Gosh I dislike it but it works. Using existing templates and stackoverflow I quickly had a page up and running. My dislikes are mostly related to the alien terminology and concepts- and the virtual dom. Coming mostly from Aurelia, it just didn’t make much sense to me. Nonetheless, there were react specific component libraries that got most of the job done without having to think much about it.
  • Aurelia: I had to pick between V1 and V2, knowing V1 and knowing what I could do with it, I decided to try out V2. v2 had issues and the lack of templates/SO/examples really hurts. My router issues were solved by using the aurelia-direct-router however still other issues remained. In particular, a lack of proper components. I tried the FAST design framework however there were plenty of issues (such as in the tree view) where AU and the webcomponent somehow caused conflicts. As time was running out, I had to abandon this attempt.
  • Blazor: I kinda got everything I needed to work. I have mixed opinions for my use-case. On the plus side, there are plenty of examples and component libraries that just work. In addition, it fits with my team as we all know .NET. The downside being that it mirrors many of my issues that I have with React. It’s not as performant or optimized as I would like it to be. It does not comply as well as Aurelia does with web standards, however just like React, It offered lots of Blazor (or React) specific component libraries that just worked.

In the end, I picked Blazor as It suffices our requirements and least risks our chances of missing the deadline. Ideally though I would have gone for Aurelia (either 1 or 2) however the days of bootstrap are over and we really need some components to get to work for us, which are currently severely lacking for Aurelia.

(I am aware of web components in general but I was not able to find anything comprehensive enough to cover all our needs, perhaps except for the FAST design framework which I was not able to get to work consistently, even then it seems limited).

In regards to Aurelia: I really love its design philosophy and implementation, It still needs work though. The random errors that I received were difficult to debug and I’ve yet to solve some of them. The idea of not needing a ‘Aurelia’ specific component library sounds really good on paper but as I could not get FAST Design to properly work with Aurelia (let alone found anything else that’s as comprehensive), it just tells me that it needs work.

I’d love to contribute more to this project and will try to do so, please let me know if you need insights in where I got stuck with using the FAST Design framework or anything else. Otherwise, perhaps take my story as input in how to better this project :slight_smile:

9 Likes

I guess Remix.run is the future. I started remix.run after I failed to come up with app with Aurelia 2, mostly issues related to router, etc.

Aurelia was my first choice when I was learning JavaScript frameworks but after some time I got tired of its verbosity. I don’t know if this was just me or not but it seemed like the community wasn’t very active either. However, it seems that things are changing now. I am here to explore the new changes and see what it is offering for me.

2 Likes