Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Fieldtype Richtext Laravel Package

ibexa/fieldtype-richtext

The official Ibexa RichText field type for Ibexa DXP stores rich formatted text as structured XML, enabling clean rendering and editing of content. Part of Ibexa DXP; install via the platform.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — This is not a Laravel package, and treating it as one is the single biggest risk in this assessment. ibexa/fieldtype-richtext is a component of Ibexa DXP (formerly eZ Systems / eZ Platform), a Symfony-based enterprise content management platform. It implements the Ibexa Field Type SPI for a ibexa_richtext field, storing formatted text as structured XML (validated against an ezpublish.rngschema) rather than HTML, and it ships a coupled frontend editor layer (CKEditor-based, built with Symfony Webpack Encore/TypeScript). There is no Laravel service provider, no facade, no Eloquent integration, and no plausible seam for one — the field type only functions inside the Ibexa kernel's content repository, field type registry, and view layer.

Integration feasibility — Effectively zero as a standalone dependency. The README's own install instruction is "install Ibexa DXP"; pulling this package alone yields an unrunnable component against a non-Ibexa stack. The 6 stars and 0 dependents are consistent with this being a read-only split of the Ibexa monorepo rather than an independently adopted library — community engagement happens upstream in the Ibexa DXP repos and Jira. Any evaluation that begins with "can we composer require this into an existing PHP app" should terminate here.

Technical risk — Four material risks:

  • Licensing (highest). GitHub reports NOASSERTION because the package is dual-licensed: Ibexa Business Use License (BUL) v2.4+, granted only with a paid Ibexa DXP subscription, or GPLv2. GPLv2 is copyleft and will not survive legal review for a closed-source or SaaS-proprietary product without the commercial subscription. This is a budget and procurement decision before it is an engineering decision.
  • Security surface. Rich text editors are a standing XSS target, and the changelog shows a real one — "Fix XSS in custom tags" (IBX-10288) — landing in both 4.6 and 5.0 lines. Custom tags are user-configurable, so the attack surface extends to configuration drift as well as content.
  • Release-data anomaly. The stated last release (2026-08-20) is future-dated relative to normal release cadence; treat the metadata as unreliable and verify against the actual tag list before making any currency claim to stakeholders.
  • Editor UI regression cadence. A large share of patches are presentation-layer fixes (link balloon behavior, table toolbar position, image filter dropdown, missing insert-paragraph buttons, custom tag disappearing on focus loss). This is a component under continuous, high-touch UI maintenance — a signal that you inherit a nontrivial QA obligation when you customize the editor.

Key questions — (1) Are we, or are we about to be, an Ibexa DXP customer? If no, this evaluation ends. (2) Do we hold an Ibexa DXP subscription, and has legal cleared BUL vs GPLv2 for our distribution model? (3) Which maintenance line do we target — 4.6 (LTS, older Symfony) or 5.0 (Symfony 7.4 LTS)? (4) Who consumes the XML — do we render through Ibexa's own Twig/view layer, or do we need to emit HTML/JSON headlessly to a separate frontend? (5) Do we need custom tags or styles, and if so who owns the RNG schema extensions (note IBX-10827 added the ability to extend ezpublish.rng — that is now our schema, our problem)? (6) Is our team staffed for Symfony + Encore + CKEditor 5 plugin work, or only Laravel?

Integration Approach

Stack fit — Poor outside Ibexa. The dependency graph runs inward from Ibexa DXP to this package, not the reverse: it expects ibexa/core, the Symfony kernel, the Field Type SPI, and the Ibexa admin UI asset pipeline. For a Laravel codebase, the honest mapping is that the equivalent capability — a rich text field with a WYSIWYG editor, structured content, and link/embed handling — is better served by a Laravel-native option (Filament's TipTap/RichEditor field, Nova's Trix/Markdown fields, or a standalone CKEditor 5 or TipTap integration behind a custom cast). Those give you HTML or JSON storage you control, Composer install with no license gate, and an editor bundle that fits Vite rather than Encore.

Migration path — There is no path into a Laravel app, and the path out of Ibexa is lossy. The stored value is XML conforming to an ezpublish.rng schema with custom-tag semantics; converting to HTML requires the Ibexa rendering layer plus your custom tag templates, and round-tripping back is not guaranteed. If the real requirement is "exit Ibexa," scope a dedicated content-extraction workstream (XML → normalized HTML/JSON, with custom tags mapped explicitly and image/link references re-resolved against the new media store) — do not assume this package helps you leave. If the requirement is "add rich text to a Laravel app," there is nothing to migrate; choose a native library.

