This repository is to showcase examples of how Webpack 5's new Module Federation can be used.
If you need support, consider looking at my sponsor profile https://github.com/sponsors/ScriptedAlchemy | For companies that require consultations, contact me on twitter or email (on github profile) |
---|---|
Youtube Screencasts | https://www.youtube.com/playlist?list=PLWSiF9YHHK-DqsFHGYbeAMwbd9xcZbEWJ |
Info site | https://module-federation.github.io/ |
Official Docs | https://webpack.js.org/concepts/module-federation |
Original Webpack Issue | https://github.com/webpack/webpack/issues/10352 |
Medium post | https://link.medium.com/xzFgBBtAx6 |
JSNation Presentation | https://github.com/sokra/slides/blob/master/content/ModuleFederationWebpack5.md |
Post about Dynamic Remotes | https://h3manth.com/posts/dynamic-remotes-webpack-module-federation/ |
https://module-federation.github.io/
https://www.youtube.com/playlist?list=PLWSiF9YHHK-DqsFHGYbeAMwbd9xcZbEWJ
https://scriptedalchemy.medium.com/
Legend:
β οΈ : In Progress/Incomplete- π: Depends on access controled source
- π°: commercially avaliable
- Native Federation β Module Federation using esBuild, ESM, Import Maps. Concept ported to other bundlers!!
- Native Federation React β React Example of Module Federation using esBuild, ESM, Import Maps. Concept ported to other bundlers!!
- Advanced API β Showcasing advanced API use, also seen in other examples.
- Basic Host-Remote β App 1 consumes remote components from App2.
- Create React App β Module Federation using CRA.
- Create React App using React App Rewired β Module Federation using CRA and React App Rewired.
- HMR Remotes β Hot Reloading Remotes inside Hosts.
- Startup Code β Advanced implementation that attaches initialization code to the remote container itself. Useful for dynamically setting publicPath in the remote.
- Dynamic Remotes in Node β Dynamically load remotes in Node.
- Bi-Directional Hosts β App1 consumes App2 components; App2 consumes App1 components.
- Self-Healing β Fallback to remote apps vendors if a dependency fails to load.
- Server-Side Rendering β App1 and App2 with SSR.
- Server-Side Rendering (simplified) β Less complex boilerplate.
- Multi UI Framework Federation β Multiple Apps in different technologies federated.
- Dynamic System Host β Swap between remotes at runtime.
- Redux Reducer Injection β Dynamically inject reducers to host store at runtime.
- Shared Routes β Compose federated routes for a seamless user experience.
- Nested Components β Nested remote components.
- Share Context Provider β App1 and App2 with shared Context Provider.
- Medusa Example β Single example implementing Module Federation Dashboard
- Non-UI Module
- Routing β An example of sharing router context. Also worth looking at - Routing 2
- Version Discrepancy β Federated apps depending on different versions of a dependency without side-effects.
- TypeScript β Streaming TypeScript between module-federation apps.
- Angular Universal β Remote and Host app with SSR, lazy modules and components.
- NextJS Sidecar Build β Sidecar build to enable module-federation alongside Next codebases.
- NextJS v12 β Operation, with nextjs-mf.
- NextJS v13 β Operation, with nextjs-mf.
- NextJS β Operation, with nextjs-mf.
- NextJS SSR β Powered by software streams, with nextjs-ssr
- NextJS SSR via Delegates β Custom glue code for containers and hosts nextjs-ssr
- Building A Plugin-based Workflow Designer With Angular and Module Federation β External Example
- Vue.js β Simple host/remote (render function / sfc) example using Vue 3.0.
- Vue 2 in Vue 3 β Vue 3 application loading remote Vue 2 component.
- Vue2 SSR β This example demonstrates module as a service.
- React - Host/Remote and NextJS Host/Remote β These examples demonstrates react/nextjs as host/remote and react/nextjs are host/remote
- Different React Versions in Isolation β Simple host/remote example where the apps have different React and ReactDOM versions and don't share any dependencies.
- CSS Isolated Host and Remote β Example on how to prevent CSS from leaking between federated applications.
- vue3-demo-federation-with-vite β wepack and vite federation integrated projects, webpack/vite both play the role of host and remote
- quasar-cli-vue3-webpack-javascript β Module federation integration with Quasar apps running vue3 using quasar-cli (javascript)
- UMD Federation β Support importing umd remote module
- Modernjs β Basic Module Federation Usage in Modern.js Framework
- Modernjs Medusa β Using Medusa in Modern.js Framework
Module Federation Examples covered by e2e tests with Cypress framework, more info about structure and configuration π here π
1 Hour group consultation | $100 |
---|---|
30 Min 1:1 consultation | $60 |
15 Min 1:1 consultation | $30 |
Bespoke API modifications and hands on code | $300-$500/hr |
To run from a git checkout locally, remove all of the proprietary example directories and then run yarn
at the repo root.
You can then run yarn && yarn start
from any of the non-proprietary examples.
Module federation will work with any type of file that youre able to import, that Webpack understands how to process. It is not a JS only, or React only feature. Images, CSS, JSON, WASM, and anything else can be federated.
- Netflix
- Auth0
- Best Buy
- SAP
- AWS
- SemRush
- Ford Motor Company
- JPMorgan Chase
- Microsoft
- Lululemon
- Housing.com
- VMware
- Talkdesk
- Cricket Wireless
- Bytedance
- Rivian (in the cars themselves)
- Realtor.com
- FICO
- Digital Ocean
- Alibaba
- Tencent
- Wayfair
- RingCentral
- Indeed
- Telia
- Beamery
- Amazon
- Sony
- Paypal
- OVO Energy
- MGM
- Lowes
- Home Depot
- Epic Games
- ExpediaGroup
- Verizon
- MindTickle
- Experian
- Herodevs
- CloudFlare
- Cisco
- Business Insider
- Box.com
- AfterPay
- OLX
- Shopify
- adidas
- and many more I cant remember
You decided to contribute to this project? Great, thanks a lot for pushing it!