Business as usual

Angular 5 is here

JAX Editorial Team
Angular 5

© Shutterstock / dencg

Version 5.0.0 of Angular, pentagonal-donut is here! This major release contains an abundance of new features and bugfixes; its aim is to continue the Angular team’s focus on making it smaller, faster, and easier to use. But even though we’re still in awe of the release, it’s business as usual for the Angular team.

 

Angular 5 is here. Don’t know about you but we’re very excited that it’s finally here! It contains a lot of new features and bugfixes but we’re not going to cover them all here.

For the complete list of features and bugfixes, see the changelog.

Build Optimizer

Stephen Fluin, Developer Advocate at Google explained in a blog post announcing Angular 5 that as of version 5.0.0, production builds created with the CLI will now apply the build optimizer by default. The build optimizer —a tool included in their CLI for making users’ bundles smaller using the team’s semantic understanding of users’ Angular application— has a double job:

  • the Angular team was able to mark parts of users’ application as pure, which improves the tree shaking provided by the existing tools, removing additional parts of users’ application that aren’t needed.
  • the tool removes Angular decorators from users’ application’s runtime code. Decorators are used by the compiler, and aren’t needed at runtime and can be removed.

The aim of these jobs is to decrease the size of your JavaScript bundles, and increase the boot speed of your application for your users.

Angular Universal State Transfer API and DOM Support

Angular Universal focuses on helping developers to perform server-side rendering (SSR) of Angular applications. By rendering your Angular applications on the server and then bootstrapping on top of the generated HTML, you can add support for scrapers and crawlers that don’t support JavaScript, and you can increase the perceived performance of your application, Fluin explained.

There’s also ServerTransferStateModule and the corresponding BrowserTransferStateModule, which allows you to generate information as part of your rendering with platform-server, and then transfer it to the client side so that this information does not need to be regenerated. The team has also welcomed Domino to platform-server, which means that more DOM manipulations are supported out of the box within server-side contexts.

Compiler Improvements

The Angular compiler has been improved to support incremental compilation — This provides faster rebuilds, especially for production builds and builds with AOT. The Angular team has also added features to the Decorators and made it possible to ship smaller bundles by removing whitespace.

HttpClient

Developers appreciated the new HttpClient (introduced in version 4.3)  so the team is now recommending HttpClient for all applications, and deprecating the previous @angular/http library.

To update to HttpClient, you’ll need to replace HttpModule with HttpClientModule from @angular/common/http in each of your modules, inject the HttpClient service, and remove any map(res => res.json()) calls, which are no longer needed.

CLI v1.5

Starting with v1.5 of the Angular CLI, the team added support for Angular v5.0.0 and will generate v5 projects by default. The build optimizer has been turned on by default, so developers can now benefit from smaller bundles.

They’ve also updated the way .tsconfig files are used to follow TypeScript standards more strictly. By default, the CLI configures TypeScript without files or include sections, so most developers won’t be affected by this.

New Router Lifecycle Events

There’s a new lifecycle events to the router which allows developers to track the cycle of the router from the start of running guards through to completion of activation.

The list of highlights is much longer so make sure to check out Stephen Fluin’s blog post.

 

 

Update October 31, 2017

Four more bugfixes — the release candidate tap is still open so that means the 10th rc. is here.

 

Update October 30, 2017

The ninth release candidate is here. I don’t know about you but we were definitely not expecting to see rc.8. Anyway, it’s here and it brings two bugfixes:

  • compiler-cli: avoid producing source mappings for host views (#19965) (2d508a3)
  • platform-server: add missing packages to the UMD global rollup config (4285b6c)

 

Update October 27, 2017

There’s still space for one more. rc.7 is here and it brings seven bugfixes. Are we there yet??

 

Update October 26, 2017

Another day, another candidate release — lucky number seven this time. Obviously, there are only bugfixes (four of them, to be exact) but it’s still a good reason to celebrate: one step closer to Angular 5.

 

Update October 24, 2017

Release candidates come in twos now: rc.4 and rc.5 were released earlier today — the former brings three bugfixes and the latter brings just one. Is today the day Angular 5 is released? We wish we knew the answer to this question.

 

Update October 19, 2017

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: PushEvent.data 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!

Features

  • 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)

Features

  • 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:

Features

  • 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';

@NgModule({
  imports: [
    CommonModule,
    // import deprecated module after
    DeprecatedI18NPipesModule
  ]
})
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.

Features

  • 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.

Features

  • 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.

Features

  • 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
comments powered by Disqus