This example demos self-healing capabilities with Module Federation. app2
depends on and is expecting a shared dependency to be provided in app1
.
In app2
's webpack config we are expecting styled-components
to be a shared dependency with the app1
host application.
// app1 webpack.config.js
new ModuleFederationPlugin({
// ...
shared: ["react", "react-dom"] // note lack of "styled-components"
}),
// app2 webpack.config.js
new ModuleFederationPlugin({
// ...
shared: ["react", "react-dom", "styled-components"],
}),
Run yarn start
. This will build and serve both app1
and app2
on ports 3001 and 3002 respectively.
- HOST: localhost:3001
- REMOTE: localhost:3002
Notice that the button in both apps are the same even though the host app didn't provide styled-components
as a dependency. If you open DevTools and checkout the "Network" tab you can see 2 requests were made to app2
; the remote <Button />
component and the missing styled-components
vendor code.