Bugfixes, bugfixes everywhere

On the road to Angular 5: rc.3 is bugfixes-only

JAX Editorial Team
Angular 5

© Shutterstock / dencg

Angular 5 is almost upon us — We’re getting there slowly but surely: rc.3 has arrived! Get ready because Angular 5 will be here before you know it.

The fourth release candidate only brings bugfixes (14 of them) and you know what that means!

In theory, Angular 5 should arrive next week — it remains to be seen if the schedule is respected but we’re seeing some good signs.

Bug fixes

  • animations: always fire inner trigger callbacks even if blocked by parent animations (#19753) (5a9ed2d), closes #19100
  • animations: ensure animateChild() works with all inner leave animations (#19006) (#19532) (#19693) (f42d317)
  • animations: ensure inner :leave animations do not remove node when skipped (#19532) (#19693) (d035175)
  • bazel: fix the output directory for extractor to be genfiles/ instead of bin/ (#19716) (405ccc7)
  • common: attempt to JSON.parse errors for JSON responses (#19773) (04ab9f1)
  • compiler: generate correct imports for type check blocks (#19582) (60bdcd6)
  • compiler: prepare for future Bazel semantics of += (#19717) (836c889)
  • compiler-cli: diagnostics file paths relative to cwd, not tsconfig (#19748) (56774df)
  • compiler-cli: do not add references to files outside of rootDir (#19770) (25cbc98)
  • router: RouterLinkActive should update its state right after checking the children (#19449) (6f2939d), closes #18983
  • service-worker: add missing annotation for SwPush (#19721) (15a8429)
  • service-worker: freshness strategy should clone response for cache (#19764) (396c241)
  • service-worker: has to be decoded (#19764) (3bcf0cf)
  • service-worker: use posix path resolution for generation of ngsw.json (#19527) (621f87b)


Update October 13, 2017

The third release candidate is here — it contains three bugfixes and four performance improvements.

Performance improvements

  • animations: reduce size of bundle by removing AST classes (#19539) (d5c9c5f)
  • compiler: only type check input files when using bazel (#19581) (0b06ea1)
  • compiler: skip type check and emit in bazel in some cases. (#19646) (a22121d)
  • compiler: speed up loading of summaries for bazel. (#19581) (81167d9)

According to the old tentative schedule (the one which said that Angular 5 will become available on September 18 — find it below), there should be four release candidates in total. If this is still valid, there’s only one release candidate left!


Update October 6, 2017

The second release candidate is here — it contains 13 bugfixes and three performance improvements.

Performance improvements

  • compiler: don’t emit summaries for jit by default (b086891)
  • compiler: fix perf issue in loading aot summaries in jit compiler (fbc9537)
  • compiler: only emit changed files for incremental compilation (745b59f)


Update September 29, 2017

The release candidate period has begun! The first release candidate is here — it contains over 30 bugfixes, six features, three performance improvements and one breaking change.

Get ready because Angular 5 will be here before you know it!


  • animations: support negative query limit values (86ffacf), closes #19259
  • compiler: enabled strict checking of parameters to an @Injectable (#19412) (dfb8d21)
  • compiler: reuse the TypeScript typecheck for template typechecking. (#19152) (996c7c2)
  • core: support for bootstrap with custom zone (#17672) (344a5ca)
  • platform-server: add an API to transfer state from server (#19134) (cfd9ca0)
  • service-worker: introduce the @angular/service-worker package (#19274) (d442b68)

Performance improvements

Breaking changes

  • compiler: The method ngGetConentSelectors(), deprecated in Angular 4.0, has been removed. Use ComponentFactory.ngContentSelectors instead.


Update September 14, 2017

If the tentative schedule still stands, we should be days away from Angular 5. However, we might have to wait until next month. No matter when Angular 5 is released, one thing is certain: the countdown has begun.

The eighth beta was released yesterday with 11 bugfixes, a couple of breaking changes and three features.

Code refactoring

  • router: remove deprecated RouterOutlet properties (a9ef858)
  • update angular to support TypeScript 2.4 (ca5aeba)


  • compiler: deprecate i18n comments in favor of ng-container (#18998) (66a5dab)
  • platform-server: provide a way to hook into renderModule* (#19023) (8dfc3c3)
  • router: add ActivationStart/End events (8f79150)

Breaking changes

  • the Angular compiler now requires TypeScript 2.4.x.
  • router: RouterOutlet properties locationInjector and locationFactoryResolver have been removed as they were deprecated since v4.


Update September 4, 2017

The Angular team is racing towards the finish line [a.k.a. Angular 5]! The seventh beta contains 21 bugfixes and nine features, as well as two breaking changes. Let’s have a quick look at what beta.6 has to offer:


  • http: deprecate @angular/http in favor of @angular/common/http (#18906) (72c7b6e)
  • common: accept object map for HttpClient headers & params (#18490) (1b1d5f1)
  • common: generate closure-locale.ts to tree shake locale data (#18907) (4878936)
  • compiler: set enableLegacyTemplate to false by default (#18756) (56238fe)
  • compiler-cli: add watch mode to ngc (#18818) (cf7d47d)
  • compiler-cli: add watch mode to ngc (#18818) (06d01b2)
  • compiler-cli: lower metadata useValue and data literal fields (#18905) (0e64261)
  • compiler-cli: lower metadata useValue and data literal fields (#18905) (c685cc2)
  • platform-server: provide a DOM implementation on the server (2f2d5f3), closes #14638

Code refactoring

Breaking changes

  • core: OpaqueToken has been removed as it was deprecated since v4. Use InjectionToken instead.
  • compiler: the compiler option enableLegacyTemplate is now disabled by default as the <template> element has been deprecated since v4. Use <ng-template> instead. The option enableLegacyTemplate and the <template>element will both be removed in Angular v6.

Angular 4.4.0: First release candidate is here

In other news,  the first release candidate for Angular 4.4.0 is here. It contains five bugfixes and two features, namely

  • compiler: allow multiple exportAs names (#18723) (7ec28fe)
  • core: add option to remove blank text nodes from compiled templates (#18823) (b8b551c)

For the complete up to date list of features and bugfixes, check out the changelog.


Update August 30, 2017

The beta season is in full swing! The Angular team released beta.5 and there are plenty of things to look at: it contains 11 bugfixes, eight features and a lot of breaking changes. One thing’s sure — the 6th beta release will keep you busy; in comparison with beta.4, this one has a longer list of breaking changes, features and bugfixes.

Let’s have a quick look at the breaking changes:

  • router: RouterOutlet properties locationInjector and locationFactoryResolver have been removed as they were deprecated since v4.
  • compiler: – @angular/platform-server now additionally depends on @angular/platform-browser-dynamic as a peer dependency.
  • common: Because of multiple bugs and browser inconsistencies, we have dropped the intl api in favor of data exported from the Unicode Common Locale Data Repository (CLDR). Unfortunately we had to change the i18n pipes (date, number, currency, percent) and there are some breaking changes.
  1. I18n pipes
  • Breaking change:
    • By default Angular now only contains locale data for the language en-US, if you set the value of LOCALE_ID to another locale, you will have to import new locale data for this language because we don’t use the intl API anymore.
  • Features:
    • you don’t need to use the intl polyfill for Angular anymore.
    • all i18n pipes now have an additional last parameter locale which allows you to use a specific locale instead of the one defined in the token LOCALE_ID (whose value is en-US by default).
    • the new locale data extracted from CLDR are now available to developers as well and can be used through an API (which should be especially useful for library authors).
    • you can still use the old pipes for now, but their names have been changed and they are no longer included in the CommonModule. To use them, you will have to import the DeprecatedI18NPipesModule after the CommonModule(the order is important):
import { NgModule } from '@angular/core';
import { CommonModule, DeprecatedI18NPipesModule } from '@angular/common';

  imports: [
    // import deprecated module after
export class AppModule { }

Don’t forget that you will still need to import the intl API polyfill if you want to use those deprecated pipes.

  1. Date pipe
  • Breaking changes:
    • the predefined formats (shortshortTimeshortDatemedium, …) now use the patterns given by CLDR (like it was in AngularJS) instead of the ones from the intl API. You might notice some changes, e.g. shortDate will be 8/15/17 instead of 8/15/2017 for en-US.
    • the narrow version of eras is now GGGGG instead of G, the format G is now similar to GG and GGG.
    • the narrow version of months is now MMMMM instead of L, the format L is now the short standalone version of months.
    • the narrow version of the week day is now EEEEE instead of E, the format E is now similar to EE and EEE.
    • the timezone z will now fallback to O and output GMT+1 instead of the complete zone name (e.g. Pacific Standard Time), this is because the quantity of data required to have all the zone names in all of the existing locales is too big.
    • the timezone Z will now output the ISO8601 basic format, e.g. +0100, you should now use ZZZZ to get GMT+01:00.

  • Features
    • new predefined formats longfulllongTimefullTime.
    • the format yyy is now supported, e.g. the year 52 will be 052 and the year 2017 will be 2017.
    • standalone months are now supported with the formats L to LLLLL.
    • week of the year is now supported with the formats w and ww, e.g. weeks 5 and 05.
    • week of the month is now supported with the format W, e.g. week 3.
    • fractional seconds are now supported with the format S to SSS.
    • day periods for AM/PM now supports additional formats aaaaaaaaa and aaaaa. The formats a to aaaare similar, while aaaa is the wide version if available (e.g. ante meridiem for am), or equivalent to aotherwise, and aaaaa is the narrow version (e.g. a for am).
    • extra day periods are now supported with the formats b to bbbbb (and B to BBBBB for the standalone equivalents), e.g. morningnoonafternoon, ….
    • the short non-localized timezones are now available with the format O to OOOO. The formats O to OOO will output GMT+1 while the format OOOO will be GMT+01:00.
    • the ISO8601 basic time zones are now available with the formats Z to ZZZZZ. The formats Z to ZZZ will output +0100, while the format ZZZZ will be GMT+01:00 and ZZZZZ will be +01:00.
  • Bug fixes
    • the date pipe will now work exactly the same across all browsers, which will fix a lot of bugs for safari and IE.
    • eras can now be used on their own without the date, e.g. the format GG will be AD instead of 8 15, 2017 AD.
  1. Currency pipe
  • Breaking change:
    • the default value for symbolDisplay is now symbol instead of code. This means that by default you will see $4.99 for en-US instead of USD4.99 previously.
  • Deprecation:
    • the second parameter of the currency pipe (symbolDisplay) is no longer a boolean, it now takes the values codesymbol or symbol-narrow. A boolean value is still valid for now, but it is deprecated and it will print a warning message in the console.
  • Features:
    • you can now choose between codesymbol or symbol-narrow which gives you access to more options for some currencies (e.g. the canadian dollar with the code CAD has the symbol CA$ and the symbol-narrow $).
  1. Percent pipe
  • Breaking change
    • if you don’t specify the number of digits to round to, the local format will be used (and it usually rounds numbers to 0 digits, instead of not rounding previously), e.g. {{ 3.141592 | percent }} will output 314% for the locale en-US instead of 314.1592% previously.
  • common: NgFor has been removed as it was deprecated since v4. Use NgForOf instead. This does not impact the use of*ngFor in your templates.
  • common: NgTemplateOutlet#ngOutletContext has been removed as it was deprecated since v4. Use NgTemplateOutlet#ngTemplateOutletContext instead.
  • core: Testability#findBindings has been removed as it was deprecated since v4. Use Testability#findProviders instead.
  • core: DebugNode#source has been removed as it was deprecated since v4.
  • router: the values truefalselegacy_enabled and legacy_disabled for the router parameter initialNavigation have been removed as they were deprecated. Use enabled or disabled instead.
  • core: DifferFactory.create no longer takes ChangeDetectionRef as a first argument as it was not used and deprecated since v4.
  • core: TrackByFn has been removed because it was deprecated since v4. Use TrackByFunction instead.
  • platform-webworker: PRIMITIVE has been removed as it was deprecated since v4. Use SerializerTypes.PRIMITIVE instead.
  • platform-browser: NgProbeToken has been removed from @angular/platform-browser as it was deprecated since v4. Import it from @angular/core instead.
  • core: ErrorHandler no longer takes a parameter as it was not used and deprecated since v4.
  • compiler: the option useDebug for the compiler has been removed as it had no effect and was deprecated since v4.

Just a quick reminder: Angular 5 is fast approaching

For the complete up to date list of features and bugfixes, check out the changelog.


Update August 3, 2017

Angular 5.0 beta is now in testing!

We’re on our way to the latest milestone in the path to Angular 5. As mentioned earlier this year, Angular 5 has a tentative release date in SeptemberAnd so, as the summer continues, things are starting to move quickly with this upcoming release.

So, what’s up with Angular 5? Some new feature and performance improvements, but mostly a lot of bugfixes.


  • compiler: add representation of placeholders to xliff & xmb
  • forms: add options arg to abstract controls
  • router: add events tracking activation of individual routes

Performance Improvements

  • latest tsickle to tree shake: abstract class methods & interfaces
  • core: use native addEventListener for faster rendering.

For the complete up to date list of features and bugfixes, check out the changelog.


Update July 17, 2017

What’s new in Angular 4.3?

First things first: Angular 4.3  is a minor release following the announced adoption of Semantic Versioning. This means that there are no breaking changes and that it is a drop-in replacement for 4.x.x, according to the blog post announcing the release. It contains 24 bugfixes and 12 features.

What’s new?

  • Say hello to HttpClient, a smaller, easier to use, and more powerful library for making HTTP Requests. More details here.
  • New router life cycle events for Guards and Resolvers. Four new events: GuardsCheckStartGuardsCheckEndResolveStartResolveEnd join the existing set of life cycle event such as NavigationStart
  • Conditionally disable animations via a new attribute, [@.disabled]
  • Support for the emulated /deep/ CSS Selector (the Shadow-Piercing descendant combinator aka >>>) has been deprecated to match browser implementations and Chrome’s intent to remove. ::ng-deep has been added to provide a temporary workaround for developers currently using this feature.
For the complete list of features and bugfixes, have a look at the changelog.


Update June  29, 2017

It’s beta season!

Angular 4.2 was released in early June and now that the month is almost over, it’s time for the beta phase for 4.3 to begin.

Beta.0 has one feature [core: update zone.js to 0.8.12 (5ac3919)] and 12 bugfixes. There’s not much to tell but now that the beta phase has officially begun, we can look towards the [near] future —in our case, 4.3.

For more details about the bugfixes and feature, see the changelog.


Update June 9, 2017

Angular 4.2 is here and it comes bearing gifts, a.k.a five bug fixes, one feature [compiler-cli: introduce synchronous codegen API (b00b80a)] and two performance improvements:

  • animations: do not create a closure each time a node is removed (fe6b39d)
  • animations: only apply :leave flags if animations are set to run (b55adee)

RC.2 was released earlier this month, shortly after the release of RC.1 and RC.0. It consisted of five bug fixes, three features and one performance improvement.


  • compiler: emit typescript nodes from an output ast (#16823) (18bf772)
  • compiler-cli: produce template diagnostics error messages (#17125) (230255f)
  • tsc-wrapped: always convert shorthand imports (#16898) (ea8a43d)

Performance improvement

  • animations: do not place enterId values on elements for querying purposes (#17150) (ad6a57e)

RC. 1 had seven bug fixes and three features, namely:

  • compiler: add location note to extracted xliff2 files (#16791) (08dfe91), closes #16531
  • core: update zone.js to 0.8.10 and expose the flush method (#16860) (85d4c4b)
  • tsc-wrapped: support template literals in metadata collection (#16880) (6e41add)

RC.0 consisted of 10 bug fixes, six features and one performance improvement.


  • animations: introduce a wave of new animation features (16c8167)
  • animations: introduce routeable animation support (f1a9e3c)
  • add .ngsummary.ts files to support AOT unit tests (547c363)
  • introduce TestBed.overrideProvider (#16725) (39b92f7)
  • compiler: support a non-null postfix assert (#16672) (b9521b5)
  • core: introduce fixture.whenRenderingDone for testing (#16732) (38c524d)

Performance improvement

  • animations: reduce size of animations bundle (712630c)



Update April 11, 2017

Now that Angular 4 is here, it’s time to worry about the next version. All jokes aside, it’s clear that Angular is more mature. Igor Minar, one of the keynoters at the ng-conf 2017 proudly announced that “the growth in Angular is fueled by people migrating from AngularJS to Angular.”

With maturity comes responsibility, so even though most people see major versions as breaking changes, for the Angular team they mean that they achieved a lot and they need extra time — hence the extended RC periods through which they collect feedback, Minar explained.

We also want to make sure it’s very simple for you to upgrade so we’re doing a lot to make sure major versions don’t mean big obstacles.

Angular 5: The countdown has begun

We don’t know a lot about the next version but we now know that it will be released in September/ October this year.

[version 5] is going to be a much better Angular and you’ll be able to take advantage of it much easier.

One of the biggest perks of Angular 4 is the fact that it is smaller, yet faster — changes were made under the hood to what AOT generated code looks like; their aim is to reduce the size of the generated code for users’ components by roughly 60 percent in most cases.

Angular 5 will be even better: Minar promised that it would be faster and smaller than Angular 4, the updates will be smooth and it will become simpler to compile Angular applications. Since the differences between Just-in-Time and Ahead-of-Time compilation can be frustrating, the latter will become the default, thus reducing friction.

Long-Term Support (LTS) for Angular

Minar revealed that all Google apps use the latest pre-release version of Angular and that the team feels very good about the stability of Angular. There are, of course, benefits to using the latest minor version but for those who cannot use it, the answer is Long-Term Support.

Version 4 is the first one to have LTS. For the next six months, the Angular team will be actively working on it [release features, bugfixes].

In October, version 4 will enter the long-term state and from then on only the critical fixes and security patches will be merged and released.

For more details about the road to version 5 and all the details presented at the ng-conf 2017, visit their YouTube channel.

comments powered by Disqus