Compatibility — Two parallel support lines are maintained with near-simultaneous backports (4.6.x and 5.0.x currently), and 5.0.7 bumped symfony/* to 7.4 LTS. That means PHP and Symfony constraints are dictated by the DXP release you are on, not chosen by you. The editor assets are compiled through Encore with a TypeScript config (added in IBX-11736); if your product standard is Vite, you are maintaining a second, parallel frontend build for one field type. Confirm the PHP minor version, the Ibexa DXP release, and the CKEditor major version all align before committing.

Sequencing — Conditional on the answers above:

  1. Commercial first: confirm Ibexa DXP subscription status and obtain legal sign-off on BUL vs GPLv2. Nothing technical should start before this clears.
  2. Baseline: install full Ibexa DXP in a sandbox; do not attempt to wire this package individually.
  3. Line selection: choose 4.6 vs 5.0 and pin to a specific patch, tracking the dual-branch backport pattern so you know which fixes you actually receive.
  4. Content model spike: define one ibexa_richtext field with one custom tag end-to-end — authoring, XML persistence, RNG validation, front-end render — to expose the real cost of the schema-extension and template work.
  5. Delivery spike: prove the rendering path you actually need (server-side Twig vs headless JSON/HTML) before broader rollout.
  6. Only then generalize to the full content type set.

Operational Impact

Maintenance — You are not maintaining this package; you are consuming it, but the coupling is tight. Upgrades arrive bundled with DXP releases, and the dual 4.6/5.0 lines mean a 5.0 adoption is a platform migration, not a dependency bump. The split-repo model also means issue tracking, PRs, and roadmaps live in Ibexa's Jira and monorepo — the GitHub repo has 6 stars and no independent community, so there is no external contributor base to lean on for fixes. Budget for the DXP upgrade cycle as a recurring, scheduled program rather than ad hoc patching.

Support — Support quality is contractually gated: the BUL route comes with Ibexa subscription support; the GPLv2 route comes with community-only channels and, realistically, self-support for a component this specialized. For a team without Ibexa experience, self-support on an XML-schema-validated field type with a custom CKEditor plugin layer is a poor position. Escalation paths and SLAs must be written into the subscription, not assumed.

Scaling — Content scale is the DXP's concern, not this package's; the field type stores XML per content object, so read amplification is a function of how you query and render. The scaling pressure that is attributable here is editorial and frontend: every custom tag and style you add multiplies the render templates, the RNG schema surface, and the editor plugin configuration that must stay in sync across environments. Keep custom tags few and centrally registered; config drift between backend schema and frontend editor is the classic failure at scale.

Failure modes — Watch for: (1) RNG schema validation failures on save when custom tags or config drift from the schema — content authoring blocks, and the error surfaces to editors, not developers; (2) XSS via custom tags, the exact class of defect patched in IBX-10288 — treat any custom tag renderer as untrusted-input code and require escaping review at every upgrade; (3) editor initialization fallback, per IBX-10565, where a failed init silently degrades the authoring experience; (4) silent data-quality bugs of the sort fixed in IBX-11480 (setBooleanValue cast) — small cast errors in field-type value handling are the kind that corrupt content quietly and are found late; (5) presentation regressions in link balloons, image dropdowns, and table toolbars, which are numerous enough in the changelog to warrant a visual regression suite in CI if you customize the editor at all.

Ramp-up — Steep and multi-disciplinary. A productive contributor needs Ibexa DXP content-model and Field Type SPI knowledge, Symfony bundle/config conventions, Encore/TypeScript asset builds, CKEditor 5 plugin development, and enough XML/RNG literacy to own schema extensions. Realistically 2–4 weeks before a competent PHP developer is independently productive in the editor-customization layer, longer for the field type backend. This is a specialist skill set, not a skill set a Laravel team acquires incidentally — staff it deliberately, or do not adopt.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
dakiquang/laravel-oauth-refresh-lock
woda/laravel-worktrees
dalefranks/ramasite
faghy/laracashbook
roundly-consulting/google-places-for-laravel
roundly-consulting/kubernetes-api-for-laravel
roundly-consulting/plausible-for-laravel
gvp/gvp-laravel-template
metasyncsite/laravel-metasync-client
roundly-consulting/onboarding-for-laravel
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
adachsoft/changelog-linter