by Gerard Sans | @gerardsans
SANS
GERARD
Spoken at 130 events in 33 countries
Future ready
2016
Renderer (v1)
NgModules (SSR)
Stable and performant
Animations and HttpClient
New Renderer: ViewEngine (v2)
New angular.io website
2017
Smaller, Faster and Easier to use
Differential Loading
New Renderer: Ivy preview (v3)
Lazy routes dynamic imports
2019
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template: `<h1>{{title}}</h1>`
})
export class AppComponent {
  title = "Angular Renderer";
}app.component.ts
<app-root></app-root>
<script src="app.js"></script>
//app.js
function app(title) {
  const app = document.querySelector("app-root");
  const h1 = document.createElement("h1");
  const text = document.createTextNode(title);
  h1.appendChild(text);
  app.appendChild(h1);
}
app("Angular Renderer"); //bootstrap
<app-root>
  <h1>Angular Renderer</h1>
</app-root>
Template Data
Template HTML
Angular Interpreter
DOM
Template Instructions
Template HTML
DOM
import { 
  Component, ɵrenderComponent as renderComponent 
} from '@angular/core';
@Component({
  selector: 'app',
  template: `<h1>{{title}}</h1>`
})
class AppComponent {
  title="Ivy Renderer";
}
renderComponent(AppComponent);var AppComponent = /** @class */ (function () {
  AppComponent.ngComponentDef = i0.ɵdefineComponent({
    type: AppComponent,
    selectors: [["app-root"]],
    consts: 2,
    vars: 1,
    template: function AppComponent_Template(rf, ctx) {
      if (rf & 1) {
        i0.ɵelementStart(0, "h1");
        i0.ɵtext(1);
        i0.ɵelementEnd();
      } if (rf & 2) {
        i0.ɵtextBinding(1, i0.ɵinterpolation1("", ctx.title, ""));
      }
    }, encapsulation: 2
  });
}());
export { AppComponent };Ivy Compiler
v7
v8
v9
Ivy Runtime
Ivy Preview
Improved Type Checking
Smaller Bundles
Backwards Compatible
Faster Compilation
Simpler Debugging
v9
v9
v9
Angular Hello world app minified uncompressed
Source: Medium
<div>
</div>
<h1>
</h1>
Breakpoints in HTML
Debug Change Detection
Small Memory Footprint
Faster Tests
Bug fixes
Source: Medium
{
  "compilerOptions": {
    "experimentalDecorators": true,
    ...
  },
  "angularCompilerOptions": {
    "fullTemplateTypeCheck": true,
    "enableIvy": true,
  }
}
tsconfig.json