We will create a new "shell" MFE to act as the top-level host for all other MFEs. It is exclusively responsible for:
Initializing the application via
@edx/frontend-platform
.Loading the base, expected version of all our shared dependencies.
Rendering the "layout" of the application, including the header and footer.
Loading the brand.
Acting as the entry-point for loading MFEs at runtime and during development.
Like other hosts, it is also responsible for:
Loading all the manifests from the "guest" MFEs it intends to load.
Using module federation to load the guest MFEs on demand.
Architecture
Relationship to @edx/frontend-platform
The shell is an MFE, whereas frontend-platform is a library providing access to foundational services like authentication, an HTTP client, internationalization, logging, and analytics. MFEs depend on frontend-platform, but they should be decoupled from the shell application.