On the eve of Google I/O 2015, Angular 1.4 (jaracimrman-existence) was released, capping off six months of planning and development. While plenty of good code made the cut, one feature critical to the future of Angular was pushed back.
In a blog post, Pete Bacon Darwin describes version 1.4 as a "community driven release" with lots of "feature enhancements and performance improvements." During the planning and early implementation phases of version 1.4, a new router received top billing. At ng-conf 2015, the Angular team announced that this new router was key to the migration from version 1.X to 2.X.
Unfortunately, the team bumped this feature to the 1.5 release. In the post, Darwin says the feature needs more time. "[The new router was] not ready for the important task of simplifying the migration path from Angular 1 to Angular 2. Rather than delay the 1.4 release further, we decided to move [it] into the 1.5 release."
Instead, the feature getting top billing this time around is animations. While the exposed API is largely the same, central to the refactored feature is a new service called $animateCss. The new service removes the need to use jQuery or GreenSock for animations and gives developers a new way to combine JavaScript and CSS animations. Matias Niemelä, the driving force behind Angular's animation stack, spoke about the new animation system earlier this year at ng-conf.
One interesting change is in the way jQuery is integrated into Angular. A new directive, ng-jq
, lets developers specify which version of jQuery to use or to always use jqLite. In the past, if the full jQuery library was present, Angular would use it. Now, developers can bypass the presence of jQuery. Here's how the new directive is used:
<html ng-app ng-jq>
This change has been discussed as far back as 2011. Developers with apps that require an old version of jQuery complained that the existence of that old jQuery broke code in the Angular app. By allowing developers to load a specific jQuery or even jqLite instead, Angular apps can control their own jQuery destiny.
In a discussion on Reddit, user axlee grumbled about the limited nature of this release:
This is very underwhelming. I was expecting a brand new router and a full-fledged i18n support ("first class internationalization" in their own December words), but it's all bug fixes and small hygiene improvements. Not sure if it was worth releasing as a "major" version.
Despite the fact that this version is the "first to be run by a much broader community oriented team," it seems that they would like to move faster. In the agenda for the June 1 planning meeting, discussion points include:
- We would like to have released 1.4.0 earlier.
- Get big changes in earlier.
- Should we have more frequent releases with smaller scope - this would be easier for developers to upgrade but makes maintenance harder.
Developers can read about the breaking changes in Angular 1.4 in the 1.3 to 1.4 migration guide. The new version is available at angularjs.org.