A plan for Angular version 8.0 and Ivy

February 9th, 2019

“When will Ivy be ready?” is a question we get asked every week. Here’s an update on how things are going with version 8.0, and our plans for releasing and finalizing Ivy.

We are planning on having Ivy as an opt-in preview as part of the Angular version 8.0 release in Q2 of this year.

A plan for Angular version 8.0 and Ivy

What’s coming up in version 8.0?

While most of the team is heads-down on Ivy, we have several updates we are working towards for version 8.0. Keep in mind that these plans are subject to change before the final release.

  • Differential Loading of Modern JavaScript
    CLI will begin producing both legacy (ES5) and modern (ES2015+) JavaScript bundles as a part of the build process, which will be differentially loaded client-side to improve the loading speed and time to interactive (TTI) for modern browsers. This work is based on and built collaboratively with Manfred Steyer and his project ngx-build-modern.
  • Opt-in Ivy Preview
    Get a preview of how your application will work with Ivy, and give us feedback so we can incorporate necessary changes and improvements into the full release.
  • Angular Router Backwards Compatibility
    We’re adding a backwards compatibility mode that simplifies the upgrade path for large projects. It will make it easier for teams to move to Angular by allowing lazy loading of parts of AngularJS apps using $route APIs.
  • Improved Web Worker Bundling
    Web workers are a great way of writing code that runs off of the main thread, improving the speed and parallelizability of your application. We’re adding bundling support for web workers to our CLI to address this common request from developers.
  • Opt-In Usage Sharing
    To better align our efforts to what the community needs, we’re adding opt-in telemetry to our CLI. With your opt-in consent, we’ll begin collecting anonymous information about things like the commands used and the build speed. The more information we have about how developers use Angular, the better we can make it.
  • Dependency Updates
    As always, we’re updating our dependencies on tools like TypeScript, RxJS, and Node to keep in sync with the rest of the ecosystem.

What will the Ivy rollout look like?

In version 8.0, we’re aiming to have an opt-in preview of Ivy. If you aren’t familiar with Ivy, watch Kara talk about Ivy at Google I/O 2018.

The opt-in preview will allow you to switch between the Ivy and View Engine build and rendering pipelines in your project. Details on how to do this will be provided in the upcoming beta builds. Changing this will switch your application to be built with Ivy runtime instructions instead of the ViewEngine runtime. Your application will be built with the Ivy compiler, and any dependencies you use from Angular or other 3rd parties should keep working as we’ll run them through our compatibility compiler. The preview will allow you to identify any issues with dependencies and help us to improve our compatibility.

In the opt-in preview, you can expect:

  1. Generated code that is easier to read and debug at runtime
  2. Faster re-build time
  3. Improved payload size (Real world applications should see some size improvements, but many more improvements are planned)
  4. Improved template type checking
  5. Great backwards compatibility

Ivy will not be ready for all use cases. Some features such as i18n or Angular Universal will likely not have full compatibility yet in the preview. Our language service will not be functional during the Ivy preview.

This opt-in preview is focused on moving applications to the Ivy compiler and runtime instructions without requiring developers to rewrite their applications. There are many Ivy-specific APIs that will be added to our public API later as a part of Angular Labs and future stable releases.

When will everything be ready?

We can’t commit to a fixed schedule and this plan may need to change, but our plan is to enter RC in April 2019, and to release 8.0.0 with general availability about a month later. We’ll be using the opt-in preview of Ivy in 8.0.0 to validate our promises about backwards compatibility and to work on any automated migration tools we might need.

We hope to turn Ivy on for everyone as a part of the next major version this fall. We do not plan on needing an opt-out of Ivy in version 9, due to our focus on backwards compatibility and supporting existing applications.

We’re really excited about the the full Ivy rollout in version 9 unlocking many doors for developers and for our team. We’ll be sharing our plans for the new developer and user experiences, features, and APIs that this rollout enables once we are further along in the Ivy rollout process.