As ES6 edges closer to evergreen browser support by the estimated mid–2015, many are wondering given the MASSIVE inevitable API breaking changes in Angular 2.0 if it is worth learning the current version of Angular (1.3 at the time of writing this).
The fear around Angular 2.0 I think is overblown. While it will be a complete rewrite, your newfound Angular 1.x skills aren’t just going to go to waste, especially considering Angular 2.0 might not even be released until late 2015/early 2016.
At the moment the only choice you have is to either use AngularJS as it currently stands or wait until late this year/early next year (if you have that luxury) to build your application using 2.0 but risk running into inevitable early adoption issues.
The 1.x branch isn’t going anywhere… yet
People are panicking, but Angular’s version 1 branch will continue to work for years to come. Just because a new version comes out doesn’t mean you need to start using it right away. The existing code doesn’t just stop working.
The Angular team haven’t abandoned the version 1 branch in light of the impending 2.0 release either. Version 1.4 is due out shortly and it comes with a whole bunch of new changes and improvements; forms, internationalisation fixes, tweaks to the $http client and more.
It appears that the 1.x branch will have at least a couple of years worth of updates and support which should be more than enough for developers to migrate over to the new version. And even then, you don’t have to upgrade. The old version will keep on working fine.
Angular 1.x is stable
When the new version of Angular hits, it would be unfair to expect a battle tested and stable version straight out the gate (especially considering it is a complete rewrite). While some existing problems might be fixed, new ones will take their place.
The benefit of the current version of AngularJS is that it is relatively stable. We are aware of mostly every single caveat that it has (like too many watchers slowing down your app).
Some people still support IE8
Not all of us have the luxury of being able to write-off Internet Explorer 8. I recently worked on a large project that used Angular 1.2 because of the need to support IE8.
Version 1.3 and onwards dropped support for IE8 and presumably, Angular 2.0 is definitely not going to support IE8 due to most ES6 functionality needing IE9+ for the transpiled ES5 output.
This means we are going to have a subset of people for potentially the next few years using Angular 1.2 because of the need to use IE8.
Conclusion
It is definitely worth learning AngularJS pre-version 2.0 rewrite. Even though version 2.0 is going to heavily use ECMAScript 6 features and be a different framework, your newly learned skills won’t be immediately thrown out the window.
Some of the concepts in the current version of Angular could make their way into the new version, albeit in a different form due to a new syntax, you should be able to spot differences easier after learning Angular 1.x.
As it stands you probably have another 2 years before you need to consider switching over to the 2.0 branch. Which in development land is a VERY long time for anything related to the front-end.
I have the same dilemma as yours, but I still didn’t fine a definite answer.
Your post covers some good points, but in my opinion it misses 2 important ones:
1. You wrote “At the moment the only choice you have is to either use AngularJS as it currently stands or wait until late this year…”. No, it’s not. There are other options like opting for “older” frameworks like BackBone that, although not as “all-rounders” as AngularJS, are pretty stable and less probable to break in new versions (nothing for granted but they’re pretty mature and less likely to introduce massively breaking changes). Alternatively there’s React.js that introduces a very modern and feasible option, together with other micro-frameworks.
2. IE8 – many developers don’t need to support IE8 and hence the question is still relevant for them. Those who have to support IE8 will stay with AngularJS 1.2 or any other framework and won’t have the dilemma at all. By the way – by the time AngularJS 2.0 will come out, it’s not even sure that those who need to support IE8 today will still need to support it. So the question on whether to wait for 2.0 is even relevant for them.
@Ofer,
Thanks for commenting mate. As for your points, here are my thoughts.
1) There are definitely other choices besides Angular, this post was more specifically addressing the fact you can’t use Angular 2.0 yet, so you either have to use Angular 1.x or a different framework/library entirely. I didn’t mean for it to come across as Angular being the only choice as obviously there are tonnes of choices out there. I was just trying to point out there is only one version of Angular, so if you want to use Angular you have no choice but to use the 1.x version.
2) While many developers might not need to support it, there are some developers like myself who on the last two large projects I worked on using Angular needed to support IE8. Who knows by the time Angular 2.0 does release, IE8 support might only be the bane of a small minority of developers existence.
My take on it (if it wasn’t entirely clear in the post) was there is no reason to not use Angular as it currently stands. Sure the syntax is going to change, and you’ll be writing your directives and whatnot using ES6 syntax, but version 1.4 is going to be released soon and will be supported long enough for you to migrate over if you choose to do so.
It wouldn’t matter if the Angular team announced tomorrow that they’re going to stop supporting Angular 1 after version 1.4 (at least not to me). If it fits your needs and it works: it works. A framework like Angular won’t just stop working if development comes to a halt, at least not right away.
We don’t need to use the latest and greatest frameworks or libraries. When Angular 2 is released, I would wait at least six months before using it in a production environment anyway in-case there are issues being a rewrite and all.
I love React.js. I have been using it more and more lately, it works exceptionally well within Angular. I like the idea of being able to use it in Node.js on the server side and render out my application really quickly and effectively.
Thanks for stopping by and commenting.
This might be of interest to the unfortunate IE8 supporting crowd, a build of Angular 1.3 which works with IE8:
https://github.com/fergaldoyle/angular.js-ie8-builds
Thanks for this. some good information, Its still rubbish that even in 2015 we are still held back with poor browsers.
I had this question – and realized that Angular 1.0 is still a great choice. One major reason I didn’t see here is the huge number of Angular directives on github. Before you move to angular 2.0, you really ought to wait until there are more community modules/directives until you switch.