frontend-platform will provide a set of helper components which will make creating experience plugin extension points (slots) in micro-frontends easy.
These components are:
PluginSlot - An extension point in an micro-frontend
Plugin - A plugin loader, used by PluginSlot
PluginIframe - A plugin mechanism, loads a plugin in an iframe
PluginContainer - A helper class for plugin implementations that automates communication with the parent page
PluginErrorBoundary - Helps isolate errors that occur in plugin handling code so that it doesn't crash the whole application.
These components assume that plugin configuration is available in the application's config, accessed via frontend-platform's getConfig function.
Subtasks:
[x] Basic implementation of the above classes.
[ ] Component tests where possible (may be difficult to get 100% coverage, given the nature of the components)
[ ] Tests for custom hooks
[ ] Improve logging in PluginErrorBoundary - where should errors caught in this component go?
[ ] Ensure that plugins know the target origin for the parent page in dispatchHostEvent. This may have to be communicated from the parent to the plugin during initialization.
[ ] Decide what to do with module federation-based plugin code for now. Perhaps 'stash' it on a branch.
Related PR: https://github.com/edx/frontend-platform/pull/235
frontend-platform will provide a set of helper components which will make creating experience plugin extension points (slots) in micro-frontends easy.
These components are:
These components assume that plugin configuration is available in the application's config, accessed via frontend-platform's
getConfig
function.Subtasks:
dispatchHostEvent
. This may have to be communicated from the parent to the plugin during initialization.