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
5 Steps to Your Frankenstein Micro Frontends
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Manfred Steyer
PRO
February 10, 2022
Programming
600
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
5 Steps to Your Frankenstein Micro Frontends
Manfred Steyer
PRO
February 10, 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
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
390
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
380
Railsバージョンを4倍にした話
optim
0
160
気持ちぃ〜角丸 Squircle
ryu1013
0
300
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
2
1.9k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
660
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Skip the Path - Find Your Career Trail
mkilby
1
250
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Designing for Timeless Needs
cassininazir
1
520
Balancing Empowerment & Direction
lara
6
1.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Paper Plane
katiecoart
PRO
5
54k
Design in an AI World
tapps
1
350
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
Transcript
@ManfredSteyer ManfredSteyer 5 Steps to Your Frankenstein Micro Frontends Manfred
Steyer, ANGULARarchitects.io
@ManfredSteyer Egg-Laying Woolly Milk Pig (German Metaphor)
@ManfredSteyer Booking App Booking App Check-in App Check-in App Boarding
App Boarding App Luggage App Luggage App Micro Frontends
@ManfredSteyer
@ManfredSteyer
@ManfredSteyer Booking App Booking App Check-in App Check-in App Boarding
App Boarding App Luggage App Luggage App One Reason: Migrating Step by Step (1) (1) (2+) (2+)
@ManfredSteyer Booking App Booking App Check-in App Check-in App Boarding
App Boarding App Luggage App Luggage App Onother Reason: Merger
@ManfredSteyer
@ManfredSteyer Contents #1: Module Federation 101 #2: Loading several SPAs
#3: 5 Steps to Your Solution
@ManfredSteyer Manfred Steyer
@ManfredSteyer
@ManfredSteyer Idea const Component = await import('other-app/comp')
@ManfredSteyer Webpack 5 Module Federation 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 Share Libs? Shell (Host) Microfrontend (Remote) shared:
[ "@angular/core", "…" ] shared: [ "@angular/core", "…" ]
@ManfredSteyer ❤️
@ManfredSteyer await import('other-app/main'); const rootElm = document.createElement('my-element') document.body.appendChild(rootElm); WrapperComponent It's
a bit easier if this is a web component
@ManfredSteyer The Best of Both Worlds
@ManfredSteyer https://red-ocean-0fe4c4610.azurestaticapps.net
@ManfredSteyer Free eBook ANGULARarchitects.io/book Updated for Module Federation and Alternatives
@ManfredSteyer
@ManfredSteyer Some Ugly Pitfalls and Workarounds Multiple Routers Bundle Size
Cache Angular Platform Zone.js
@ManfredSteyer Further Reading on Tricky Details etc.
@ManfredSteyer
@ManfredSteyer // webpack.config.js in Micro Frontend plugins: [ new ModuleFederationPlugin({
name: "react", filename: "remoteEntry.js", exposes: { './web-components': './app.js', }, shared: ["react", "react-dom"] }), ]
@ManfredSteyer // Routing Config in Shell { //path: 'react', matcher:
startsWith('react'), component: WebComponentWrapper, data: { type: 'script', remoteEntry: 'https://[…]/remoteEntry.js', remoteName: 'react', exposedModule: './web-components', elementName: 'react-element' } as WebComponentWrapperOptions },
@ManfredSteyer // Path Matcher in both, Shell and Micro Frontends
{ //path: 'react', matcher: startsWith('react'), component: WebComponentWrapper, data: { type: 'script', remoteEntry: 'https://[…]/remoteEntry.js', remoteName: 'react', exposedModule: './web-components', elementName: 'react-element' } as WebComponentWrapperOptions },
@ManfredSteyer // Bootstrapping in both, Shell and Micro Frontends bootstrap(AppModule,
{ production: environment.production });
@ManfredSteyer // app.component.ts // Make shell share zone.js shareNgZone(ngZone); //
Only needed in MFEs: connectRouter(router);
@ManfredSteyer const sharedMappings = new mf.SharedMappings(); sharedMappings.register( path.join(__dirname, '../../tsconfig.json'), ['@my-project/local-lib-in-monorepo'],
@ManfredSteyer https://github.com/manfredsteyer/react-app
@ManfredSteyer
@ManfredSteyer // Path Matcher in both, Shell and Micro Frontends
{ //path: 'react', matcher: startsWith('react'), component: WebComponentWrapper, data: { type: 'script', remoteEntry: 'https://[…]/remoteEntry.js', remoteName: 'react', exposedModule: './web-components', elementName: 'react-element' } as WebComponentWrapperOptions },
@ManfredSteyer You Need a Good Reason! Module Federation: Sharing Code
Web Components: Hiding Frameworks and Versions
@ManfredSteyer Take Care of the Egg-Laying Woolly Milk Pig!
@ManfredSteyer d Slides & Examples Remote Company Workshops and Consulting
http://angulararchitects.io