Angular 8 Is Here: What's in it and Why You Should Care

DZone 's Guide to

Angular 8 Is Here: What's in it and Why You Should Care

Angular 8 is now available. Learn about some of our favorite new features, why we think they are important and how they make your life as an Angular developer easier.

· Web Dev Zone ·
Free Resource

As you no doubt saw, version 8 of Angular was released recently. The update spans across the framework, Angular Material, and the CLI. We're always eager to dig in when a new version ships and wanted to share a few of the new features we find interesting and why.

After reading, let us know what you think! What else about this major release are you looking to take advantage of?

Differential Loading by Default

Prior to version 8 of Angular, in order to make sure your application was compatible with the majority of browsers, compilation (ES5 - Typescript that is compiled and bundled) and polyfills (which provide functionality not available in legacy browsers) were used.

In Angular 8, differential loading — which means the CLI actually builds a modern bundle and a legacy bundle — is handled by the Angular CLI as part of the build process for deployment by default.

According to the documentation, the Angular CLI uses two configurations for differential loading:

  • Browserslist - The browserslist configuration file is included in your application project structure and provides the minimum browsers your application supports. See the Browserslist spec for complete configuration options.
  • tsconfig.json - The target in the TypeScript compilerOptions determines the ECMAScript target version that the code is compiled to. Modern browsers support ES2015 natively, while ES5 is more commonly used to support legacy browsers.
Note: Differential loading is currently only supported when using es2015 as a compilation target. When used with targets higher than es2015, a warning is emitted during build time.

One of the biggest benefits to differential loading that applications will save 7-20% of their bundle size.

Lazy Loading

Angular has long supported lazy loading by using the loadChildren key in the route configuration. With version 8, the Angular team has migrated from a custom syntax that was built into the Angular toolchain to the industry standard dynamic import. For developers who are using VSCode or WebStorm, this provides a significantly better experience, as those editors will now be able to understand and validate the imports.

Preview Version of Ivy

With Angular 8, a preview version of Ivy (the next-generation rendering pipeline for Angular) is available. The Angular team still recommends it should be used for testing only and not yet for production. That said, the promise of Ivy is that it will make Angular applications smaller and faster.

Web Worker Support

In Angular 8, you can generate new web workers from the CLI. This allows you to speed up your application if you are doing any sort of CPU-intensive processing because it offloads work to a background thread.

New Builders API

With this new version, Angular now provides a new Builders API that allows you to perform building, testing, and deployment processes that were traditionally done with Schematics.

And Much More

As mentioned before, this is just a sampling of what is included in the Angular 8 release. Our engineers and advocates are excited to continue to dive deeper into all of the new features and functionality that have been delivered and you can expect to see more in-depth blogs in the coming weeks.

The Angular team has been very transparent about the fact that this release is an "evolution, not a revolution." We believe they delivered on that promise in a big way and are making Angular developers lives easier with the new functionality. 

angular, angular 8, front-end development, javascript frameworks, web dev

Published at DZone with permission of Sara Faatz , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}