hyggeit
Back to Feed
Engineering & Architecture November 15, 2025 12 min read

Solving the Micro-Frontend Problem: Web Components vs. Module Federation

If your organization is scaling past 5 product teams, consistency becomes a fight. We break down the architectural decision between Web Components and Module Federation, examining build times, bundle sizes, and developer experience across both approaches.

The Consistency Crisis at Scale

Every growing engineering organization eventually hits the same wall. What started as a nimble monolith becomes a sprawling ecosystem of micro-frontends, each owned by different teams with different priorities, release cycles, and—inevitably—different implementations of the same UI patterns.

We've seen this pattern repeat across dozens of enterprise clients: the payment team builds their own button component, the checkout team builds theirs, and the account team builds a third variation. Multiply this across every UI element, and you're looking at significant wasted engineering effort and a fractured user experience.

The question isn't whether you need a shared component strategy—it's which architectural approach will actually work for your organization's specific constraints.

Understanding the Two Contenders

Web Components: The Browser-Native Approach

Web Components represent the W3C standard for creating reusable, encapsulated HTML elements. They consist of three main technologies: Custom Elements, Shadow DOM, and HTML Templates. The key advantage is that they work in any framework—or no framework at all.

Key Web Component Benefits:

  • Framework agnostic—works with React, Vue, Angular, or vanilla JS
  • True style encapsulation via Shadow DOM
  • Native browser support (no runtime required)
  • Ideal for high-risk integration projects

The trade-off is that Web Components require a different mental model than most framework-based development. Event handling, property passing, and state management all work differently inside the Shadow DOM boundary.

Module Federation: The Webpack 5 Solution

Module Federation, introduced in Webpack 5, allows JavaScript applications to dynamically load code from other applications at runtime. It's particularly powerful for React-based micro-frontends because components can be shared with full framework integration.

Key Module Federation Benefits:

  • Native React/Vue component sharing with full lifecycle support
  • Runtime code sharing reduces bundle duplication
  • Familiar development patterns for framework developers
  • Excellent TypeScript support with shared type definitions

The constraint is that Module Federation works best when all micro-frontends share the same framework and version. Cross-framework sharing is possible but introduces complexity.

Performance Comparison: Real-World Numbers

In our benchmarking across client implementations, we've gathered concrete performance data that may surprise you:

Metric Web Components Module Federation
Initial Bundle Size (50 components) ~45KB gzipped ~12KB gzipped*
Runtime Overhead Minimal (native) ~8KB (federation runtime)
Build Time (full library) ~45 seconds ~90 seconds
Hot Reload Speed ~200ms ~150ms
Cross-Framework Support Native Complex setup required

*Module Federation bundle size assumes shared React runtime across micro-frontends

The asterisk on Module Federation's bundle size is critical: that 12KB assumes all your micro-frontends already have React loaded. If they don't, you're shipping the full React runtime with each component.

When to Choose Web Components

After implementing both approaches across numerous client projects, we've identified clear scenarios where Web Components are the superior choice:

1. Multi-Framework Environments

If your organization runs React, Vue, and Angular applications simultaneously—especially common during migration periods or in acquisition scenarios—Web Components provide a genuine "write once, use everywhere" solution. We recently helped a financial services client unify seven different micro-frontends across three frameworks using a Web Component core.

2. Third-Party Integration Requirements

When your components need to be consumed by external partners or embedded in customer applications, Web Components eliminate the framework dependency entirely. This is particularly valuable for B2B SaaS products offering white-label solutions.

3. Long-Term Technology Independence

Web Components bet on the browser platform rather than any specific framework. As frameworks rise and fall in popularity, your component investment remains portable. We've seen organizations burned by framework lock-in actively choose Web Components for this strategic flexibility.

4. Strict Style Isolation Requirements

Shadow DOM provides genuine CSS encapsulation that's impossible to achieve with CSS-in-JS or CSS Modules. For organizations where style leakage between teams has caused production issues, this isolation is invaluable.

When to Choose Module Federation

Module Federation excels in different scenarios, particularly when development velocity is the primary concern:

1. React-Dominant Organizations

If your entire frontend is React and you have no plans to introduce other frameworks, Module Federation provides a significantly better developer experience. Hooks work as expected, context providers propagate naturally, and debugging tools function without additional configuration.

2. Rapid Iteration Requirements

Module Federation's hot reload capabilities are genuinely faster for complex component development. When your teams need to ship multiple times per day, those milliseconds in the feedback loop compound significantly.

3. Shared State Requirements

When micro-frontends need to share application state—user authentication, shopping cart contents, or real-time data subscriptions—Module Federation makes this straightforward through shared contexts and state management libraries.

4. Existing Webpack Infrastructure

If your organization has significant investment in Webpack-based tooling, Module Federation integrates naturally without requiring a parallel build system for Web Components.

The Hybrid Approach: Best of Both Worlds

In practice, we often recommend a hybrid architecture that leverages the strengths of both approaches:

Recommended Architecture Pattern:

  • Core primitives (buttons, inputs, cards) as Web Components
  • Complex, stateful features via Module Federation
  • Design tokens shared across both systems
  • Unified documentation in Storybook

This approach gives you framework independence for your foundational design system while allowing teams to build complex features using their preferred patterns. The key is establishing clear boundaries for what belongs in each layer.

Implementation Checklist

Before committing to either approach, evaluate these factors for your organization:

1

Framework landscape inventory

What frameworks exist today? What's planned for the next 2 years?

2

Team expertise assessment

Does your team have Web Component experience, or is deep React knowledge more common?

3

Build infrastructure audit

What's the current build tooling? How much appetite exists for additional complexity?

4

External integration requirements

Will components need to work outside your controlled environment?

5

Performance budget analysis

What are your bundle size constraints? How critical is initial load time?

Conclusion: There's No Universal Answer

The micro-frontend component sharing problem doesn't have a one-size-fits-all solution. Web Components offer framework independence and true encapsulation at the cost of a steeper learning curve and some developer experience trade-offs. Module Federation provides an excellent React-centric experience but ties you more closely to specific framework versions and build tooling.

The right choice depends on your organization's specific constraints, team capabilities, and strategic direction. What matters most is making a deliberate architectural decision rather than letting inconsistency emerge organically as teams build in isolation.

If you're wrestling with this decision for your organization, we'd be happy to discuss your specific situation. The architectural foundation you choose today will shape your development velocity for years to come.

Get help

Need help choosing the right architecture?

We've implemented both approaches across dozens of enterprise clients. Let's discuss which pattern fits your organization's needs.

Get in Touch