Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Modern Angular:Renovation for Your Application...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Manfred Steyer
PRO
March 20, 2025
Programming
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Modern Angular: Renovation for Your Applications @angularDays 2025 Munich
Manfred Steyer
PRO
March 20, 2025
More Decks by Manfred Steyer
See All by Manfred Steyer
A2UI as an Architecture Question: Agentic UI Between AI Freedom and Control
manfredsteyer
PRO
0
65
AI-Ready Angular Architectures Architecture as Executable Contract
manfredsteyer
PRO
0
150
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
manfredsteyer
PRO
0
34
Beyond Chatbots: Agentic UI with Open Standards @AGNTcon 2026 in Amsterdam
manfredsteyer
PRO
0
140
Next-Level Frontends: Agentic Web UIs Under the Hood
manfredsteyer
PRO
0
97
Agentic UI with Open Standards @ngGraz Sep 2026
manfredsteyer
PRO
0
100
Agentic UI with Open Standards @GDG Salzburg, Bgl & Prishtina
manfredsteyer
PRO
0
90
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
530
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
230
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
140
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
カツオ、ご期待ください
suneo3476
0
130
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
280
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
650
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
370
Are APIs Still Relevant in the AI Era?
soyuka
0
390
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3.1k
Java 27新機能 / Java 27 new features
kishida
2
190
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Google's AI Overviews - The New Search
badams
0
1.6k
Agile that works and the tools we love
rasmusluckow
331
22k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Music & Morning Musume
bryan
48
7.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Crafting Experiences
bethany
1
360
Transcript
@ManfredSteyer @ManfredSteyer Modern Angular Renovation for Your Applications Manfred Steyer,
ANGULARarchitects.io
@ManfredSteyer Agenda #1 esbuild #2a Standalone Components #2b Standalone APIs:
Router & Http #3 Signals #4 SSR & Hydration #5 Control Flow & @defer
@ManfredSteyer About me… Manfred Steyer, ANGULARarchitects.io (Remote) Angular Workshops and
Consulting Google Developer Expert for Angular Blog, Books, Articles, and Talks about Angular Manfred Steyer
@ManfredSteyer @ManfredSteyer 4 #1: ApplicationBuilder esbuild & more
@ManfredSteyer New Generation of Bundlers webpack vite
@ManfredSteyer ng update
@ManfredSteyer … or do it later ng update @angular/cli --name
use-application-builder
@ManfredSteyer @ManfredSteyer 8 #2: Standalone Components
@ManfredSteyer NgModules + EcmaScript Modules import { NgModule } from
'@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; […] @NgModule({ imports: [BrowserModule, OtherModule], declarations: [AppComponent, OtherComponent, OtherDirective], providers: [], bootstrap: [AppComponent], }) export class AppModule {} TypeScript Modules Angular Modules
@ManfredSteyer Standalone Components @Component({ standalone: true, imports: [ […], FlightCardComponent,
CityPipe, CityValidator, ], selector: 'flight-search', templateUrl: '…' }) export class FlightSearchComponent { […] }
@ManfredSteyer Global Providers bootstrapApplication(AppComponent, { providers: [ MyGlobalService, importProvidersFrom(LegacyModule), provideRouter(APP_ROUTES),
] });
@ManfredSteyer Standalone Component → NgModules @Component({ standalone: true, selector: 'app-root',
imports: [ […] TicketsModule, ], templateUrl: '…' }) export class AppComponent { }
@ManfredSteyer Standalone Component → NgModules @Component({ standalone: true, selector: 'app-root',
imports: [ […] TicketsModule, ], templateUrl: '…' }) export class AppComponent { }
@ManfredSteyer NgModule → Standalone Blocks @NgModule({ imports: [ FlightCardComponent, ],
declarations: [ MyTicketsComponent ], }) export class TicketsModule { }
@ManfredSteyer NgModule → Standalone Blocks @NgModule({ imports: [ FlightCardComponent, ],
declarations: [ MyTicketsComponent ], }) export class TicketsModule { }
@ManfredSteyer Automatic Migration ng g @angular/core:standalone
@ManfredSteyer @ManfredSteyer 17 DEMO
@ManfredSteyer More Migrations ng g @angular/core:route-lazy-loading ng g @angular/core:inject-migration
@ManfredSteyer @ManfredSteyer 19 #3: Signals
@ManfredSteyer Signals: Simple Reactivity Signal as Producer 4711 Consumer read
set notify 4712
@ManfredSteyer Component With Signals flights = signal<Flight[]>([]); const flights =
await this.flightService.findAsPromise(from, to); this.flights.set(flights); <div *ngFor="let f of flights()"> <flight-card [item]="f" /> </div>
@ManfredSteyer @ManfredSteyer 22 DEMO
@ManfredSteyer Application Code as a Script
@ManfredSteyer Reactive Programming: Paradigm Shift!
@ManfredSteyer Marble Run
@ManfredSteyer Marble Run Data Binding
@ManfredSteyer @ManfredSteyer 27 DEMO
@ManfredSteyer @ManfredSteyer 28 Race Conditions
@ManfredSteyer Resource Prevents Race Conditions Pancakes Sacher Cake Ice Cream
Pancakes
@ManfredSteyer Resource Prevents Race Conditions Pancakes Sacher Cake Ice Cream
Pancakes „switchMap semantics“
@ManfredSteyer httpResource in Angular 19.2 dessertResource = httpResource(() => 'http://.../desserts');
@ManfredSteyer httpResource in Angular 19.2 dessertResource = httpResource(() => ({
url: 'http://.../desserts‘, params: { originalName: this.originalName(), englishName: this.englishName() } }));
@ManfredSteyer @ManfredSteyer 33 Stores
@ManfredSteyer Stores Streamline Reactive Flow Component Store "Intention" Signal sync/
async computed() computed()
@ManfredSteyer @ManfredSteyer 35 Two Reasons for a Store Manage State
Streamline Dataflow
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer @ManfredSteyer 39 NGRX Signal Store
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, […] );
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, withState({ from: 'Paris', to: 'London', […] }), […] );
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, withState({ from: 'Paris', to: 'London', […] }), withComputed(([…]) => ({ […] })), withMethods(([…]) => ({ })), withHooks({ […] }) );
@ManfredSteyer @ManfredSteyer 43 DEMO
@ManfredSteyer @ManfredSteyer 44 SSR & Hydration
@ManfredSteyer When to use SSR? B2C Initial Page Loads Conversion
Rate! SEO Social Preview
@ManfredSteyer Adding SSR ng new myProject --ssr or ng add
@angular/ssr
@ManfredSteyer @ManfredSteyer 47 DEMO
@ManfredSteyer @ManfredSteyer 48 New Control Flow @defer
@ManfredSteyer @if @if(auth.userName) { <h2>Welcome {{auth.userName}}!</h2> } @else { <h2>Welcome!</h2>
<p>Please log in!</p> }
@ManfredSteyer @if @if(auth.userName) { <h2>Welcome {{auth.userName}}!</h2> } @else if(auth.trial) {
<h2>Welcome to this trial version!</h2> <p>Please sign up to get the full version!</p> } @else { <h2>Welcome!</h2> <p>Please log in!</p> }
@ManfredSteyer @for @for(f of flights; track f.id) { <flight-card [item]="f"
[(selected)]="basket[f.id]" /> }
@ManfredSteyer @for @for(f of flights; track f.id) { <flight-card [item]="f"
[(selected)]="basket[f.id]" /> } @empty { <p>No flights found!</p> }
@ManfredSteyer Automatic Migration ng g @angular/core:control-flow
@ManfredSteyer @ManfredSteyer 54 DEMO
@ManfredSteyer @defer @defer (on viewport) { <app-lazy></app-lazy> } @placeholder {
<div>Placeholder</div> }
@ManfredSteyer @ManfredSteyer 56 DEMO
@ManfredSteyer @ManfredSteyer 57 Modern Angular 2nd Edition angularArchitects.io/modern Free eBook
@ManfredSteyer Summary esbuild: Build Performance Standalone: Simplicity APIs for Router
& Http: Simplicity Signals: Reactivity & Performance SSR: Simplicity & Initial Page Load Control Flow & @defer: Simplicity & Performance
@ManfredSteyer 59 [Social Media] Manfred Steyer [web] ANGULARarchitects.io Manfred Steyer
@ Manfred Steyer Slides & Examples Remote Company Workshops and Consulting http://angulararchitects.io