{
  "id": 12821756,
  "title": "How to roll back a micro frontend in 30 seconds (without rebuilding the host)",
  "url": "https://urgent.news/2026/10/08/how-to-roll-back-a-micro-frontend-in-30-seconds-without-rebuilding",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-08T08:09:52.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/mfeorchestrator/how-to-roll-back-a-micro-frontend-in-30-seconds-without-rebuilding-the-host-1bp1"
  },
  "original_language": "en",
  "account": "Rolling back a micro frontend can be a slow process, taking up to fifteen minutes. This is because the rollback is essentially a redeploy, which requires rebuilding the host application, changing the host's source code, and then re-deploying it. The entire process involves multiple steps, including deciding what to revert, opening a pull request, waiting for a CI runner, building, testing, deploying, invalidating the CDN, and waiting for the edge to drop the old bundle. The speed of a rollback is significantly limited by the time taken for these non-engineering steps.\n\nModule Federation, a technology used in micro frontend rollbacks, provides runtime loading capabilities. However, it does not offer any decision-making functionality regarding version resolution. The version served by the host is a build-time constant, and there is no mechanism to change it without modifying the code.\n\nThe key to achieving a thirty-second rollback is to change the version an environment serves from a build-time constant to runtime data. Instead of the host importing a remotes map at build time, it fetches one at runtime. This change allows the rollback to be as simple as pointing the environment to a different version, which was previously built and stored as an immutable artifact. This approach bypasses the need for rebuilding the host, reducing the rollback time to just thirty seconds.\n\nThis method works with both Webpack and Vite, despite the difference in where the remotes map is declared. In Webpack, it is declared literally in the bundler config, while in Vite, it is fetched from configuration at runtime. The difference lies in where the remotes map is declared, not in the fact that it is declared at all. The bundler still needs the remote names at build time, but the URLs behind those names do not.\n\nHowever, there are potential pitfalls to this approach. Shared dependency drift can occur if the broken version has updated a shared library that the host did not inherit. In-flight sessions may also be affected, as users in the middle of an operation may continue to use the old bundle until they reload. Configuration caching can also limit the speed of the rollback, as it depends on the TTL of the runtime configuration. Additionally, contract changes in the backend can render a rollback ineffective if the frontend is rolled back but the backend remains unchanged.",
  "summary": "The release went out twenty minutes ago. Checkout throws on Safari, the error rate is climbing, and someone has already asked the question everybody dreads: how fast can we undo this? If your micro frontends load through Module Federation and the version each environment serves lives in the host's source, the honest answer is ten to fifteen minutes — on a good day, with CI free and nobody else's…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}