This talk may contain strong language, harsh truths, and serious passion.
"But I heard about Micro Frontends at < x > Conference, everyone's doing them! They're going to solve all our problems."
An architectural style where independently deliverable frontend applications are composed into a greater whole
Ship features faster
Team inadvertently replicates code, repeated calls already made for similar data. App performance tanks.
Who gets the bug? How does the reporter know which team owns where the bug occurred?
Dev team implements UX design in Micro Frontend - now has a different look & feel from rest of application.
Unit tests pass, but change breaks another app needing dependency.
Error: Unhandled Runtime Error
TypeError: Cannot read properties of undefined (reading 'call')
Team is using Module Federation with NextJS applications and want to update to version 13 to take advantage of App Router + Server Components. They get vague, untraceable errors, release notes are inaccurate, documentation is incomplete, github issues raised don't have clear resolutions.
Mid level engineer is experienced in Angular development, but doesn't have deep knowledge around zoneJS - the basis of Angular's change detection, is unable to debug issue, especially when their standalone app is running fine.
A team undertakes and application rewrite, using the strangler pattern to upgrade pieces at a time. There is no process or project management, QA, UX, and business stakeholders have no idea which parts of the application have been upgraded to assure quality or know how much of the uplift effort is left.
Shipping good, small, maintainable, clean code is hard.
Micro Frontends help, but they aren't a silver bullet.
ffs, just use a monorepo
More JavaScript. More frameworks. More API requests. Less performance.
Adopt Micro Frontends
...
profit?
Understand your team's skill level, foresight capabilities, and likelihood to debug their way out of breaking changes. Consider tools and approaches accordingly.
Consider adopting consumer-driven contracts. Foster opportunities to collaborate across verticals - technical leadership is key.
"Agree on naming conventions where isolation is not possible yet. Namespace CSS, Events, Local Storage and Cookies to avoid collisions and clarify ownership." - Michael Geers, micro-frontends.org
Micro Frontends are only as good as your ability to successfully and seamlessly deploy them. If you don't have good CI/CD infrastructure in place first you'll be fighting an uphill battle. Set up complete infrastructure per Micro Frontend application.
Document code styles, dependencies, deployment flows, & more.
Have a backup plan to call in experts if your team gets stuck.
( is happy to be your experts, we've seen it all)
There's a lot currently evolving and it's an exciting time in the JavaScript ecosystem as the tooling for MFEs continues to grow.
I can't give you a list of best practices or one single tool or solution that will solve your needs - because those don't exist yet. Possibly ever.
Micro Frontends solve BUSINESS problems, not technical ones.
If your problem isn't directly related to a product/business need, you probably don't need Micro Frontends.
Single-spa:
single-spa.js.org
Bitovi Blog: How to Build a Micro Frontend with Webpack's Module Federation Plugin
Bitovi Blog: React Everywhere with Vite and React-to-Web-Component
The Angular Plus Show: What are Micro Frontends? with Luca Mezzalira
Slides available at:
MicroFrontendProblems.jenniferwadella.com
Need help with your MFE strategy? Work with me! jennifer@bitovi.com