Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Modern Angular:Renovation for Your Application...
Search
Manfred Steyer
PRO
March 20, 2025
Programming
480
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
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
88
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
140
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
210
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
Agentic UI
manfredsteyer
PRO
0
220
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
280
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
240
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
170
Other Decks in Programming
See All in Programming
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
380
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
820
Performance Engineering for Everyone
elenatanasoiu
0
250
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.6k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
630
1B+ /day規模のログを管理する技術
broadleaf
0
120
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
0
360
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
830
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
190
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Deep Space Network (abreviated)
tonyrice
0
220
The Pragmatic Product Professional
lauravandoore
37
7.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
440
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Un-Boring Meetings
codingconduct
0
330
Ethics towards AI in product and experience design
skipperchong
2
320
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The untapped power of vector embeddings
frankvandijk
2
1.8k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
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