Microfrontends
An architectural approach that splits large web frontends into independent, deployable subapplications owned by individual teams.
Classification
- ComplexityHigh
- Impact areaOrganizational
- Decision typeArchitectural
- Organizational maturityIntermediate
Technical context
Principles & goals
Use cases & scenarios
Compromises
- Fragmentation of user experience
- Performance regressions due to composition and loading
- Rising operational costs due to multiple pipelines
- Establish shared interface contracts
- Central UX guidelines and visual tokens
- Automated end‑to‑end tests across boundaries
I/O & resources
- Modular domain partitioning and APIs
- Automated CI/CD pipelines
- Shared design system and UX standards
- Independently deployable UI modules
- Clearly defined interfaces and contracts
- Metrics for release frequency and performance
Description
Microfrontends split monolithic web frontends into independent, deployable subapplications owned by separate teams. The approach increases team autonomy, independent releases, and technology diversity. It introduces integration, performance, and UX responsibilities that require cross-team governance, standardized contracts and testing to succeed.
✔Benefits
- Increased team autonomy and independent releases
- Targeted technological evolution per domain
- Scalable organizational structure for large frontends
✖Limitations
- Increased integration effort and complexity
- Higher overhead for shared UX and consistency
- Not suitable for very small applications
Trade-offs
Metrics
- Release frequency per microfrontend
Measures how often individual microfrontends are deployed independently.
- Time‑to‑restore (frontend incidents)
Average recovery time after a frontend outage.
- Perceived UI consistency score
Qualitative measurement of UX coherence across microfrontends.
Examples & implementations
Spotify‑style feature teams
Separate feature teams develop isolated UI modules that are composed via a shell.
E‑commerce domain split
Product detail, cart and checkout run as independent microfrontends with separate deploys.
Legacy migration
An old SPA is incrementally split into microfrontends to avoid risky big‑bang releases.
Implementation steps
Analyze domains and define ownership
Implement composition layer and routing
Set up CI/CD, testing and observability per microfrontend
Iterate and expand modularization incrementally
⚠️ Technical debt & bottlenecks
Technical debt
- Multiple build pipelines without standardization
- Outdated shared libraries that are not synchronized
- Insufficient observability for composed flows
Known bottlenecks
Misuse examples
- Splitting by technical preference rather than domains
- Each team uses incompatible tooling without adapters
- Omitting shared tests and contract traceability
Typical traps
- Underestimating cross-team coordination
- Performance debt from too many runtime requests
- Hidden dependencies between microfrontends
Required skills
Architectural drivers
Constraints
- • Browser load times and initial bundle size
- • Organizational maturity for governance
- • Requirement for clear interface contracts