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
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
500
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
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
92
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
90
Agentic UI
manfredsteyer
PRO
0
140
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
240
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
220
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
150
Agentic AI & UI: Arcitecture, HITL, Emerging Standards
manfredsteyer
PRO
0
170
Agentic UI Requires Standards: AG-UI, A2UI, and MCP Apps Work Together @Angular London
manfredsteyer
PRO
1
97
Signal Forms: Beyond the Basics @ngBelgrade 2026
manfredsteyer
PRO
0
220
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Lessons from Spec-Driven Development
simas
PRO
0
170
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
490
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
The NotImplementedError Problem in Ruby
koic
1
700
さぁV100、メモリをお食べ・・・
nilpe
0
140
AI時代のUIはどこへ行く?その2!
yusukebe
21
7k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.3k
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
net-httpのHTTP/2対応について
naruse
0
470
JavaDoc 再入門
nagise
0
320
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
140
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Designing Experiences People Love
moore
143
24k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
Claude Code のすすめ
schroneko
67
230k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Designing for humans not robots
tammielis
254
26k
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