ibexa/admin-ui
Ibexa Admin UI provides the Back Office interface for Ibexa DXP, bundling the templates, assets, and configuration needed to run and extend the admin panel. Part of Ibexa DXP; install via the official guide.
What this package actually is. Despite being distributed via Composer, ibexa/admin-ui is not an installable standalone library — it is the Back Office (admin) UI bundle of Ibexa DXP, a commercial enterprise CMS/DXP. The README states the constraint directly: "To use this package, install Ibexa DXP." It ships Twig templates, Symfony bundle configuration, PHP controllers/views, ES-module JavaScript (validators, pickers, menus, tooltips), CSS, and a Behat acceptance-test suite. It is the presentation layer of a platform, split into a read-only repository for dependency management.
Architecture fit. Fit is binary: it fits Ibexa DXP projects and nothing else. This is a Symfony 7.x bundle (v5.0.7 bumped symfony/* to 7.4 LTS), and it assumes DXP services — content model, field types, permissions, workflows, translations, search, and the ibexa/* core packages. There is no Laravel integration path and no meaningful way to lift the JS components into a non-Ibexa app without re-implementing the backend contracts they call. Recommendation: treat this as platform code, not application code — you consume it, you extend it at documented seams, you do not fork it.
Integration feasibility. High within a DXP engagement, low outside it. The documented extension seam is the window.ibexa.BaseFieldValidator class: subclass it, declare classInvalid, fieldSelector, and an eventsMap of {selector, eventName, callback, invalidStateSelectors, errorNodeSelectors}, implement validateInput() returning {isError, errorMessage}, and call init()/reinit(). Optional overrides (findValidationStateNodes, findErrorContainers, findExistingErrorNodes) exist for complex DOM. Beyond field validation, release notes show the vendor actively adding extension points (richtext config extensibility, content-edit translation selector) and refactoring internals (NodeFactory translation fetching, CSS Grid layout refactor). That is a healthy sign, but it also means the extension surface is a moving target.
Technical risk.
NOASSERTION in metadata means SCA/SBOM tooling will flag it, and legal review is mandatory before adoption. There is no permissive path here.ibexa/dxp, not direct installs. Do not use these metrics in a build-vs-buy argument.ez- CSS class prefixes and markup-dependent selectors — layout refactors (e.g., the CSS Grid change in v5.0.5) can silently break overrides.Key questions for the vendor/account team. (1) Which license tier are we on, and does our contract cover the 4.6 and 5.0 branches we plan to run? (2) What is the support lifecycle and EOL date for our target major? (3) Are Twig block names and ez-/ibexa- class names covered by any backward-compatibility policy, or explicitly not? (4) Which extension points are declared stable vs incidental? (5) What is the vendor's patch cadence and security-response SLA?
Stack fit. Symfony + Twig + PHP 8.x + ES modules + a front-end build. Back Office work is mostly the first three; the JS layer is only relevant when customizing field editing behavior. If the team is Laravel-only, this is not an integration — it is a separate platform decision with its own hiring and architecture implications.
Migration and install path. There is exactly one supported route: install/pin Ibexa DXP via Composer and let it pull ibexa/admin-ui. Do not add the package directly, do not pin it independently of the DXP metapackage, and do not vendor a fork. Keep composer.lock under review so bundle version moves are visible when the platform is upgraded.
Compatibility. Two maintained branches (4.6 and 5.0) receive parallel patch releases, including merged/backported fixes — good for teams mid-migration. Symfony 7.4 LTS alignment in 5.0.7 constrains PHP and third-party bundle versions in the host app. Validate every other custom bundle against the same Symfony minor.
Sequencing (recommended).
Maintenance. Low run-rate cost if you stay on supported extension points; the vendor ships frequently (multiple patch releases per month across both branches, spanning UX fixes, accessibility/padding issues, datepicker i18n, and JS escaping). Budget ongoing effort for changelog triage against your overrides, not for patching the package itself. Every Twig override is a small, permanent maintenance liability — keep the count small and documented.
Support. With a subscription you get the Ibexa support portal and IBX ticket workflow, which is where the changelog entries point. On GPLv2 you get community/self-support only, and this repository is not a discussion venue (7 stars, read-only mirror). Decide explicitly which model you are operating under; do not assume GitHub issues are a support channel.
Scaling. This is an admin/authoring interface — scaling is about concurrent editors, asset build size, and browser performance, not request throughput. The vendor is actively addressing front-end weight and correctness (lazy dropdown initialization, NodeFactory batching translations via a new endpoint, popup positioning, table action-cell dropdowns). Content-tree refactors indicate they are managing large-repository UX. Realistic risk is degradation on very large content trees and heavy translation sets; load-test the editorial workflow your authors actually use.
Failure modes to watch.
eventsMap configs.ibexa/admin-ui outside the DXP metapackage.Ramp-up. A mid-level Symfony/Twig developer becomes productive on Back Office templating in roughly two to three weeks; productive on the DXP domain model (content types, field types, policies, workflows, translations, multi-language editing) takes more like two to three months. The Behat suite and the docs site are the fastest onboarding assets. Add a named owner for "Back Office customizations and upgrade validation" — this is the role that prevents 80% of the failure modes above.
Bottom line for the TPM. Low standalone score (32.8) alongside a high opportunity score (79) is the correct read: this is a capable, actively maintained, commercially backed admin UI that is not adoptable as a component and carries a hard licensing gate. Approve it only as part of an Ibexa DXP platform commitment, with legal clearance, a documented override inventory, and a funded upgrade cadence. Reject it outright as a UI source for a non-Ibexa PHP or Laravel application.
How can I help you explore Laravel packages today?