The future with Ivy
×

The rise of a new engine

Ivy ? 🤔
In a nutshell 🌰
@MartinaKraus11
New Renderer since version 9
Focusing on small bundle size
Together with Bazel up 30% faster compilation time
Angular Apps should be easier to debug
How to update?
@MartinaKraus11
ng update @angular/core @angular/cli
https://update.angular.io/
Backward Compatibility
@MartinaKraus11
Angular provides two compilers:
-
Ngtsc (Ivy compiler): compiles Ivy-compatible code
- Ngcc (Compatibility Compiler): Convert old style modules
And what can I do with Ivy? 🤔
GDE in Angular
Women Techmakers Ambassador
Trainer and Consultant



@MartinaKraus11

That's Me
Martina Kraus

martinakraus

@MartinaKraus11






Why support Ivy ? 🤔
How can we benefit from Ivy?
@MartinaKraus11
-
Better build times, thanks to incremental compilation
-
Smaller and faster bundles
-
Sets the ground for lazy-loading components
-
Is easy to debug
-
Introduces new non-zone.js based change detection
-
Uses higher-order components
@MartinaKraus11
HTML Template
Data
Template
Angular Interpreter
DOM
ViewEngine: Rendering pipeline
@MartinaKraus11
HTML Template
Template instructions
DOM
Ivy rendering pipeline
Bundle Sizes
@MartinaKraus11

SO MUCH
SMALLER
FASTER
EASIER
WOW

WOW
WOW
New ways of writing Angular Apps
@MartinaKraus11
Lazy loading components
Higher Order Components
Zoneless
change detection
New ways of writing Angular Apps
@MartinaKraus11
Lazy loading components
Higher Order Components
Zoneless
change detection
Lazy loading components
@MartinaKraus11

Lazy loading components
@MartinaKraus11

ComponentFactoryResolver
Lazy loading components
@MartinaKraus11

ViewContainerRef
Injector
Lazy loading components
@MartinaKraus11

DEMO
New ways of writing Angular Apps
@MartinaKraus11
Lazy loading components
Higher Order Components
Zoneless
change detection
ComponentDefinition
@MartinaKraus11

ComponentDefinition
@MartinaKraus11

Higher-Order Component
@MartinaKraus11

Higher-Order Component
@MartinaKraus11

DEMO
And more ...
@MartinaKraus11
Modifying component traits at runtime
(Automatically unsubscribing/ subscribing, changing styles)
More dynamic
Every Ivy component is a standalone component
New ways of writing Angular Apps
@MartinaKraus11
Lazy loading components
Higher Order Components
Zoneless
change detection
Zones.js
@MartinaKraus11
Hard dependency of every Angular Application
"zone.js": "~0.10.2"
NgZone triggers the change detection automatically
Takes care of all event handlers and data bindings
The issue about Zones
@MartinaKraus11
More than 100kB
many performance issues
(long cd cycles together with frequent browser events)
too much magic
Zone-less Change Detection
@MartinaKraus11
Ivy has been defined without considering Zone.js

markDirty
@MartinaKraus11
Calling Angular to check data Binding with Ivy Instruction

markDirty
@MartinaKraus11

DEMO
@MartinaKraus11
Ivy is an enabler: (For more dynamic applications)
- Lazy-loading components
- Higher-Order Components
- optional ngModules/ ngZone
Summary
me@martina-kraus.io
@MartinaKraus11
martina-kraus.io
Slides: https://slides.com/martinakraus/angularup-ivy-2020
Repo: https://github.com/martinakraus/ivy-AngularUP



Thank you !!!
AngularUP - Ivy overall
By Martina Kraus
AngularUP - Ivy overall
Angular Ivy talk at AngularUP
- 900