Every diagram uses the same running example: the browser is at https://fastflights.com/search, the application namespace is @fastflights, deployed slices live at https://assets.fastflights.com, and the active slice is named search.
The terminology stays deliberately consistent throughout:
The toolkit is held together by five mechanisms. They contribute different things — configuration, browser resolution, deployable ESM, runtime orchestration, and framework lifecycle integration — but they all converge in one browser document.
2. Manifest contract: derive the same module identity everywhere
defineManifest() is executable configuration shared by import-map generation, route resolution, and build externalization. Its value is not merely that fields live together; the same values derive the same module identity at every boundary.
The browser receives an import map before any dependent module executes. Application modules use a prefix mapping; external dependencies use exact, version-pinned mappings.
The slice build has two responsibilities: produce the ESM artifact at the path the runtime contract expects, and leave manifest-owned specifiers untouched for the browser to resolve.
createRuntimeHost() owns this entire lifecycle. The expanded flow below keeps each value named consistently: the route resolver returns a module specifier, import() passes that same specifier to the browser, and the browser resolves it to a module URL.
It also prevents a stale import from winning after a later navigation, reports loading / ready / error, and calls the mounted module’s cleanup before replacing it.
6. Framework bridge: connect runtime state to host UI
The framework adapters do not change module resolution. They connect createRuntimeHost() to a host framework’s lifecycle and reactive state. RMC Toolkit supports two distinct React integration models; they should not be conflated.
The mechanisms disappear into the final product. The browser owns native module resolution and one JavaScript module graph; the host owns the document and composition boundary; the resolved slice contributes the active feature experience.
The user sees one application. The architecture remains independently buildable and deployable because the contracts between its parts are explicit: manifest values, module specifiers, import-map entries, ESM output paths, runtime lifecycle, and framework integration.