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
The Status of Micro Frontends
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Manfred Steyer
PRO
March 23, 2022
Programming
520
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The Status of Micro Frontends
Manfred Steyer
PRO
March 23, 2022
More Decks by Manfred Steyer
See All by Manfred Steyer
Human in the Loop Beyond Approval: Toward True Collaboration @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
57
Agentic UI: Where the Agent meets the User @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
57
A2UI as an Architecture Question: Agentic UI Between AI Freedom and Control
manfredsteyer
PRO
0
92
AI-Ready Angular Architectures Architecture as Executable Contract
manfredsteyer
PRO
0
250
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
manfredsteyer
PRO
0
49
Beyond Chatbots: Agentic UI with Open Standards @AGNTcon 2026 in Amsterdam
manfredsteyer
PRO
0
150
Next-Level Frontends: Agentic Web UIs Under the Hood
manfredsteyer
PRO
0
110
Agentic UI with Open Standards @ngGraz Sep 2026
manfredsteyer
PRO
0
120
Agentic UI with Open Standards @GDG Salzburg, Bgl & Prishtina
manfredsteyer
PRO
0
99
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
16k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.1k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
140
すこし踏み込む CancellationToken
htkym
2
1.7k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
780
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
400
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
250
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Done Done
chrislema
187
17k
Between Models and Reality
mayunak
4
490
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Tell your own story through comics
letsgokoyo
1
1.1k
The browser strikes back
jonoalderson
0
1.8k
GitHub's CSS Performance
jonrohan
1033
470k
Odyssey Design
rkendrick25
PRO
2
870
Transcript
@ManfredSteyer ManfredSteyer The Status of Micro Frontends Manfred Steyer, ANGULARarchitects.io
@ManfredSteyer Booking App Booking App Check-in App Check-in App Boarding
App Boarding App Luggage App Luggage App
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer ✓Hyperlinks ✓Server-Side Includes ✓Server-Side orchestration
@ManfredSteyer The Final Frontier
@ManfredSteyer ▪ Loading into Browser ▪ Bundle Size ▪ Version
Conflicts
@ManfredSteyer #1 Analysis #2 Implementation
@ManfredSteyer Manfred Steyer
@ManfredSteyer
@ManfredSteyer Which one is the best?
@ManfredSteyer It’s all about consequences in your very situation!
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer • Autarkic teams, so that … • it's possible
to do changes w/o coordinating with other teams • own architectural decisions • Migrating step by step to new tech stacks : • Fully consistent design • Bundle size
@ManfredSteyer Booking Booking Check-in Check-in Boarding Boarding Luggage Luggage
@ManfredSteyer Should mirror a real-world business domain Large enough: Most
use cases don't overlap domains Small enough: One team can handle it
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer Monorepo Structure
@ManfredSteyer https://nrwl.io/nx
@ManfredSteyer Visualize Module Structure
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer µFrontend µFrontend µFrontend
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer µService Providing a (SPA based) Shell µApp µApp µApp
Shell
@ManfredSteyer • iframes (very present) • Web Components (a bit)
@ManfredSteyer const Component = await import('other-app/cmp');
@ManfredSteyer Shell (Host) Microfrontend (Remote) // Maps Urls in //
webpack config remotes: { mfe1: "http://..." } // Expose files in // webpack config exposes: { './Cmp': './my.cmp.ts' } import('mfe1/Cmp')
@ManfredSteyer How to Get the Microfrontend's URL? Shell (Host) Microfrontend
(Remote) RemoteEntry.js <script src="…"></script>
@ManfredSteyer Shell (Host) Microfrontend (Remote) shared: [ "@angular/core", "…" ]
shared: [ "@angular/core", "…" ]
@ManfredSteyer Selecting the highest compatible version 10.0 10.1
@ManfredSteyer Compiled app code is not officially backwards compatible
@ManfredSteyer Conflict: No highest compatible version 11.0 10.1
@ManfredSteyer
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … Booking App Booking App Boarding App Boarding App Publish shared libs seperately via npm Repository n Repository 2 Repository 1 Version Mismatches? Strict Borders
@ManfredSteyer Booking Booking Boarding Boarding Shared Shared Feature Feature Feature
Feature Feature Feature Feature Feature Feature Feature … … … … … … … … … … … … … … … … … … Booking App Booking App Boarding App Boarding App
@ManfredSteyer Decoupling: Access Restrictions/ Linting (Nx) Separate Deployment* No Version
Conflicts (just one version!)
@ManfredSteyer
@ManfredSteyer Hyperlinks µFrontend µFrontend µFrontend
@ManfredSteyer <iframe></iframe>
@ManfredSteyer
@ManfredSteyer Abstracting away differences b/w frameworks Shadow DOM Properties/ Events
@ManfredSteyer
@ManfredSteyer const Component = await import('other-app/cmp');
@ManfredSteyer const main = await import('other-app/main'); main.bootstrap();
@ManfredSteyer const main = await import('other-app/main'); main.bootstrap(); const rootElm =
document.createElement('app-root') document.body.appendChild(rootElm);
@ManfredSteyer await import('other-app/main'); // Self-Bootstrapping const rootElm = document.createElement('app-root') document.body.appendChild(rootElm);
@ManfredSteyer await import('other-app/main'); const rootElm = document.createElement('app-root') document.body.appendChild(rootElm); WrapperComponent
@ManfredSteyer
@ManfredSteyer https://red-ocean-0fe4c4610.azurestaticapps.net
@ManfredSteyer Free eBook ANGULARarchitects.io/book Updated for Module Federation and Alternatives
@ManfredSteyer Conclusion Know your architecture goals + Evaluate! Know your
architecture goals + Evaluate! Moduliths vs. Micro Frontends Moduliths vs. Micro Frontends Monorepo vs. multiple repos Monorepo vs. multiple repos Module Federation: Tempting Module Federation: Tempting
@ManfredSteyer d Slides & Examples Remote Company Workshops and Consulting
http://angulararchitects.io