Skip to content

Development

No code change is required to surface a new MFE - add a MicroFrontendOptions entry to the "Shell" configuration section. NavMenu.razor binds to IOptions<ShellOptions> and renders the link from Name/Path.

To render MFE content, add a page (e.g. MfeX.razor) that loads or proxies the MFE's BaseUrl, following the placeholder Mfe1.razor / Mfe2.razor pattern.

Working with Shared.Contracts

Place cross-MFE DTOs and events in Shared.Contracts so the shell and downstream MFEs share types. Existing buckets: Identity/, Events/, Common/, Extensions/ProblemDetails/. Use ProblemDetailsHelper for consistent error payloads and MfeEvent / NavigationRequestedEvent for cross-component messaging.

Render model

This template uses the modern MapRazorComponents<App>() + AddInteractiveServerComponents() hosting model. Keep new interactive components compatible with server interactivity rather than the legacy _Host page approach.

Testing

<Name>.UnitTests (MSTest + bUnit). ShellOptionsRegistrationTests validates that AddShellOptions binds configuration (test settings come from appsettings.UnitTests.json). Add binding/nav tests as you extend ShellOptions.

See also