The angular team recently announced the minor Release of Angular 9. It upgrades Angular 9 to version 9.1.

This release provides minor bug fixes and improvement of features that came out in Angular 9.

  • TypeScript 3.8 Support
  • 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 Improvements

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