OptionalmobileOptionaldesktopOptionalgateHide this slot when modules.<pluginName>.enabled is explicitly false.
🛑 OPT-IN, AND THAT IS THE POINT: the guard only applies to plugins whose
entry.ts already carries it. Measured on 20/08/2026: of the six lazy-slot
plugins, only three wrap their registration in
if (getXConfig().enabled !== false) — print, measure, editor. The other
three (table, geocoding, position-share) register unconditionally, and that
is no oversight: their enabled does not mean "feature absent".
⚠️ The counter-example that made this an opt-in rather than a uniform rule:
profiles/tourism declares position-share: { enabled: false, showButton: true }.
For that plugin, enabled governs EMISSION, and the button IS the switch that
turns it on (PS-09). A uniform guard hid a button the profile explicitly asks for —
and removed the only way to activate the feature.
The flag cannot be evaluated at declaration time: registerLazyForAction runs in
init.js before the profile loads. It is therefore read at RENDER time.
Optional UI descriptor pair passed to
registerLazyForAction.