System Design Space
Knowledge graphSettings

Updated: June 22, 2026 at 8:11 AM

Micro Frontends in Action (short summary)

medium

Micro-frontends in practice strip the romance out of decomposition quickly. Once a product is split into vertical slices, routing, shared dependencies, release coordination, and real ownership questions move to the surface.

The chapter shows that frontend composition needs more than technical tricks; it needs a durable operating model. Migrating away from a monolithic SPA is not just code-splitting, but a reorganization of how teams and interface parts integrate.

In reviews and interviews, the material helps separate useful decomposition from an expensive illusion of independence. It gives you a practical way to discuss the app shell, shared contracts, release autonomy, and the point where team freedom starts to collide with coherent user experience.

Practical value of this chapter

Design in practice

Turn the book's ideas into decisions about the app shell, composition models, platform contracts, and domain-module boundaries.

Decision quality

Evaluate the architecture through team autonomy, contract compatibility, release observability, and integration cost.

Interview articulation

Structure answers as domain boundaries → shared layer → composition model → migration path → operating risks.

Trade-off framing

Make the price of independence explicit: shared code, release coordination, performance budget, and support for old contracts.

Official source

Micro Frontends in Action

A book about micro-frontends, composition models, platform contracts, and migration from a monolithic SPA.

Open book page

Micro Frontends in Action

Authors: Michael Geers
Publisher: Manning Publications, 2020
Length: 296 pages

Michael Geers on micro-frontends: composition models, platform contracts, team autonomy, and migration from a monolithic SPA.

Original

The book treats micro-frontends not as a collection of small apps, but as a way to align interface architecture with team structure. The core ideas are product vertical slices, the app shell, composition models, and the shared platform layer.

The payoff starts the moment a team sits down and writes its platform contract explicitly: routing, session, observability, design tokens, independent releases, and contract tests. Skip that step and micro-frontends become an expensive way to distribute chaos between teams.

Micro-frontend architecture map

The map shows how a micro-frontend becomes part of a product: where composition happens, what the shell owns, and how a team ships changes without a large shared release.

Path

RequestShellFragmentsUnified screen

Where the unified user experience is assembled

Composition can happen on the server, in the browser at runtime, or during the build. The choice affects first screen speed, team autonomy, and integration cost.

Entry

A user opens a route

The route determines which domain parts are needed for the page.

routes to

Frame

The shell chooses the assembly model

The server can return ready HTML, the browser can load modules at runtime, or the build can join artifacts ahead of time.

assembles

Domains

Micro-frontends provide their fragments

Catalog, cart, profile, and checkout stay within the boundaries of their owning teams.

renders

Experience

The user sees one coherent screen

The platform hides seams while preserving domain independence where it is actually useful.

Architecture meaning

When to look here

  • You need to choose between server, browser runtime, and build-time composition.
  • The team is trading first screen speed against release independence.
  • The shell boundary is unclear.

A composition model should not be chosen by technology alone. It follows product routes, SEO needs, first screen speed, and platform-team maturity.

The main idea of the book

A micro-frontend is not “many small React apps.” It is an independently owned product area with clear data boundaries and its own release cycle. Teams get autonomy only when they also accept shared platform rules and own the user journey end to end.

Composition models

Server-side composition

The shell assembles fragments before sending the page and returns unified HTML. The payoff is SEO, first-screen speed, and centralized routing control. The price is that teams stay tied to the server path and ship in its rhythm.

Browser runtime composition

Domain modules are loaded in the browser at runtime. Each team ships its slice independently — and pays for it with discipline: version compatibility, a client-side code budget, and careful handling of load failures.

Build-time composition

All domain parts are assembled into one artifact ahead of time. This is the easiest way to start and debug, but release independence disappears: a change in one domain pulls the whole build and release cycle with it.

What should be shared in the platform layer

Platform contract

  • Routing rules and deep-link compatibility.
  • Authentication session boundary and safe context propagation between modules.
  • Unified observability: client metrics, logs, traces, and release-version correlation.
  • Design tokens and baseline UI primitives without turning shared packages into a business-logic warehouse.

Team model

  • Ownership follows business domains, not technical UI layers.
  • Each vertical slice has its own development, validation, and release cycle.
  • Shared contracts are versioned, and deprecated variants leave through an explicit retirement path.
  • Architecture reviews check module boundaries instead of becoming manual approval for every release.

Practical migration plan

  1. Identify bounded contexts in the frontend: catalog, cart, checkout, profile, and other standalone journeys.
  2. Introduce an app shell and the smallest useful platform contract: routes, session, observability, design tokens, and compatibility rules.
  3. Move zones gradually with the Strangler Fig pattern instead of rewriting the entire SPA in one release.
  4. Stabilize integration with contract tests, shared API versioning, and compatibility checks before release.
  5. Clarify owners, release coordination, rules for changing shared dependencies, and support windows for old contracts.

Antipatterns

  • Splitting the frontend by UI libraries instead of business domains and user journeys.
  • Creating dozens of shared dependencies and losing team autonomy.
  • Failing to agree on a platform contract for routes, session, telemetry, and baseline UI.
  • Migrating a legacy frontend through one big-bang rewrite instead of route-by-route replacement.
  • Ignoring the performance budget and the combined weight of client-side modules.

Related chapters

  • Building Micro-Frontends - gives the foundational model: domain decomposition, ownership boundaries, and early frontend-platform principles for migration.
  • The Art of Micro Frontends - extends the practical approach into mature platform work: contract management, orchestration, and operating practices for large organizations.
  • Frontend Architecture for Design Systems - connects micro-frontends with team-level architecture standards: component contracts, developer experience, and UI consistency.
  • React.js: The Documentary - adds ecosystem context for the component model and many practices behind independent frontend development.
  • Vite: The Documentary - shows why local iteration speed and modern build tooling matter for teams shipping many independent modules.

Where to find the book

Enable tracking in Settings