Federation Solved Composition. Nobody Solved Deployment Reliability
Why Module Federation doesn't solve deployment reliability. The gap every MFE team rebuilds: canary releases, rollback, and safe deployments. What's missing from your stack

Why your microfrontend framework isn't solving your biggest operational problem—and what you're missing
The Conversation I Keep Having
Over the past five years, I've had the same conversation with dozens of engineering teams, over and over:
Them: "We're adopting Module Federation. Our team just shipped three new MFEs last quarter. Deployment velocity is great."
Me: "Nice. How long does a rollback take?"
Them: pause "Uhh... if something goes wrong, we have to rebuild the entire frontend, run the pipeline, and redeploy. Maybe 10–15 minutes?"
Me: "And canary releases?"
Them: longer pause "We built custom tooling for that. It's... fragile. Each team has their own version."
The pattern is consistent: Every team we talk to is strong on composition and weak on operational reliability.
What Happened: Federation Won, Then Stopped
Module Federation (Webpack, Vite, others) solved a real problem: How do you compose independent frontend modules at runtime?
The answer was elegant:
- Build each MFE independently
- Define public contracts (shared dependencies, APIs)
- Load at runtime via manifest
- Compose at the URL/slot level
Problem solved. Netflix, Meta, Shopify, Airbnb—all operating at scale with federation frameworks. Modern, modular, clean architecture.
But here's what federation didn't solve:
The Unsolved Problem: Safe, Fast Deployment
Federation is about composition. It doesn't say anything about orchestration.
Think about it:
- Composition: "Which modules load in which slots, and how do they communicate?"
- Orchestration: "How do we deploy module versions safely, roll them back, and monitor what's happening?"
These are different problems. Federation frameworks are optimized for the first. The second? You're on your own.
What That Looks Like in Practice
Here's a typical MFE deployment workflow today:
1. Developer commits fix to MFE "Checkout"
2. CI/CD pipeline triggers (full frontend build, not just Checkout)
3. Webpack builds all MFEs: 3–5 minutes
4. Artifacts pushed to CDN/registry
5. Deployment triggers (frontend reconciliation, cache invalidation)
6. Live. Total time: 10–15 minutes.
If something breaks mid-deployment:
→ Rebuild, redeploy. Same 10–15 minutes to rollback.Meanwhile, in the backend:
1. Developer commits fix to a service
2. CI/CD pipeline triggers (just that service)
3. Build: 1–2 minutes
4. Artifact pushed
5. Kubernetes rolling update: ~30 seconds
6. If bad: rollback to previous version: ~30 seconds
7. Total MTTR: minutes (not from scratch; pre-built versions exist)The backend learned decades ago: Decouple building from deploying. But the frontend never got that memo.
Why This Matters (Beyond Speed)
It's not just about milliseconds. Slow deployments create operational debt:
1. Every team builds custom rollout tooling
Since federation doesn't give you canary releases, each team invents their own:
- Hand-rolled traffic shifting (5% → 25% → 100%)
- Custom health checks and dashboards
- Manual rollback logic
- Feature flags scattered across codebases
Result: Fragile, team-specific, expensive to maintain.
2. All-or-nothing deployments
A fix in "Checkout" forces you to rebuild and redeploy the entire frontend. Yes, you have module federation, but without a safe deployment layer, you lose the granularity it promises.
Risk profile: One small bug in one MFE can take down your whole frontend.
3. Incident response becomes firefighting
A production incident at 2 AM. Your Checkout MFE is leaking memory. Do you:
- Wait 15 minutes for a full rebuild and redeploy?
- Revert the entire frontend (losing unrelated deploys from the last hour)?
- Blame the framework and move on?
Most teams do a combination of all three.
4. Platform engineering scales poorly
As you add more MFEs, the coordination overhead grows:
- More teams building custom deployment logic
- More manual orchestration between deployments
- More incidents caused by timing/coordination bugs
- More time spent on toil instead of features
Federation and Orchestration Are Different
Let me be direct: This isn't a federation framework problem.
Federation frameworks are doing what they're designed to do—composing modules at runtime. The problem is that the industry conflates "I have module federation" with "My frontend deployment is reliable."
These are separate concerns:
| Question | Federation Answers | Orchestration Answers |
|---|---|---|
| "How do I load modules at runtime?" | ✅ | |
| "How do I deploy a module version safely?" | ✅ | |
| "How do I roll out a change gradually?" | ✅ | |
| "How do I rollback quickly?" | ✅ | |
| "How do I know what's deployed?" | ✅ |
You need both. Federation for composition. Orchestration for safe deployment.
Right now, most teams have federation. They're building orchestration ad-hoc, per-team, with custom code.
The Kubernetes Parallel (and Why It Doesn't Apply)
Some teams say: "Why not just use Kubernetes for the frontend?"
Valid question. Kubernetes is extraordinary for orchestration—but at the container level. It operates on:
- Pods (not components)
- Replica sets (not versions)
- Rolling updates (not canary with business metrics)
So when you apply Kubernetes thinking to the frontend, you get:
- Container per MFE? Now every MFE is a "service."
- Rolling updates? You're waiting for container reconciliation—5+ minutes.
- Canary? You need a service mesh (Istio). Now you've added complexity.
Result: Kubernetes works, but you're bending your frontend to fit a container orchestration model, not the other way around.
The frontend needs orchestration at the component/bundle level, not the container level.
The Real Cost (In Hours)
Let's quantify what you're actually paying for:
| Activity | Hours/Week | Teams Affected |
|---|---|---|
| Building custom rollout tooling | 3–5 | Platform team |
| Maintaining per-team deployment scripts | 2–4 | Each team |
| Incident response (extra time due to slow rollback) | 1–3 | On-call |
| Debugging deployment coordination issues | 2–4 | DevOps/Platform |
| Total | 8–16 | Org-wide |
For a 20-person org, that's 160–320 hours/year of engineering time spent on tooling that the backend solved in the 1990s.
What Should Exist (And Doesn't)
If MFE deployment were solved, here's what you'd have:
- Immutable snapshots of your MFE versions (not rebuilt every deploy)
- Safe promotion: Deploy to production without a rebuild
- Instant rollback: Revert to a previous version in ~30 seconds (not rebuild time)
- Canary releases: Built-in, no custom per-team tooling
- Observability: See what's deployed and rollout status in real-time
This exists for backends (Docker images, Kubernetes, etc.). It doesn't exist for frontends as a standard, integrated layer.
A Diagnostic: Check Your Own Setup
If any of these sound familiar, you're manually orchestrating MFE deployments:
- You have custom scripts for canary releases
- Rollback requires re-running your CI/CD pipeline
- You don't have a shared "deployment status" view
- Different MFE teams use different rollout processes
- Your MTTR (mean time to recovery) is in minutes, not seconds
- You've had "cascading failures" where one MFE's deployment issue affected others
If you check even 2–3 of these, you're incurring operational debt that federation won't fix.
The Gap
Federation solved: "How do I structure my code?"
The unsolved gap: "How do I deploy my code safely?"
The irony: The backend solved this 30 years ago. But every MFE team rebuilds the solution from scratch.
What's Next
We're working on something to close this gap. The idea: a control plane for microfrontends that treats deployment and orchestration as a first-class concern—not an afterthought, not a per-team rebuild.
In the meantime, ask yourself: If your backend team managed deployments the way your frontend does, would you accept it?
If the answer is no, you've identified the problem.
Follow along. We'll share what we're building.
Share Your Experience
If you're managing MFE deployments: What's your biggest pain point? How long does a rollback actually take? How much custom tooling are you maintaining?
The more I hear, the clearer the picture becomes.