Angular will be making another big number upgrade to Angular v4. Don’t be afraid of the change though, Angular is still the Angular you’re learning to love. This is mainly a version numbering change and not a platform rewrite like Angular 1 to Angular v2.
The launch wasn’t just the final stage of Angular v2, rather it was the stage where they had something stable.
TLDR: Jump from v2 to v4 for Semver matching across packages. Angular is still Angular.
There were a number of minor releases after the launch of v2.0.0 which included:
- v2.1 – router enhancements and route reloading
- v2.2 – AoT(Ahead-of-Time) compatibility and ngUpgrade
- v2.3 – improved language service used especially by IDE vendors. The service made it easy for IDEs to integrate with Typescript since they do not just ship the compiler. It also enables autocompletion on the IDEs and has better error handling by providing better error messages.
The Angular team announced that they will be using SEMVER when releasing updates.
SEMVER (Semantic Versioning) is basically about adding meaning to version numbers.
Sermver is pretty simple if you look at the chart below.
Basically what this means is that:
- Patch versions are released every week with the exception of holidays
- Minor versions are released every month
- Major versions are released every 6 months, meaning 2 major versions every year.
Angular is built on a monorepo, this simply means there is one huge repository on Github for all of Angular’s packages and all its work. Google also has all their work including Google Maps and all other Google products on one repository. This has its advantages and disadvantages
The Angular team feels confident about their monorepo design for the following reasons:
- They release exact combinations of versions battle-tested at Google.
- They are more productive this way and can get more stuff done
Switching from Angular v2 to Angular v4
Packages on the Angular repository have been following semver except the @angular/router package which has a one-off version, this, according to Angular, is a screw-up on their end, which is noble of them to admit that.
While the @angular/core and others were on version 2, the @angular/router was on version 3. This caused some confusion so the bump to Angular v4 matches all packages up nicely.
Some of the features that Angular is looking to roll out in upcoming releases include:
The Typescript team has been working on a number of improvements including:
- Creating smarter compilers which handle errors better and give better error messages.
- Implementing strictNullChecks to provide extra type safety
This means the Angular compiler (ngc) will be faster since they will be taking advantage of the optimizations of Typescript
It will be a breaking change for Angular since the current Typescript version (1.8) is not compatible with v2.1. This is because they edited some features and the type system is richer so it’s no longer compatible with Angular v2
Backwards compatibility with Angular v2
It will be able to successfully use interfaces and data from applications made with Angular v2
Better Angular compiler errors
The compiler will be much smarter in terms of error handling
The ngc will be faster in terms of runtime speed and parse time. It will also be smaller
Angular v4 is due in March 2017 but before then they released a schedule for their betas and rc (release candidate) versions which simply put, are beta versions with the potential to be a final product and which are ready to be released unless significant bugs emerge.
Angular is clearly evolving! To avoid a rough transition from one version to another like what happened with the transition from Angular 1 to Angular v2, Angular is trying to be:
How? According to Igor Minar, Angular plans to have major releases every 6 months with minimal breaking changes. This seems like a pretty feasible plan, unless another mistake is done with the naming of the packages like it happened for the router package.
Angular has moved the attention from the version numbers when naming the different versions. They are adopting the following naming convention:
- Angular 1 will be called AngularJS
- Angular v2+ will just be called Angular
It’s just “Angular”
Finally, keep calm and embrace angular, don’t worry yourself about version numbers too much.
For more info on the release schedule, see:
For more about this you can watch Igor Minar’s opening keynote: