Skip to content

Extension ordering

Admin surface contributions and Frontend render-hook contributions share the Core-owned ExtensionOrderResolver. Use a stable key and an owner for every positioned contribution. Existing numeric priorities remain supported and are adapted to ExtensionPosition::priority().

ExtensionPosition::first();
ExtensionPosition::last();
ExtensionPosition::priority(20);
ExtensionPosition::before('capell.core.banner');
ExtensionPosition::after('capell.core.banner');

Equal priorities retain registration order. Re-registering the same owner, source, and key is idempotent; a different owner or source must use the registry’s explicit replacement method. Registries can be frozen once provider boot has completed. Missing anchors and cycles retain deterministic fallback order and are exposed through orderingDiagnostics() for audit tooling.