Inferensys

Glossary

Micro-Frontend

An architectural style where a web application's front end is decomposed into smaller, independently developable, testable, and deployable features owned by different teams.
Data engineer managing feature store on laptop, feature definitions visible, casual data engineering session.
ARCHITECTURAL PATTERN

What is Micro-Frontend?

A micro-frontend is an architectural style where a web application's front end is decomposed into smaller, independently developable, testable, and deployable features owned by different teams.

A micro-frontend is an architectural style extending the concepts of microservices to the front end, decomposing a web application's user interface into smaller, semi-independent feature modules. Each module is owned end-to-end by a cross-functional team, responsible for its specific business domain from the database to the user interface. This approach enables independent development, testing, and deployment cycles, allowing teams to ship updates without coordinating with the entire application's release schedule.

The architecture is implemented through integration techniques like Module Federation, Web Components, or Edge-Side Includes (ESI) to compose these independent fragments into a cohesive user experience at runtime. A key challenge is maintaining a consistent design system and shared state across fragments while avoiding tight coupling. This pattern is particularly suited for large-scale applications managed by multiple teams, where it reduces codebase complexity and organizational bottlenecks.

ARCHITECTURAL PRINCIPLES

Key Characteristics of Micro-Frontends

Micro-frontends extend the principles of microservices to the browser layer, decomposing monolithic user interfaces into smaller, independently deliverable units of vertical functionality.

01

Independent Deployability

The foundational principle of micro-frontends. Each micro-frontend is an autonomous unit that can be built, tested, and deployed to production on its own release cycle without coordinating with other teams. This is achieved by encapsulating the entire vertical slice—from UI to API calls—within a single team's ownership. A change to a shopping cart feature should never require rebuilding the product listing page. This independence is enforced through contract testing and strict API versioning between the host application and its fragments.

02

Technology Agnosticism

Each micro-frontend team is free to choose its own technology stack—React, Vue, Svelte, or even vanilla JavaScript—without affecting other teams. This avoids the lock-in of a single framework and allows gradual migration. The host application, often called the app shell, remains framework-agnostic by loading each micro-frontend as a black box. This is typically implemented via Module Federation in Webpack or native ES modules with import maps, ensuring that shared dependencies like React are deduplicated at runtime to avoid bundle bloat.

03

Resilient by Isolation

A JavaScript error in one micro-frontend must not crash the entire application. This is enforced through error boundaries and strict encapsulation. Each fragment runs in its own isolated scope, often using Shadow DOM or iframes for CSS containment, preventing style leaks. If the 'Product Reviews' micro-frontend fails to load, the rest of the page remains functional. This resilience is critical for large-scale e-commerce platforms where a single point of failure in a monolithic frontend can halt all revenue.

04

Vertical Team Ownership

Micro-frontends align team structure with business capabilities, not technical layers. A single team owns the end-to-end feature—from the database to the pixel. This eliminates cross-team dependencies for UI development. For example, the 'Checkout' team owns the checkout micro-frontend, its backend-for-frontend (BFF) API, and its data store. This structure, known as Conway's Law in action, reduces communication overhead and enables teams to deliver features faster without waiting for a shared UI layer team.

05

Composition at Runtime

Unlike build-time integration, micro-frontends are assembled in the browser at runtime. The app shell fetches each micro-frontend's manifest and renders it into a designated slot. Composition strategies include:

  • Client-side composition: The shell uses JavaScript to mount fragments.
  • Edge-side composition: A CDN stitches fragments together using Edge-Side Includes (ESI).
  • Server-side composition: A Node.js service assembles the page from fragments before sending HTML. This runtime approach allows for dynamic A/B testing and feature flagging without redeploying the shell.
06

Shared Contracts, Not Code

Micro-frontends communicate through well-defined, versioned contracts, not shared global state. A shared event bus using Custom DOM Events or a lightweight pub/sub library allows decoupled communication. For cross-cutting concerns like authentication, a shared Web Component or a dedicated service provides the user session. The critical rule is to avoid a shared component library that forces all teams to upgrade simultaneously; instead, use Module Federation to share dependencies at runtime with strict version negotiation.

MICRO-FRONTEND ARCHITECTURE

Frequently Asked Questions

Clear, technical answers to the most common questions about decomposing frontend monoliths into independently deliverable features.

A micro-frontend is an architectural style where a web application's front end is decomposed into smaller, independently developable, testable, and deployable features owned by different teams. It works by extending the principles of microservices to the browser layer, where each feature slice is built as a self-contained application that can be integrated into a unified user experience at runtime. Integration typically occurs through one of several composition techniques: client-side composition using Module Federation or Web Components, server-side composition via Edge-Side Includes (ESI) or View Composition, or build-time integration through packages. Each micro-frontend owns its own technology stack, release cycle, and data fetching logic, communicating with other fragments only through well-defined contracts and a shared event bus. This architecture enables multiple autonomous teams to ship features in parallel without blocking each other, dramatically reducing coordination overhead in large-scale applications.

ARCHITECTURAL COMPARISON

Micro-Frontend vs. Monolithic Frontend

A technical comparison of the micro-frontend architectural style against the traditional monolithic frontend approach for large-scale web application development.

FeatureMicro-FrontendMonolithic Frontend

Deployment Independence

Independent Team Ownership

Technology Agnosticism

Initial Build Complexity

High

Low

Runtime Performance Overhead

2-5% JS bundle overhead

Minimal

Cross-Team Coordination

Minimal

High

End-to-End Testing Complexity

High

Moderate

Shared State Management

Complex (event-driven)

Centralized (single store)

Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.