Skip to content
Episode 23 69 minutes

MicroFrontends at Scale with Florian Rappl

Key Takeaways from our conversation with Florian Rappl

Florian Rappl

Author of 'The Art of Micro Frontends', Microsoft MVP, Creator of Piral

Señors @ Scale host Neciu Dan sits down with Florian Rappl — author of 'The Art of Micro Frontends,' creator of the Piral framework, and Microsoft MVP — to explore how micro frontends are transforming how we build scalable web applications. Florian shares hard-won lessons from over a decade of building distributed systems, from smart home platforms to enterprise portals for some of Germany's largest companies.

🎧 New Señors @ Scale Episode

This week, I spoke with Florian Rappl, author of "The Art of Micro Frontends", creator of the Piral framework, and Microsoft MVP.

Florian has spent more than a decade building distributed web systems that actually scale in the real world. Before becoming a solutions architect, he built everything from enterprise portals for Germany's largest companies to smart home platforms — and along the way became one of the most active voices in the micro frontend community.

In this episode, we dive deep into the philosophy behind Piral, why loose coupling is more important than multi-framework support, how micro frontends might be the key to unlocking AI-powered development workflows, and the "inverse dependency" pattern that makes micro frontends truly resilient.

⚙️ Main Takeaways

1. Piral was born from building the same architecture three times

After implementing similar distributed frontend architectures in multiple projects, Florian decided to open source the lessons learned.

  • The origin: After a smart home project, a customer portal for a major German optics company, and other distributed systems, Florian saw patterns emerging.
  • The challenge: Making the solution generic enough to be a framework while still allowing customization.
  • The timing: Piral development started in early 2019, with the first release towards the end of 2019 — before Module Federation existed.

2. Piral is to Module Federation what Kubernetes is to Docker

Module Federation is a tool for packaging and loading code, but it doesn't solve architecture — that's where Piral comes in.

  • The analogy: Module Federation is like Docker — it solves packaging and delivery. Piral is like Kubernetes — it's the orchestrator.
  • What Module Federation lacks: Cross-framework components, architectural boundaries, loose coupling, connection to discovery services.
  • The relationship: Piral can use Module Federation under the hood for distributed sharing, but provides the full orchestration layer.

3. The inverse dependency pattern changes everything

Instead of micro frontends depending on each other, they offer functionality — and this reversal makes the architecture resilient.

  • The old way: "I have a micro frontend and I depend on a component from another micro frontend, so I need to grab this thing."
  • The problem: What if the other micro frontend doesn't exist? What if they renamed something? It can break at any time.
  • The new way: "I offer something." Register a page (offer to the router), register an extension component (offer a named component that others can use).
  • The result: Micro frontends become truly independent and loosely coupled.

4. Extension slots enable composition without coordination

The extension slot pattern allows micro frontends to contribute components without knowing about each other.

  • The concept: Define a slot (like "customer-actions" in a table row) and any micro frontend can register components for that slot.
  • The power: Fine-grained permissions become automatic — if a user doesn't have edit rights, simply don't ship that micro frontend. No if-conditions needed.
  • The consistency: Everything in a micro frontend is either all there or all not there, ensuring consistent UI.
  • The uniqueness: Other frameworks don't have this notion of extension slots, which is why people "think too complicated" when coming to Piral.

5. Micro frontends with Piral are faster than you'd expect

Loading 50-60 micro frontends can happen so fast that users don't even notice something different is happening.

  • The entry files: Each micro frontend has a tiny entry JavaScript file (500 bytes to a few KB) that contains the setup function.
  • The lazy loading: Everything else (components, pages) is lazy loaded on demand.
  • The caching advantage: Unlike monolithic apps where one change busts all hashes, micro frontend caching is granular — only changed micro frontends need to be re-downloaded.
  • The cache strategy: The discovery service sets indefinite caching because the same version URL always returns the same content.

6. Distributed sharing solves the "dependency hell" problem

Sharing dependencies in micro frontends is notoriously difficult, but Piral supports multiple approaches.

  • Central sharing: The old approach — rely on dependencies the app shell provides. Works but creates bottlenecks when updating.
  • Distributed sharing: Each micro frontend brings its dependencies but checks if a compatible version already exists before loading.
  • The mechanism: "I bring React with me. I will first check if React is already there. If it's compatible, I'll use it. If not, I'll load mine."
  • The future: Module Federation is becoming the primary system as more bundlers support it, with System.js remaining as a secondary option.

