webpack 5 module federation, and why nobody used it

Module federation lets one build consume a module from another build at runtime, which solves a problem most applications do not have.

new ModuleFederationPlugin({
  name: 'shell',
  remotes: { checkout: 'checkout@https://cdn/checkout/remote.js' },
  shared: {
    vue: { singleton: true, requiredVersion: '^3.0.0' },
  },
})

// and the failure mode: the remote is down, or its
// shared vue is 3.2 and yours is 3.0, at RUNTIME.

The technology works and the operational cost is what stops it: a build now depends on another team’s deployment at runtime, version skew in shared dependencies is a production error rather than a build error, and debugging spans two source maps. It is a real answer for an organisation with independent frontend teams and a very expensive one for a single application that wanted code splitting — which is what most people were actually looking for.