days
0
-23
-6
hours
-1
-1
minutes
-2
-2
seconds
-5
-5
search
Improvements keep coming

Road to Angular 10: Angular 10.0.0-rc.0 includes breaking changes

Angular
© Shutterstock / igorstevanovic

The final version of Angular 9 was released in February 2020, which means the road to Angular 10 has begun. We are keeping close tabs on the new releases. Angular 10.0.0-rc.0 arrives with a breaking change regarding Closure Compiler.

Updated 25, May 2020

New changes to Angular have been made with the release of Angular 10.0.0-rc.0. In particular, a new breaking change should be noted by its users. With this version, Angular npm packages no longer contain jsdoc comments to support Closure Compiler’s advanced optimizations. This is due to changes introduced by TypeScript 3.9, making Closure unusable with the JS emit.

According to the changelog, if you are using Closure Compiler with Angular, from now on you should consume Angular packages directly fro the source instead of the ones published on npm.

A support thread for those affected by this change is available here.

Bug Fixes

BREAKING CHANGES

  • core: Angular npm packages no longer contain jsdoc comments to support Closure Compiler’s advanced optimizations

Updated 19 May, 2020

The Angular team has released Angular 10.0.0-next.8, and this version drops TypeScript 3.8 support. As a breaking change, this means users must now upgrade to TypeScript 3.9, released earlier this month. Other updates in v10.0.0-next.8 include nine bug fixes and the added platform-server feature to use absolute URLs from Location for HTTP, which is not a breaking change.

Meanwhile, the confusion around the previous update has been cleared up, as the changelog now only lists one Angular 10.0.0-next.7 release that comes with the new core feature “make generic mandatory for ModuleWithProviders.” It has also been clarified that this is a breaking change and the changelog explains how to use a workaround. So, just scroll down and see the details for the two latest Angular releases on the road to v10.

Angular 10.0.0-next.8

