Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

One of the projects I am working on is written in Silverlight (5.0) and it is scheduled to be migrated this year, as Silverlight support will end in 2021 and some requested features are harder to implement in Siverlight (responsive design, drawing some trees etc.).

Now, we have a decent experience with ASP.NET MVC, so back-end choice is clear. However, front-end part is not that easy to decide. I was thinking about using AngularJS or ReactJS.

I know that a similar question has been asked and answered, but my case is not a very general one and I will try to provide as many details as I can:

1) Current architecture - almost all Silverlight code uses MVVM pattern and most of the members in the team understand it well

2) Application modules

a) Administration - about 15 views with varying complexity. Many components are reused here and the most complex parts deal with displaying tree lists with thousands of items that allow incremental search and moving sub-trees to other tree lists. Also some data are displayed in complex grids that can handle multiple sorting, column drag and drop etc.

b) Operational - most part of the operational consist in some "sheets" that display tens of thousands of cells and allow Excel like functionality. Most of the data is read-only (fetched from DB, aggregations come directly from a Cube) and formulas are stored in some XML files and applied using IronPython. This part will be migrated in the second phase, as it is very complex.

3) Already tried frameworks:

a) jQuery - various small functionalities

b) ReactJS - just this tutorial

c) AngularJS - used basic features (binding, directive, factories, no fancy stuff like services or routing) in other projects and we got along quite easily (documentation and SOF were really great). Also used ui-grid with some of its advanced features like column freezing, multiple sorting, status saving and restoring

4) Other particularities

  • Learning curve issues are important as most team members have little experience in front-end development

  • This is supposed to be a very large (and expensive) change in the application, so it should be able to live for several years without other big changes

  • New application should embed D3.js graphs

  • We will not create a SPA. Instead we will use MVC's views and routing, deliver static content and use JS framework for responsiveness.

I have read this article, but it is still hard to make a decision:

  • coming from MVVM pattern, I have a bias towards Angular.

  • Angular2 seems to have some cool stuff, but it has breaking changes

  • There is serious criticism against Angular, as you can see here. Also, an more experienced developer of mine warns about many problems he has encountered during developing a SPA POC with Angular. Also, Angular2 breaking changes sustain the idea that Angular1 is going in the wrong direction. However, replacing Angular needs dealing with a lot of stuff, as mentioned here.

My question is: provided the context above, what do you think it will be the best choice in the short/medium term?

share|improve this question

closed as primarily opinion-based by Pointy, NightOwl888, bummi, theDmi, Wiktor Zychla Jan 2 at 10:38

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Is your plan to show the answers you get here to your team to justify a choice? I don't think your scenario is so unique that Angular / React is more "appropriate". I say React because it requires less mental effort, and splitting your app into many components prevents conflicts when working in teams. – azium Jan 1 at 20:10
    
Have you considered a rich framework like extjs? – Wiktor Zychla Jan 1 at 20:25
    
@azium - I do not think that my scenario is so unique, but it is also pretty complex that some help from the community will be greatly appreciated. Besides technological pros and cons, there is also a problem with front-end resources in the team (most of the team has experience in back-end), so we have less time for experimenting with various frameworks. – Alexei Jan 1 at 21:55
    
@Wiktor Zychla - I have completely forgotten about ExtJS after working with it several year ago (back then, the R&D department was taking care of core features and integration and it was quite painful to make work in all major browsers). However, things changed a lot since then and their components seem very good (just spotted examples.sencha.com/extjs/6.0.1/examples/classic/desktop/…). I will check what they grids and tree views they provide, since those are heavly used in our application. Thanks! – Alexei Jan 1 at 21:58
    
@Alexei: extjs is a mature and well-tested framework nowadays. The DOM compatibility is excellent and their selection of components should give you a rapid start. We've rewritten several Silverlight apps to extjs with no major issues and the availability of the component library was one of the main reasons for this framework. – Wiktor Zychla Jan 2 at 10:37