7. Start in a monorepo, split when needed

Piral was designed for polyrepos (the hard case), but starting in a monorepo is often simpler.

  • The philosophy: Design for polyrepo, which automatically works for monorepo — the reverse isn't true.
  • The progression: Start with all micro frontends in one place, then move them out when you see the need (a team owns it, it changes more frequently, etc.).
  • The flexibility: Piral lets you combine sources from online, local builds, and unpublished outputs all at once.

8. Don't create header and footer micro frontends

Thinking in horizontal slices (header, sidebar, footer) is a common anti-pattern.

  • The problem: If the header team owns the menu, every other team will constantly ask them to add links. Not scalable.
  • The solution: Put the header in your design system/app shell and add extension slots where other teams can register their menu items.
  • The principle: Cut by functional domains and teams, not by visual areas of the screen.
  • The composition: Piral's extension slots let you compose contributions from multiple domains into a single visual area.

9. Enable micro frontends first, then extract progressively

Don't start by cutting your application into 200 micro frontends.

  • Step 1: Give your application the ability to use micro frontends (install Piral) — you don't even need a micro frontend yet.
  • Step 2: Create your first micro frontend for a new feature.
  • Step 3: Extract an existing feature into a micro frontend.
  • The evolution: Scale up progressively based on team needs, not a big-bang rewrite.
  • The escape hatch: You can stop at any time if it's not working for your organization.

10. Nano services: Full-stack micro frontends are coming

Piral is expanding to include backend composition alongside frontend composition.

  • The concept: Deploy a frontend micro frontend and its backend "nano service" together as a unit.
  • The benefit: They never break because they're not fitting together — they're always deployed in sync.
  • The architecture: The backend part runs in your gateway, the frontend part in the app shell, but they're developed and deployed together.
  • The future: This brings microservice lessons to micro frontends and could be "a game changer" for reliability.

🧠 What I Learned

  • Module Federation is a tool; Piral is the orchestrator — they solve different problems at different levels.
  • The inverse dependency pattern ("I offer" vs "I depend") makes micro frontends truly loosely coupled.
  • Extension slots are Piral's killer feature — they enable composition without coordination between teams.
  • Loading 50-60 micro frontends can be imperceptible because entry files are tiny and everything else is lazy loaded.
  • Distributed dependency sharing is superior to central sharing because it removes update bottlenecks.
  • Start in a monorepo and extract to polyrepo when you see natural boundaries forming.
  • Never create horizontal slice micro frontends (header, footer) — cut by functional domains instead.
  • Enable micro frontends first with zero micro frontends, then grow progressively.
  • Cache busting is granular with micro frontends — only changed modules need re-downloading.
  • Nano services (backend + frontend as a unit) are coming to Piral for guaranteed deployment consistency.
  • AI-assisted development works better with smaller, modular codebases.

💬 Favorite Quotes

"You no longer think in the way that I have a micro frontend and I depend on a component of another micro frontend. Because this approach is really fragile. What you would rather want is to reverse that flow. Instead of saying 'I want something,' you say 'I offer something.'"

"Piral is a little bit like Kubernetes. You can run it with Module Federation, but it is the orchestrator."

"The beauty of this architecture is that if a user doesn't have the right to edit a customer, you don't ship this micro frontend. The button isn't shown, the dialog is also not loaded, nothing is shown there."

"We show people solutions built on Piral that have 50 to 60 micro frontends loaded. The thing is just there and they're like, 'okay, what's the catch?' It's so fast that they don't even realize what just happened."

"Only the thing where you changed it, that will actually change. You can cache micro frontends indefinitely because the same version URL always returns the same content."

"Thinking in smaller boxes is essentially what makes the AI tools already work today."

🎯 Also in this Episode

  • How smart home systems influenced Piral's modular architecture
  • Why Single SPA wasn't checking the boxes in 2019
  • The setup function and teardown lifecycle in Piral micro frontends
  • How the API object enables plugin-like registrations
  • Why runtime integration is essential for dynamic user permissions
  • The trade-offs of runtime micro frontend loading
  • How Piral's discovery service works with the orchestrator
  • System.js vs Module Federation for dependency sharing
  • The React hooks singleton problem and why sharing React is mandatory
  • How Piral CLI handles different bundlers (Webpack, RSPack, Vite, ESBuild)
  • Emulator packages for polyrepo development
  • Change detection and hot module reloading in development
  • The Piral Cloud feed service and its commercial features
  • Rule engines for A/B testing and feature flags
  • CSS collision detection between micro frontends
  • Why Piral's feature flags might replace LaunchDarkly
  • Server-side rendering and island architecture with micro frontends
  • What's coming in Piral v2 and v3

