The sizzling hotness these days in the FE world is "Micro". This is a template based on that architecture using best practices as of late 2022.
No importing of functions/objects/classes/etc
No shared State
Shared libraries through MF is okay
Container shouldn't assume that a child is using a particular framework
Any necessary communication done with callbacks or simple events
Some people want to use monorepos
Some people want to keep everything in separate repos
5. Container should be able to decide to always use the latest version of a microfrontend or specify a version
A: Container will always use the latest version of a child app (doesn't require a redeploy of container)
B: Container can specify exactly what version of a child it wants to use (requires a redeploy to change)
Want to deploy each microfrontend independently (including the container)
Location of child app remoteEntry.js files must be known at build time!
Many front-end deployment solutions assume you're deploying a single project - we need somethign that can handle multiple different ones
Has an automated pipeline
At present, the remoteEntry.js file name is fixed! need to think about caching issues
Users can navigate around to different subapps using routing logic built into Container
Users can navigate around in a subapp using routing logic built into the subapp itself
Not all subapps will require routing
New routes added to a subapp shouldn't require a redeploy of the container!
This will occur all the time if we have some kind of sidebar nav that is built as a separate microfrontend
Building a routing library can be hard- we don't want to author a new one!
Some amount of custom coding is OK
Developing for each environment should be easy - a developer should immediately be able to see what path they are visiting
6. If different apps need to communicate information about routing, it should be done in as ageneric a fashion as possible
each app might be using a completely different navigation framework
We might swap out or upgrade navigation libraries all, the time - shouldn't require a rewrite of the rest of the app