Bug Fixes

  • compiler-cli: compute the correct target output for $localize messages (#36989) (4e1b5e4)
  • core: Host classes should not be fed back into @Input (#35889) (cda2530), closes #35383
  • core: inheritance delegate ctor regex updated to work on minified code (#36962) (ea971f7)
  • language-service: use empty statement as parent of type node (#36989) (a32cbed)
  • ngcc: viaModule should be null for local imports (#36989) (d268d2a)
  • ngcc: ensure reflection hosts can handle TS 3.9 IIFE wrapped classes (#36989) (d7440c4)
  • ngcc: ensure rendering formatters work with IIFE wrapped classes (#36989) (c8ee390)
  • ngcc: support defineProperty() re-exports in CommonJS and UMD (#36989) (91092f6)

Features

  • remove support for TypeScript 3.8 (#37129) (6466fb2)
  • platform-server: use absolute URLs from Location for HTTP (#37071) (9edea0b)

BREAKING CHANGES

  • TypeScript 3.8 is no longer supported, please update to TypeScript 3.9.

Angular 10.0.0-next.7

Bug Fixes

Features

  • compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
  • language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)
  • core make generic mandatory for ModuleWithProviders (#36892) (20cc3ab)

BREAKING CHANGES

  • core: make generic mandatory for ModuleWithProviders

A generic type parameter has always been required for the ModuleWithProviders pattern to work with Ivy, but prior to this commit, View Engine allowed the generic type to be omitted (though support was officially deprecated). If you’re using ModuleWithProviders without a generic type in your application code, a v10 migration will update your code for you.

However, if you are using View Engine and also depending on a library that omits the generic type, you will now get a build time error similar to:

error TS2314: Generic type 'ModuleWithProviders<T>' requires 1 type argument(s).

In this case, ngcc won’t help you (because it’s Ivy-only) and the migration only covers application code. You should contact the library author to fix their library to provide a type parameter when they use this class.

As a workaround, we suggest setting skipLibChecks to false in your tsconfig or updating your app to use Ivy.

Updated 14 May, 2020

The latest Angular version on the road to v10 has landed—twice. The Angular changelog lists two versions of the current update, one with two bug fixes and two new features, the other with the same changes but an additional feature. Let’s wait and see if the Angular team will clarify which features have really made it into this release. Here are the four—or five—changes:

Angular 10.0.0-next.7

Bug Fixes

Features

  • compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
  • language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)

Angular 10.0.0-next.7

Bug Fixes

Features

  • compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
  • language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)
  • core make generic mandatory for ModuleWithProviders (#36892) (20cc3ab)

Updated 8 May, 2020

Two Angular updates in one week: Angular 10.0.0-next.6 has arrived with an even longer list of changes, including breaking changes. New features have been added for the areas bazel, compiler-cli, core, ngcc, and language-service.

For example, in bazel, esm5 and fesm5 have been dropped, which should simplify ng_package. As a breaking change, this means the esm5 and fesm5 format is no longer distributed in Angular’s npm packages. Support for TypeScript 3.6 and 3.7 has been dropped, which marks another breaking change. Only the current version TypeScript 3.8 is now supported.

Other updates in this version include bug fixes and performance improvements.

See all the changes here:

Angular 10.0.0-next.6

Bug Fixes

  • bazel: ng_package rule should update “package.json” of ts_library targets (#36944) (d5293d2)
  • compiler: remove outdated and invalid warning for unresolved DI parameters (#36985) (d0280a0)
  • compiler: switch to ‘referencedFiles’ for shim generation (#36211) (4213e8d)
  • compiler-cli: isCaseSensitive() returns correct value (#36859) (fc4741f)
  • compiler-cli: don’t try to tag non-ts files as shims (#36987) (42d1091)
  • compiler-cli: ensure getRootDirs() handles case-sensitivity (#36859) (3f3e9b7)
  • compiler-cli: ensure MockFileSystem handles case-sensitivity (#36859) (26eacd4)
  • compiler-cli: ensure LogicalFileSystem handles case-sensitivity (#36859) (53a8459)
  • compiler-cli: fix bug tracking indirect NgModule dependencies (#36211) (bab90a7)
  • compiler-cli: fix case-sensitivity issues in NgtscCompilerHost (#36859) (0ec0ff3)
  • compiler-cli: normalize mock Windows file paths correctly (#36859) (b682bd1)
  • compiler-cli: use CompilerHost to ensure canonical file paths (#36859) (a10c126)
  • core: handle pluralize functions that expect a number (#36901) (2ff4b35), closes #36888
  • core: properly get root nodes from embedded views with (#36051) (e30e132), closes #35967
  • forms: handle numeric values properly in the validator (#36157) (88a235d), closes #35591
  • forms: number input fires valueChanges twice (#36087) (97d6d90), closes #12540
  • localize: ensure getLocation() works (#36853) (70b25a3)
  • ngcc: support ModuleWithProviders functions that delegate (#36948) (fafa50d), closes #36892

Features

  • bazel: simplify ng_package by dropping esm5 and fesm5 (#36944) (9dbb30f)
  • compiler-cli: report error if undecorated class with Angular features is discovered (#36921) (4c92cf4)
  • core: undecorated-classes-with-decorated-fields migration should handle classes with lifecycle hooks (#36921) (c6ecdc9)
  • ngcc: support for new APF where module points to esm2015 output (#36944) (c98a4d6)
  • language-service: [ivy] Parse Angular compiler options (#36922) (dbd0f8e)
  • remove TypeScript 3.6 and 3.7 support (#36329) (fbd281c)

Performance Improvements

  • compiler-cli: perform template type-checking incrementally (#36211) (ecffc35)
  • compiler-cli: split Ivy template type-checking into multiple files (#36211) (b861e9c)

BREAKING CHANGES

  • TypeScript versions 3.6 and 3.7 are no longer supported, please update to TypeScript 3.8
  • forms: Number inputs no longer listen to the change event.

Tests which trigger change events need to be updated to trigger input events instead.

The change event was in place to support IE9, as we found that input events were not fired with backspace or cut actions. If you need to maintain IE9 support, you will need to add a change event listener to number inputs and call the onChange method of NumberValueAccessor manually.

Lastly, old versions of WebDriver would synthetically trigger the change event on WebElement.clear and WebElement.sendKeys. If you are using an old version of WebDriver, you may need to update tests to ensure input events are triggered. For example, you could use element.sendKeys(Keys.chord(Keys.CONTROL, "a"), Keys.BACK_SPACE); in place of element.clear().

  • forms: The minLength and maxLength validators now verify that the form control’s value has a numeric length property, and only validate for length if that’s the case.

Previously, falsey values without the length property (such as 0 or false values) were triggering validation errors. If your code relies on the old behavior, you can include other validators such as min or requiredTrue to the list of validators for a particular field.

  • bazel: esm5 and fesm5 format is no longer distributed in Angular’s npm packages e.g. @angular/core

If you are not using Angular CLI to build your application or library, and you need to be able to build es5 artifacts, then you will need to downlevel the distributed Angular code to es5 on your own.

Angular CLI will automatically downlevel the code to es5 if differential loading is enabled in the Angular project, so no action is required from Angular CLI users.

 

Updated 6 May, 2020

The Angular team has been keeping up with regular weekly updates. This time there are several new features to try out and four breaking changes to watch out for. For example, a breaking change made to the core is that warnings about unknown elements will now be logged as errors. According to the Angular team, while this should not break the application, it “may trip up tools that expect nothing to be logged via console.error.” Other breaking changes refer to router, service worker, and common.

Performance improvements regarding ngcc are on board as well: the getBasePaths() computation should now go faster and basePaths in TargetedEntryPointFinder are now only computed when needed.

Here are all the changes in the current update:

Angular 10.0.0-next.5

Bug Fixes

  • core: log error instead of warning for unknown properties and elements (#36399) (9d9d46f), closes #35699
  • core: Refresh transplanted views at insertion point only (#35968) (1786586), closes #35400 #21324
  • ngcc: do not run in parallel mode if there are less than 3 CPU cores (#36626) (4c63241)
  • ngcc: give up re-spawning crashed worker process after 3 attempts (#36626) (793cb32)
  • ngcc: handle ENOMEM errors in worker processes (#36626) (4779c4b)
  • ngcc: provide a unique exit code for timeouts (#36838) (d805526)
  • ngcc: support recovering when a worker process crashes (#36626) (966598c), closes #36278
  • ngcc: support TS 3.9 wrapped ES2015 classes (#36884) (db4c59d)
  • router: cancel navigation when at least one resolver completes with no “next” emission (#24621) (d9c4840), closes #24195

Code Refactoring

Features

  • localize: support merging multiple translation files (#36792) (72f534f)
  • ngcc: allow async locking timeouts to be configured (#36838) (38f805c)
  • ngcc: support marking an in-progress task as unprocessed (#36626) (4665c35)
  • ngcc: support reverting a file written by FileWriter (#36626) (772ccf0)
  • service-worker: include CacheQueryOptions options in ngsw-config (#34663) (dc9f4b9), closes #28443
  • service-worker: use ignoreVary: true when retrieving responses from cache (#34663) (ee35e22), closes #36638

Performance Improvements

  • ngcc: only compute basePaths in TargetedEntryPointFinder when needed (#36881) (ec6b9cc), closes #36874
  • ngcc: speed up the getBasePaths() computation (#36881) (e037840)

BREAKING CHANGES

  • core: Warnings about unknown elements are now logged as errors. This won’t break your app, but it may trip up tools that expect nothing to be logged via console.error.
  • router: Any resolver which return EMPTY will cancel navigation. If you want to allow the navigation to continue, you will need to update the resolvers to emit some value, (i.e. defaultIfEmpty(…), of(…), etc).
  • service-worker: Previously, Vary headers would be taken into account when retrieving resources from the cache, completely preventing the retrieval of cached assets (due to ServiceWorker implementation details) and leading to unpredictable behavior due to inconsistent/buggy implementations in different browsers.

Now, Vary headers are ignored when retrieving resources from the ServiceWorker caches, which can result in resources being retrieved even when their headers are different. If your application needs to differentiate its responses based on request headers, please make sure the Angular ServiceWorker is configured to avoid caching the affected resources.

  • common: This change could result in ExpressionChangedAfterItHasBeenChecked errors that were not detected before. The error could previously have gone undetected because two WrappedValues are considered “equal” in all cases for the purposes of the check, even if their respective unwrapped values are not.

Additionally, [val]=(observable | async).someProperty will no longer trigger change detection if the value of someProperty is identical to the value in the previous emit. If you need to force change detection, either update the binding to use an object whose reference changes or subscribe to the observable and call markForCheck as needed.

Updated 30 April, 2020

The latest update on the road to Angular 10 has arrived. Smaller than the last version, Angular 10.0.0-next.4 comes without breaking changes. It adds several bug fixes as well as a new router feature: matching the bevavior available to CanActivate guards, a CanLoad guard can now return UrlTree.

These are the changes in v10.0.0-next.4:

Angular 10.0.0-next.4

Bug Fixes

  • compiler: normalize line endings in ICU expansions (#36741) (70dd27f), closes #36725
  • core: attempt to recover from user errors during creation (#36381) (3d82aa7), closes #31221
  • core: handle synthetic props in Directive host bindings correctly (#35568) (f27deea), closes #35501
  • language-service: disable update the [@angular](https://github.com/angular)/core module (#36783) (dd049ca)
  • localize: include legacy ids when describing messages (#36761) (47f9867)
  • ngcc: recognize enum declarations emitted in JavaScript (#36550) (89c5890), closes #35584

Features

Updated 23 April, 2020

One week after the last Angular next version, it’s time for an update: Angular 10.0.0-next.3 has arrived. It comes with a breaking change regarding common: Previously, time periods that crossed midnight were not handled correctly, but this issue has now been addressed.

Here’s what else is new:

Angular 10.0.0-next.3

Bug Fixes

BREAKING CHANGES

  • common: format day-periods that cross midnightWhen formatting a time with the b or B format codes, the rendered string was not correctly handling day periods that spanned midnight. Instead the logic was falling back to the default case of AM.Now the logic has been updated so that it matches times that are within a day period that spans midnight, so it will now render the correct output, such as at night in the case of English.Applications that are using either formatDate() or DatePipe and any of the b or B format codes will be affected by this change.

Updated 16 April, 2020

Angular development seems to be picking up speed once again: Angular 10.0.0-next.2 has now arrived. It focuses mainly on improving ngcc, which has received bug fixes as well as performance improvements. Other areas that have been addressed in this version include the compiler and the core.

This is what’s new in 10.0.0-next.2:

Angular 10.0.0-next.2

Bug Fixes

  • common: locales/global/*.js are not ES5 compliant (#36342) (078b0be), closes angular/angular-cli#16394
  • compiler: handle type references to namespaced symbols correctly (#36106) (4aa4e6f), closes #36006
  • core: undecorated-classes-with-decorated-fields migration should avoid error if base class has no value declaration (#36543) (ca67748), closes #36522
  • ngcc: correctly detect external files from nested node_modules/ (#36559) (6ab43d7), closes #36526
  • ngcc: display output from the unlocker process on Windows (#36569) (e041ac6)
  • ngcc: do not spawn unlocker processes on cluster workers (#36569) (66effde), closes #35861
  • ngcc: do not warn if paths mapping does not exist (#36525) (717df13), closes #36518
  • ngcc: force ngcc to exit on error (#36622) (663b768), closes #36616
  • router: pass correct component to canDeactivate checks when using two or more sibling router-outlets (#36302) (80e6c07), closes #34614
  • upgrade: update $locationShim to handle Location changes before initialization (#36498) (0cc53fb), closes #36492

Performance Improvements

Updated 15 April, 2020

The updates for Angular keep coming, albeit at a slightly slower pace than before. However, the updates mainly focus on fixing bugs for a smoother experience. Angular 10.0.0-next.0 and 10.0.0-next.1 have arrived.

10.0.0-next.1 contains only improvements to the API docs.

10.0.0-next.0 boasts a long list of bug fixes and one breaking change regarding the router. In addition to this, it has added dependency info and ng-content selectors to the metadata and added the support timeout in the registerWhenStable SW registration strategy.

Here’s all the changes 10.0.0-next.0 adds:

Angular 10.0.0-next.0

Bug Fixes

Features

  • compiler: add dependency info and ng-content selectors to metadata (#35695) (32ce8b1)
  • compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (d714b95)
  • core: undecorated-classes migration should handle derived abstract classes (#35339) (c24ad56)
  • service-worker: support timeout in registerWhenStable SW registration strategy (#35870) (00efacf), closes #34464

BREAKING CHANGES

  • router: UrlMatcher’s type now reflects that it could always return null.If you implemented your own Router or Recognizer class, please update it to handle matcher returning null.

Updated 26 March, 2020

The speed of Angular releases is picking up! Just yesterday, we wrote about the third release candidate for Angular 9.1.0, and now the final version has arrived. Angular 9.1.0 adds new features including support for TypeScript 3.8, performance improvements, and a long list of bug fixes.

On the Angular Blog, Stephen Fluin shared the future plans for Angular:

This is the last planned minor release for 9.x. As we start work towards 10.0, you should expect to see 10.0 prereleases usually once per week, even though they will contain only minimal changes at first.

Here’s what’s new in the latest minor version:

Angular 9.1.0

Release Highlights

  • TypeScript 3.8 update
  • ngcc improvements
    • performance optimizations
    • concurrency & reliability improvements for monorepo use-cases (npm postinstall script no longer recommended)
  • i18n now supports RTL locale info
  • Ivy compatibility fixes

Features

  • bazel: enable ivy template type-checking in g3 (#35672) (8f5b7f3)
  • bazel: transform generated shims (in Ivy) with tsickle (#35975) (e3ecdc6), closes #35848
  • compiler-cli: implement NgTscPlugin on top of the NgCompiler API (#34792) (3c69442dbd)
  • compiler: Add sourceSpan and keySpan to TemplateBinding (#35897) (06779cf)
  • compiler: Propagate source span and value span to Variable AST (#36047) (31bec8c)
  • compiler: add dependency info and ng-content selectors to metadata (#35695) (fb70083)
  • language-service: improve non-callable error message (#35271) (acc483e)
  • language-service: modularize error messages (#35678) (47a1811), closes #32663
  • ngcc: implement source-map flattening (#35132) (df816c9)
  • ngcc: pause async ngcc processing if another process has the lockfile (#35131) (eef0753)
  • ngcc: support invalidating the entry-point manifest (#35931) (8ea61a1)
  • zone.js add a temp solution to support passive event listeners. (#34503) (f9d483e)
  • zone.js add an tickOptions parameter with property processNewMacroTasksSynchronously. (#33838) (17b862c), closes #33799
  • zone.js add interface definitions which zone extends EventTarget (#35304) (4acb676), closes #35173
  • zone.js support passive event options by defining global variables in zone.js config file (#34503) (d7d359e)
  • define all zone.js configurations to typescript interfaces (#35329) (03d88c7)
  • typescript 3.8 support (#35864) (95c729f)

Performance Improvements

  • core: add micro benchmark for destroy hook invocation (#35784) (0653db1)
  • core: adding micro benchmark for host bindings (#35705) (8fed1fe), closes #35568
  • core: avoid recursive scope recalculation when TestBed.overrideModule is used (#35454) (0a1a989)
  • core: use multiple directives in host bindings micro benchmark (#35736) (5bc39f8)
  • ivy: remove unused event argument in listener instructions (#35097) (9228d7f)
  • ngcc: link segment markers for faster traversal (#36027) (47025e0)
  • ngcc: only create tasks for non-processed formats (#35719) (d7efc45)
  • ngcc: reduce directory traversing (#35756) (e0a35e1), closes #35717
  • ngcc: spawn workers lazily (#35719) (dc40a93), closes #35717
  • ngcc: store the position of SegmentMarkers to avoid unnecessary computation (#36027) (772bb5e)
  • ngcc: use binary search when flattening mappings (#36027) (348ff0c)
  • ngcc: use line start positions for computing offsets in source-map flattening (#36027) (e890082)
  • ngcc: use the EntryPointManifest in DirectoryWalkerEntryPointFinder (#35931) (ec9f4d5)

Bug Fixes

  • animations: Remove ɵAnimationDriver from private exports (#35690) (ec789b0)
  • animations: allow computeStyle to work on elements created in Node (#35810) (17cf04e)
  • animations: false positive when detecting Node in Webpack builds (#35134) (dc4ae4b), closes #35117
  • animations: process shorthand margin and padding styles correctly (#35701) (35c9f0d), closes #35463
  • bazel: devserver shows blank page in Windows (#35159) (727f92f)
  • bazel: do not use manifest paths for generated imports within compilation unit (#35841) (9581658)
  • bazel: ng_package rule creates incorrect UMD module exports (#35792) (5c2a908), closes angular/components#18652
  • bazel: prod server doesn’t serve files in windows (#35991) (96e3449)
  • bazel: spawn prod server using port 4200 (#35160) (829f506)
  • bazel: update ibazel to 0.11.1 (#35158) (4e6d237)
  • bazel: update several packages for better windows support (#35991) (32f099a)
  • bazel: update typescript peer dependency range (#36013) (5e3a898)
  • common: let KeyValuePipe accept type unions with null (#36093) (407fa42), closes #35743
  • compiler-cli: TypeScript peer dependency range (#36008) (5f7d066)
  • compiler-cli: suppress extraRequire errors in Closure Compiler (#35737) (c296bfc)
  • compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (2ce5fa3)
  • compiler: do not recurse to find static symbols of same module (#35262) (e179c58)
  • compiler: record correct end of expression (#34690) (df890d7), closes #33477
  • compiler: report errors for missing binding names (#34595) (d13cab7)
  • compiler: support directive inputs with interpolations on <ng-template>s (#35984) (79659ee), closes #35752
  • compiler: support i18n attributes on <ng-template> tags (#35681) (40da51f)
  • compiler: type-checking error for duplicate variables in templates (#35674) (2c41bb8), closes #35186
  • compiler: use FatalDiagnosticError to generate better error messages (#35244) (646655d)
  • core: Add style="{{exp}}" based interpolation (#34202) (2562a3b), closes #33575
  • core: Remove debugger statement (#35763) (8f38eb7), closes #35470
  • core: Remove debugger statement when assert is thrown (#35763) (4003538), closes #35470
  • core: add noSideEffects() to make*Decorator() functions (#35769) (dc6a791)
  • core: add noSideEffects() to ɵɵdefineComponent() (#35769) (ba36127)
  • core: add strictLiteralTypes to align core + VE checking of literals (#35462) (4253662)
  • core: adhere to bootstrap options for JIT compiled components (#35534) (e342ffd), closes #35230
  • core: allow null / undefined values in query results (#35796) (5652fb1), closes #35673
  • core: better handing of ICUs outside of i18n blocks (#35347) (c013dd4)
  • core: better inference for circularly referenced directive types (#35622) (173a1ac), closes #35372 #35603 #35522
  • core: correctly concatenate static and dynamic binding to class when shadowed (#35350) (8c75f21), closes #35335
  • core: don’t re-invoke pure pipes that throw and arguments are the same (#35827) (19cfaf7)
  • core: emulate a View Engine type-checking bug with safe navigation (#35462) (a61fe41)
  • core: error in AOT when pipe inherits constructor from injectable that uses DI (#35468) (e17bde9), closes #35277
  • core: error when accessing NgModuleRef.componentFactoryResolver in constructor (#35637) (835618c), closes #35580
  • core: handle <ng-template> with local refs in i18n blocks (#35758) (ef75875)
  • core: incorrectly generating shared pure function between null and object literal (#35481) (22786c8), closes #33705 #35298
  • core: injecting incorrect provider when re-providing injectable with useClass (#34574) (0bc35a7), closes #34110
  • core: log error instead of warning for unknown properties and elements (#35798) (00f3c58), closes #35699
  • core: make subclass inherit developer-defined data (#35105) (a756161)
  • core: provide a more detailed error message for NG6002/NG6003 (#35620) (2d89b5d)
  • core: remove side effects from ɵɵNgOnChangesFeature() (#35769) (9cf85d2)
  • core: remove side effects from ɵɵgetInheritedFactory() (#35769) (c195d22)
  • core: remove support for Map/Set in [class]/[style] bindings (#35392) (2ca7984)
  • core: support sanitizer value in the [style] bindings (#35564) (3af103a), closes #35476
  • core: treat [class] and [className] as unrelated bindings (#35668) (a153b61), closes #35577
  • core: unable to NgModuleRef.injector in module constructor (#35731) (1f8a243), closes #35677 #35639
  • core: undecorated-classes-with-di migration should handle libraries generated with CLI versions past v6.2.0 (#35824) (59607dc), closes #34985
  • core: use proper configuration to compile Injectable in JIT (#35706) (7b13977)
  • core: verify parsed ICU expression at runtime before executing it (#35923) (8c2d842), closes #35689
  • core: workaround Terser inlining bug (#36200) (f71d132)
  • elements: correctly handle setting inputs to undefined (#36140) (e066bdd)
  • elements: correctly set SimpleChange#firstChange for pre-existing inputs (#36140) (447a600), closes #36130
  • elements: schematics fail with schema.json not found error (#35211) (94d002b), closes #35154
  • forms: change Array.reduce usage to Array.forEach (#35349) (554c2cb)
  • ivy: LFrame needs to release memory on leaveView() (#35156) (b9b512f), closes #35148
  • ivy: add attributes and classes to host elements based on selector (#34481) (f95b8ce)
  • ivy: ensure module imports are instantiated before the module being declared (#35172) (b6a3a73)
  • ivy: error if directive with synthetic property binding is on same node as directive that injects ViewContainerRef (#35343) (d6bc63f), closes #35342
  • ivy: narrow NgIf context variables in template type checker (#35125) (40039d8), closes #34572
  • ivy: queries should match elements inside ng-container with the descendants: false option (#35384) (3f4e02b), closes #34768
  • ivy: repeat template guards to narrow types in event handlers (#35193) (dea1b96), closes #35073
  • ivy: set namespace for host elements of dynamically created components (#35136) (480a4c3)
  • ivy: support dynamic query tokens in AOT mode (#35307) (3e3a1ef), closes #34267
  • ivy: wrong context passed to ngOnDestroy when resolved multiple times (#35249) (5fbfe69), closes #35167
  • language-service: Suggest ? and ! operator on nullable receiver (#35200) (3cc24a9)
  • language-service: fix calculation of pipe spans (#35986) (406419b)
  • language-service: get the right ‘ElementAst’ in the nested HTML tag (#35317) (8e354da)
  • language-service: infer $implicit value for ngIf template contexts (#35941) (18b1bd4)
  • language-service: infer context type of structural directives (#35537) (#35561) (54fd33f)
  • language-service: provide completions for the structural directive that only injects the ‘ViewContainerRef’ (#35466) (66c06eb)
  • language-service: provide hover for interpolation in attribute value (#35494) (049f118), closes PR#34847
  • language-service: resolve the real path for symlink (#35895) (4e1d780)
  • language-service: resolve the variable from the template context first (#35982) (3d46a45)
  • localize: allow ICU expansion case to start with any character except } (#36123) (0767d37), closes #31586
  • localize: improve matching and parsing of XLIFF 1.2 translation files (#35793) (350ac11)
  • localize: improve matching and parsing of XLIFF 2.0 translation files (#35793) (08071e5)
  • localize: improve matching and parsing of XTB translation files (#35793) (0e2a577)
  • localize: improve placeholder mismatch error message (#35593) (53f059e)
  • localize: merge translation from all XLIFF <file> elements (#35936) (fc4c3c3), closes #35839
  • localize: show helpful error when providing an invalid cli option (#36010) (aad02e8)
  • localize: support minified ES5 $localize calls (#35562) (df75451), closes #35376
  • ngcc: add default config for angular2-highcharts (#35527) (3cc8127), closes #35399
  • ngcc: allow deep-import warnings to be ignored (#35683) (20b0c80), closes #35615
  • ngcc: capture path-mapped entry-points that start with same string (#35592) (71b5970), closes #35536
  • ngcc: consistently delegate to TypeScript host for typing files (#36089) (9e70bcb), closes #35078
  • ngcc: correctly detect emitted TS helpers in ES5 (#35191) (bd6a39c)
  • ngcc: correctly detect outer aliased class identifiers in ES5 (#35527) (fde8915), closes #35399
  • ngcc: do not crash on entry-point that fails to compile (#36083) (ff665b9)
  • ngcc: do not crash on overlapping entry-points (#36083) (c9f554c)
  • ngcc: ensure that path-mapped secondary entry-points are processed correctly (#35227) (c3c1140), closes #35188
  • ngcc: handle imports in dts files when processing CommonJS (#35191) (b6e8847), closes #34356
  • ngcc: handle mappings outside the content when flattening source-maps (#35718) (73cf7d5), closes #35709
  • ngcc: handle missing sources when flattening source-maps (#35718) (72c4fda), closes #35709
  • ngcc: handle multiple original sources when flattening source-maps (#36027) (a40be00)
  • ngcc: introduce a new LockFile implementation that uses a child-process (#35861) (c55f900), closes #35761
  • ngcc: show helpful error when providing an invalid option (#36010) (1f89c61)
  • ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (6defe96), closes #36119
  • ngcc: use preserve whitespaces from tsconfig if provided (#36189) (aef4323), closes #35871
  • platform-browser: add missing peerDependency on [@angular](https://github.com/angular)/animations (#35949) (64d6f13), closes #35888
  • router: removed unused ApplicationRef dependency (#35642) (c839c05), closes /github.com/angular/angular/commit/5a849829c42330d7e88e83e916e6e36380c97a97#diff-c0baae5e1df628e1a217e8dc38557
  • router: state data missing in routerLink (#33203) (de67978)
  • service-worker: treat 503 as offline (#35595) (96cdf03), closes #35571
  • fix flaky test cases of passive events (#35679) (8ef29b6)

Updated 25 March, 2020

Three new release candidates for Angular 9.1.0 have arrived. These release candidates mostly fix some bugs, preparing for the update.

9.1.0-rc.2 includes a new feature for the compiler and adds dependency info and ng-content selectors to metadata. From the pull request:

This commit augments the FactoryDef declaration of Angular decorated classes to contain information about the parameter decorators used in the constructor. If no constructor is present, or none of the parameters have any Angular decorators, then this will be represented using the null type. Otherwise, a tuple type is used where the entry at index i corresponds with parameter i.

9.1.0-rc.0 updates TypeScript to version 3.8 and fixes some issues with Ivy compatibility. It also optimizes ngcc performance and reliability and i18n now supports RTL locale info.

From the changelog, below are all the new bug fixes that 9.1.0-rc.2, rc.1, and rc.0 include:

  • common: let KeyValuePipe accept type unions with null (#36093) (407fa42), closes #35743
  • elements: correctly handle setting inputs to undefined (#36140) (e066bdd)
  • elements: correctly set SimpleChange#firstChange for pre-existing inputs (#36140) (447a600), closes #36130
  • ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (6defe96), closes #36119
  • ngcc: use preserve whitespaces from tsconfig if provided (#36189) (aef4323), closes #35871
  • compiler: record correct end of expression (#34690) (df890d7), closes #33477
  • core: workaround Terser inlining bug (#36200) (f71d132)
  • localize: allow ICU expansion case to start with any character except } (#36123) (0767d37), closes #31586
  • compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (2ce5fa3)
  • core: adhere to bootstrap options for JIT compiled components (#35534) (e342ffd), closes #35230
  • ngcc: do not crash on entry-point that fails to compile (#36083) (ff665b9)
  • ngcc: do not crash on overlapping entry-points (#36083) (c9f554c)

Updated 19 March, 2020

No rest for Angular. One week after the most recent update, Angular 9.1.0-next.5 is here.

Between all of the usual bug fixes, this update also increases performance and speed with some new tweaks. Source map flattening has been sped up (see the original pull request) and modifies the `generatedSegment` properties in mappings so that they link directly to the following segment. The position of SegmentMarkers will also now be stored in order to avoid further unnecessary computation.

The previously time-consuming task of the DirectoryWalkerEntryPointFinder traversing the entire node_modules library has also been changed to save time. It now stores and re-uses the path to entry-points.

From the changelog, here’s the full list:

Bug Fixes

  • bazel: prod server doesn’t serve files in windows (#35991) (96e3449)
  • bazel: update several packages for better windows support (#35991) (32f099a)
  • bazel: update typescript peer dependency range (#36013) (5e3a898)
  • compiler: do not recurse to find static symbols of same module (#35262) (e179c58)
  • compiler: support directive inputs with interpolations on <ng-template>s (#35984) (79659ee), closes #35752
  • compiler-cli: TypeScript peer dependency range (#36008) (5f7d066)
  • core: don’t re-invoke pure pipes that throw and arguments are the same (#35827) (19cfaf7)
  • core: verify parsed ICU expression at runtime before executing it (#35923) (8c2d842), closes #35689
  • language-service: infer $implicit value for ngIf template contexts (#35941) (18b1bd4)
  • localize: show helpful error when providing an invalid cli option (#36010) (aad02e8)
  • ngcc: consistently delegate to TypeScript host for typing files (#36089) (9e70bcb), closes #35078
  • ngcc: handle multiple original sources when flattening source-maps (#36027) (a40be00)
  • ngcc: show helpful error when providing an invalid option (#36010) (1f89c61)

Features

  • bazel: transform generated shims (in Ivy) with tsickle (#35975) (e3ecdc6), closes #35848
  • compiler: Add sourceSpan and keySpan to TemplateBinding (#35897) (06779cf)
  • compiler: Propagate source span and value span to Variable AST (#36047) (31bec8c)
  • language-service: improve non-callable error message (#35271) (acc483e)
  • ngcc: support invalidating the entry-point manifest (#35931) (8ea61a1)

Performance Improvements

  • ngcc: link segment markers for faster traversal (#36027) (47025e0)
  • ngcc: store the position of SegmentMarkers to avoid unnecessary computation (#36027) (772bb5e)
  • ngcc: use binary search when flattening mappings (#36027) (348ff0c)
  • ngcc: use line start positions for computing offsets in source-map flattening (#36027) (e890082)
  • ngcc: use the EntryPointManifest in DirectoryWalkerEntryPointFinder (#35931) (ec9f4d5)

Updated 11 March, 2020

Just days after Angular 9.1.0-next.3, Angular updated with 9.1.0-next.4. This update mostly focuses on fixes bugs, providing a more stable release. Included in the bug fixes is a new LockFile implementation, using a child-process and some issues with fixed flaky test cases.

In addition, TypeScript 3.8 is now supported. This is currently the latest edition of TypeScript, so be sure to check out what new breaking changes and improvements it adds. Among the list of new features, TypeScript 3.8 includes support for ECMAScript private fields, type-only imports and exports, and top-level await.

9.1.0-next.4 reduces directory traversing, which will reduce the amount of time that findEntryPoints takes 9701.143ms to 4177.278ms.

Here are all the changes in this edition:

Bug Fixes

  • bazel: do not use manifest paths for generated imports within compilation unit (#35841) (9581658)
  • core: undecorated-classes-with-di migration should handle libraries generated with CLI versions past v6.2.0 (#35824) (59607dc), closes #34985
  • language-service: fix calculation of pipe spans (#35986) (406419b)
  • language-service: resolve the real path for symlink (#35895) (4e1d780)
  • language-service: resolve the variable from the template context first (#35982) (3d46a45)
  • localize: improve matching and parsing of XLIFF 1.2 translation files (#35793) (350ac11)
  • fix flaky test cases of passive events (#35679) (8ef29b6)
  • localize: improve matching and parsing of XLIFF 2.0 translation files (#35793) (08071e5)
  • localize: improve matching and parsing of XTB translation files (#35793) (0e2a577)
  • localize: merge translation from all XLIFF <file> elements (#35936) (fc4c3c3), closes #35839
  • ngcc: introduce a new LockFile implementation that uses a child-process (#35861) (c55f900), closes #35761
  • platform-browser: add missing peerDependency on [@angular](https://github.com/angular)/animations (#35949) (64d6f13), closes #35888
  • router: state data missing in routerLink (#33203) (de67978)

Features

Performance Improvements

Updated 9 March, 2020

Hot on the heels of the most recent update comes Angular 9.1.0-next.3. This update includes a long list of bug fixes and performance improvements. Among these improvements includes added micro benchmarks for both destroy hook invocation and host bindings. This improvement closes several pull requests on the topic.

Meanwhile, two new features have been added. Modularization of the Language Service’s diagnostic messages will help centralize error messages and prepares Angular for potential additional features such as annotating diagnostics. (View the original pull request for more information.) In addition to this, now Angular adds zone configuration to TypeScript interfaces.

Let’s have a look at all the newest bug fixes in this release:

Angular 9.1.0-next.3

Bug Fixes

  • animations: allow computeStyle to work on elements created in Node (#35810) (17cf04e)
  • animations: process shorthand margin and padding styles correctly (#35701) (35c9f0d), closes #35463
  • bazel: ng_package rule creates incorrect UMD module exports (#35792) (5c2a908), closes angular/components#18652
  • compiler: support i18n attributes on <ng-template> tags (#35681) (40da51f)
  • compiler: type-checking error for duplicate variables in templates (#35674) (2c41bb8), closes #35186
  • compiler-cli: suppress extraRequire errors in Closure Compiler (#35737) (c296bfc)
  • core: add noSideEffects() to make*Decorator() functions (#35769) (dc6a791)
  • core: add noSideEffects() to ɵɵdefineComponent() (#35769) (ba36127)
  • core: allow null / undefined values in query results (#35796) (5652fb1), closes #35673
  • core: handle <ng-template> with local refs in i18n blocks (#35758) (ef75875)
  • core: log error instead of warning for unknown properties and elements (#35798) (00f3c58), closes #35699
  • core: Remove debugger statement (#35763) (8f38eb7), closes #35470
  • core: Remove debugger statement when assert is thrown (#35763) (4003538), closes #35470
  • core: remove side effects from ɵɵgetInheritedFactory() (#35769) (c195d22)
  • core: remove side effects from ɵɵNgOnChangesFeature() (#35769) (9cf85d2)
  • core: treat [class] and [className] as unrelated bindings (#35668) (a153b61), closes #35577
  • core: unable to NgModuleRef.injector in module constructor (#35731) (1f8a243), closes #35677 #35639
  • core: use proper configuration to compile Injectable in JIT (#35706) (7b13977)
  • ivy: narrow NgIf context variables in template type checker (#35125) (40039d8), closes #34572
  • ivy: support dynamic query tokens in AOT mode (#35307) (3e3a1ef), closes #34267
  • ngcc: allow deep-import warnings to be ignored (#35683) (20b0c80), closes #35615
  • ngcc: handle mappings outside the content when flattening source-maps (#35718) (73cf7d5), closes #35709
  • ngcc: handle missing sources when flattening source-maps (#35718) (72c4fda), closes #35709

Features

Performance Improvements

Updated 2 March, 2020

Angular 10 is scheduled to arrive in May 2020. On the way to the new major version, Angular 9.1.0-next.2 has been released. This beta adds several bug fixes for different areas, including animations, core, language-service and ngcc. For example, in animations, a false positive is no longer returned when detecting Node in Webpack builds and the ɵAnimationDriver has been removed from private exports.

New features have been added for ngcc, bazel and zone.js, whereas the core and Ivy have received performance improvements. Take a look at all that has happened in the beta release as well as in the two previous betas:

Angular 9.1.0-next.2

Bug Fixes

Features

  • ngcc: implement source-map flattening (#35132) (df816c9)
  • bazel: enable ivy template type-checking in g3 (#35672) (8f5b7f3)
  • zone.js add interface definitions which zone extends EventTarget (#35304) (4acb676), closes #35173
  • zone.js add a temp solution to support passive event listeners. (#34503) (f9d483e)
  • zone.js add an tickOptions parameter with property processNewMacroTasksSynchronously. (#33838) (17b862c), closes #33799
  • zone.js support passive event options by defining global variables in zone.js config file (#34503) (d7d359e)

Performance Improvements

  • core: avoid recursive scope recalculation when TestBed.overrideModule is used (#35454) (0a1a989)
  • ivy: remove unused event argument in listener instructions (#35097) (9228d7f)

Angular 9.1.0-next.1

Bug Fixes

  • core: better handing of ICUs outside of i18n blocks (#35347) (c013dd4)
  • core: correctly concatenate static and dynamic binding to class when shadowed (#35350) (8c75f21), closes #35335
  • core: remove support for Map/Set in [class]/[style] bindings (#35392) (2ca7984)
  • ivy: LFrame needs to release memory on leaveView() (#35156) (b9b512f), closes #35148
  • ivy: add attributes and classes to host elements based on selector (#34481) (f95b8ce)
  • ivy: error if directive with synthetic property binding is on same node as directive that injects ViewContainerRef (#35343) (d6bc63f), closes #35342
  • ivy: queries should match elements inside ng-container with the descendants: false option (#35384) (3f4e02b), closes #34768
  • ivy: wrong context passed to ngOnDestroy when resolved multiple times (#35249) (5fbfe69), closes #35167

Features

  • ngcc: pause async ngcc processing if another process has the lockfile (#35131) (eef0753)

Angular 9.1.0-next.0

Bug Fixes

  • bazel: devserver shows blank page in Windows (#35159) (727f92f)
  • bazel: spawn prod server using port 4200 (#35160) (829f506)
  • bazel: update ibazel to 0.11.1 (#35158) (4e6d237)
  • compiler: report errors for missing binding names (#34595) (d13cab7)
  • elements: schematics fail with schema.json not found error (#35211) (94d002b), closes #35154
  • forms: change Array.reduce usage to Array.forEach (#35349) (554c2cb)
  • ivy: ensure module imports are instantiated before the module being declared (#35172) (b6a3a73)
  • ivy: repeat template guards to narrow types in event handlers (#35193) (dea1b96), closes #35073
  • ivy: set namespace for host elements of dynamically created components (#35136) (480a4c3)
  • language-service: Suggest ? and ! operator on nullable receiver (#35200) (3cc24a9)
  • ngcc: ensure that path-mapped secondary entry-points are processed correctly (#35227) (c3c1140), closes #35188

Features

  • compiler-cli: implement NgTscPlugin on top of the NgCompiler API (#34792) (3c69442dbd)

Leave a Reply

avatar
400