Sun. Mar 29th, 2020

Angular 9.1 released, Web front-end framework

3 min read

Angular is a platform that makes it easy to build applications with the web. Angular combines declarative templates, dependency injection, end to end tooling, and integrated best practices to solve development challenges. Angular empowers developers to build applications that live on the web, mobile, or the desktop.



Progressive Web Apps: Use modern web platform capabilities to deliver app-like experiences. High performance, offline, and zero-step installation.
Native: Build native mobile apps with strategies from Ionic Framework, NativeScript, and React Native.
Desktop: Create desktop-installed apps across Mac, Windows, and Linux using the same Angular methods you’ve learned for the web plus the ability to access native OS APIs.
Code Generation: Angular turns your templates into code that’s highly optimized for today’s JavaScript virtual machines, giving you all the benefits of hand-written code with the productivity of a framework.
Universal: Serve the first view of your application on node.js, .NET, PHP, and other servers for near-instant rendering in just HTML and CSS. Also paves the way for sites that optimize for SEO.
Code Splitting: Angular apps load quickly with the new Component Router, which delivers automatic code-splitting so users only load code required to render the view they request.

Angular 9.1 has been officially released.


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


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