Resources

More from Florian:

Book Recommendations:

🎧 Listen Now

🎧 Spotify
📺 YouTube
🍏 Apple Podcasts

Episode Length: 69 minutes on micro frontend architecture, the inverse dependency pattern, extension slots, and building truly modular web applications that scale across teams.

Whether you're an architect evaluating micro frontends for your organization or a developer curious about modular patterns that actually work in production, this conversation offers battle-tested insights you won't find in the documentation.

Happy building,
Dan

💡 More Recent Takeaways

Hypermedia at Scale with Carson Gross
Episode 53

Señors @ Scale host Neciu Dan sits down with Carson Gross, creator of HTMX, principal at Big Sky Software, and computer science professor at Montana State University. Carson has been programming for more than 30 years, from HyperCard on a family Mac to Excel macros for an industrial engineering firm, a JVM language called Gosu, a Rails startup, and the 2012 library Intercooler.js that he rewrote without jQuery during COVID and released as HTMX. His argument is that the web was built as a hypermedia system, that links and forms are control logic living inside the document, and that most of what we call REST today fails the one constraint Roy Fielding cared about. He also covers which apps HTMX is wrong for, what changed in HTMX 4 and why 3 was skipped, and why his students now sit pencil and paper exams. It is a conversation about using the browser as the hypermedia client it was built to be.

Performance at Scale with Ryan Townsend
Episode 52

Señors @ Scale host Neciu Dan sits down with Ryan Townsend, Principal Product Manager for Performance at Cloudflare, where he owns real user monitoring and the wider performance measurement remit. Ryan has over 20 years in web technology and a decade as a CTO: he co-founded Shift Commerce, the first enterprise scale headless SaaS, and was CTO of Matalan Direct after the business he built came second in Shopify's Build a Business competition with only three months of trading. We cover why the 'Rails doesn't scale' story was always a myth, the resume driven development he kept finding as a fractional CTO, the personalization script that claimed zero performance impact and cost seconds at P90, and how Shift ran over 99% cache hit ratios by splitting the anonymous page from the basket.

Design Systems at Scale with Szymon Chudy
Episode 51

Señors @ Scale host Neciu Dan sits down with Szymon Chudy, Software Engineer at Netflix on the Hawkins team, which builds the design system behind thousands of internal applications used to produce the shows you watch. Before Netflix, Szymon spent two and a half years at Lokalise, growing from senior to staff frontend engineer and leading frontend direction across teams, and before that he toured Poland as a reggae guitarist while freelancing as a web developer in the off season. From why the source of truth for a design system lives in code, to Hawkins Consumer versus Hawkins Professional, to the UI paved road that changes what freedom and responsibility mean at Netflix, to measuring the team on adoption rate and shipping codemods and agent skills for every breaking change, to what being an informed captain who farms for dissent means in practice, this is the design system conversation for anyone maintaining a platform other engineers have to choose to use.

Agentic Systems at Scale with Vilva Athiban
Episode 50

Señors @ Scale host Neciu Dan sits down with Vilva Athiban, Lead AI Engineer at Omio, one of Europe's leading travel platforms, where he architects and ships agentic AI systems in production. Vilva designed and delivered Omio AI, along with the MCP integrations that connect AI agents to the company's systems. He never set out to switch from JavaScript to AI: in June 2024 Omio picked two people to start an AI team reporting to the CEO and CTO, and he learned on the job, from his first API call to an LLM up to a consumer-facing agent whose backend runs on nothing but MCP. From why a bigger model with medium thinking came out cheaper than the mini, to capping tool calls because LLMs are built for token maxing, to the whale hunting request that showed his team guardrails are subjective, this is a conversation about what production agentic systems look like once the tutorials run out.

📻 Never Miss New Takeaways

Get notified when new episodes drop. Join our community of senior developers learning from real scaling stories.

💬 Share These Takeaways

Share:

Want More Insights Like This?

Subscribe to Señors @ Scale and never miss conversations with senior engineers sharing their scaling stories.