Manifest App
The Manifest App component loads and renders external micro-frontend bundles at runtime. It reads an include-manifest.json file—either from a remote URL or from the local wwwroot/htmlapps/{bundleName}/ directory—and injects each declared include block as raw HTML into the page. This enables teams to build, deploy, and version standalone HTML/JS/CSS applications independently of the Sitecore rendering host.
The manifest file follows a simple contract: an array of include objects (or an object with version and includes properties). Each include has a Name and Content field. The Content supports a {{rootPath}} placeholder that is automatically replaced with the resolved base path of the bundle at render time.
A custom Content Resolver (ManifestAppContentResolver) runs on the platform side to resolve Sitecore token replacements in the BundleName field—including the {{environment}} token which is replaced with the localenv:define AppSetting value—before the data reaches the rendering host.
Usage Notes
- The
BundleNamefield accepts either a relative folder name (resolved underwwwroot/htmlapps/) or a full URL (starting withhttp:orhttps:). When a URL is provided, the manifest is fetched via HTTP at render time. - The
{{environment}}token inBundleNameis replaced on the platform side by theManifestAppContentResolverusing thelocalenv:defineAppSetting value. This enables environment-specific bundle URLs without changing datasource content. - The
{{rootPath}}placeholder inside manifest includeContentblocks is replaced with the resolved base path of the bundle at render time. This allows relative asset references within the injected HTML. - The
OptionalParametersfield uses a Name Value List field type. While the rendering view reads and parses these parameters, the current implementation does not apply them via template substitution (the Mustache/Handlebars integration is commented out). They are available for future use. - The manifest format supports two shapes: a plain JSON array of include objects, or an object with
versionandincludesproperties. Only version1.0(or empty) is currently supported. - Each include object in the manifest must have a
Name(used as a section identifier) and aContent(the raw HTML to inject). - The component wraps all output in a
<div>with standard column CSS classes. In Experience Editor mode, it displays a table showing theBundleNameandOptionalParamsvalues for easy identification. - Datasource location supports both local
./Page Componentsand shared content via theancestor-or-selfquery to the Site’s Shared Content folder.
Control Properties
Standard Values / Defaults
| Property | Default Value | Notes |
|---|---|---|
| Rendering Contents Resolver | Manifest App Content Resolver | Custom resolver that performs {{environment}} token replacement on BundleName before sending to the rendering host. |
| Datasource Location | ./Page Components & Shared Content query | Supports both local page-level and shared site-level datasources. |
| Parameters Template | Column | Inherits standard column parameters (Small, Medium, Large, Offset, Padding, AddClass). |
Rendering Parameters
| Parameter | Type | Description |
|---|---|---|
| Small | Droplink | Bootstrap column width at the small breakpoint. |
| Medium | Droplink | Bootstrap column width at the medium breakpoint. |
| Large | Droplink | Bootstrap column width at the large breakpoint. |
| OffsetSmall | Droplink | Column offset at the small breakpoint. |
| OffsetMedium | Droplink | Column offset at the medium breakpoint. |
| OffsetLarge | Droplink | Column offset at the large breakpoint. |
| PaddingTop | Droplink | Top padding class. |
| PaddingBottom | Droplink | Bottom padding class. |
| PaddingStart | Droplink | Start (left) padding class. |
| PaddingEnd | Droplink | End (right) padding class. |
| AddClass | Single-Line Text | Additional CSS classes to add to the component wrapper. |
Template Properties
Datasource template: /sitecore/templates/Feature/MklComponents/ManifestApp
| Field | Type | Description |
|---|---|---|
| BundleName | Single-Line Text | The bundle identifier or full URL. When set to a relative name (e.g. quick-quote), the rendering looks for wwwroot/htmlapps/{bundleName}/include-manifest.json. When set to a URL (e.g. https://cdn.example.com/apps/myapp/include-manifest.json), the manifest is fetched via HTTP. Supports the {{environment}} token which is resolved by the content resolver on the platform side. |
| OptionalParameters | Name Value List | Key-value pairs that are parsed and made available to the rendering view. Intended for future template variable substitution within manifest Content blocks (currently the Mustache/Handlebars integration is commented out). Parameters are URL-decoded before use. |
Manifest File Contract
The include-manifest.json file should follow one of these shapes:
| Format | Structure |
|---|---|
| Array | [{"Name":"head","Content":"<link ...>"},{"Name":"body","Content":"<div ...>"}] |
| Object (v1.0) | {"version":"1.0","includes":[{"Name":"head","Content":"..."},{"Name":"body","Content":"..."}]} |