Skip to main content

1. Write the manifest

This file lists every route, source path and component name in your app. Generate it in analyze builds only — never in the build you deploy.

2. Mount it

components/CrustPanel.tsx
Render it in your root layout, then build with the gate on:
A crust pill appears in the corner.
The panel is a secondary surface for data produced by the build analyzer and runtime collector. It is not required for analyze, diff, ci, snapshot history, or the HTML report.

Why it is built this way

With the variable unset, the bundler eliminates both dynamic imports entirely — neither the widget nor the collector reaches your production bundle. A runtime if inside the module would still ship the code and the manifest.
Your CSS cannot break the panel and the panel’s CSS cannot leak into your app. A devtool that restyles the page it is measuring is worse than no devtool.
Plain DOM. This ships into your page, and coupling it to a React version would make it a support burden and drag a second renderer into the bundle.
The manifest loads only when the panel is first opened. The widget must not move the numbers it exists to report.

Options

Both calls return a disposer.

Without any integration

If you would rather not touch the app at all:
Same data, same design, as one self-contained HTML file.