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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Manfred Steyer
PRO
February 10, 2022
Programming
590
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
Beyond Chatbots: Agentic UI with Open Standards @AGNTcon 2026 in Amsterdam
manfredsteyer
PRO
0
31
Next-Level Frontends: Agentic Web UIs Under the Hood
manfredsteyer
PRO
0
38
Agentic UI with Open Standards @ngGraz Sep 2026
manfredsteyer
PRO
0
68
Agentic UI with Open Standards @GDG Salzburg, Bgl & Prishtina
manfredsteyer
PRO
0
64
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
500
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
210
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
300
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
300
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
210
Other Decks in Programming
See All in Programming
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
200
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.3k
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
0
130
App Intentsのビルドプロセスを支える技術
kntkymt
0
370
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
200
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
690
Intent as Code
shoppingjaws
6
1k
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
170
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.7k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Statistics for Hackers
jakevdp
799
230k
Music & Morning Musume
bryan
47
7.4k
Marketing to machines
jonoalderson
1
5.8k
Six Lessons from altMBA
skipperchong
29
4.5k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
The Curse of the Amulet
leimatthew05
3
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
So, you think you're a good person
axbom
PRO
2
2.2k
Accessibility Awareness
sabderemane
1
210
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