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

Ckeditor Bundle Laravel Package

sirroland/ckeditor-bundle

A Symfony bundle that integrates the CKEditor rich text editor into your application, making it easy to add and configure WYSIWYG fields in forms and templates. It packages CKEditor assets and setup so you can enable feature-rich HTML editing with minimal configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: this is not a Laravel package. The repository is a fork of IvoryCKEditorBundle, a Symfony bundle, and the description confirms it (“Provides a CKEditor integration for your Symfony project”). For a Laravel codebase the answer is a clear no-go; for a legacy Symfony codebase it is a buy-and-fork candidate at best.

Architecture fit

  • Built on Symfony’s bundle system: a DI extension with a configuration tree, a CKEditorType Form type, Twig form-theme templates, and asset-publish commands. None of these primitives exist in Laravel.
  • Value is delivered through the Symfony Form component (->add('body', CKEditorType::class, [...])). Laravel has no Form component; adopting this package would mean adopting a foreign rendering and theming stack or extracting only the client-side asset wiring, which is a few lines of Blade work.
  • Laravel integration would require a wrapper service provider, Blade component, and config bridge — i.e., rewriting the only meaningful parts. That is not integration; it is a reimplementation with extra legacy surface.

Integration feasibility

  • Laravel: not feasible without a rewrite; effort is roughly equal to a greenfield CKEditor 5 integration (≈1–3 dev-days) and carries none of the legacy risk.
  • Symfony: feasible only on Symfony 2.8–4.x / PHP 7.x era stacks. On Symfony 5+/PHP 8 expect incompatibilities in the form type and configuration tree.
  • No Laravel-adjacent dependents (0), no stars (0), last release 2019-01-24 — the package has effectively been abandoned for six-plus years.

Technical risk

  • Identity risk: package name (sirroland/ckeditor-bundle) and repository name (IvoryCKEditorBundle) do not match, and it is a low-visibility fork of an already-abandoned upstream (formerly egeloen/ivory-ckeditor-bundle). Any Composer adoption needs a provenance/typosquat review before it enters a lockfile.
  • Security risk (highest): CKEditor 4 reached end-of-life in mid-2023 and has a history of XSS advisories. Shipping an EOL WYSIWYG editor into an authoring surface is a stored-XSS exposure on user-generated content — the exact attack path editors are meant to defend.
  • Maintenance risk: no upstream, no security backports, no PHP 8.2/8.3 support, no Symfony 6/7 compatibility.
  • Asset/ops risk: depends on Symfony asset publishing (assets:install, Assetic/Webpack Encore conventions) — pipelines most teams have since migrated off.

Key questions

  1. Is the target application actually Symfony (and which major version), or is “Laravel/PHP package” a categorisation artifact in the request?
  2. Which CKEditor major version is the product requirement — 4 (EOL, unmaintained) or 5 (current)?
  3. Who owns the fork if we adopt it, and do we accept permanent security-patch responsibility?
  4. What sanitisation is applied server-side to editor HTML (HTMLPurifier, DOMPurify, allowlist), independent of the editor choice?
  5. Is a maintained alternative acceptable — FOSCKEditorBundle (Symfony + CKEditor 5), EasyAdmin’s built-in editor, or a Blade/npm CKEditor 5 component for Laravel?

Integration Approach

Stack fit

  • Laravel: does not fit. No shared primitives with service providers, Blade, or Eloquent. A thin wrapper would expose a config array and one Blade component — all of which we would write ourselves.
  • Symfony 3.4/4.x monolith with legacy form-driven admin: fits if and only if the team already owns the Symfony Form stack.

Migration path

  • If Symfony (legacy): composer require sirroland/ckeditor-bundle, register the bundle in AppKernel/bundles.php, define ivory_ck_editor config, swap textarea fields to CKEditorType, run assets:install, verify Twig form themes. Estimate 3–5 dev-days including regression testing on every form using the editor.
  • If Laravel: skip the package. Build the alternative directly — npm i ckeditor5 (or CDN), a Blade component with a named @push for scripts, a config endpoint for toolbar/upload settings, and a POST upload controller with MIME/size validation. Estimate 2–4 dev-days, no abandonware dependency.
  • Forward path for either stack: treat this package as a stopgap and schedule replacement with a maintained editor integration as part of the next major framework upgrade.

Compatibility

  • Pin PHP and Symfony constraints explicitly; expect to patch composer.json and possibly the form type for PHP 8 (implicit nullable parameters, ReturnTypeWillChange, dynamic property deprecations).
  • Verify CKEditor 4 asset version shipped in the fork and cross-check against CKEditor 4’s known-CVE list before any exposure to untrusted authors.

Sequencing

  1. Confirm stack and CKEditor major version (blocking).
  2. Security review: editor CVE posture + server-side HTML sanitisation design.
  3. Proof-of-concept on a single non-critical form behind a feature flag.
  4. Decide adopt-vs-replace before rollout, not after — otherwise we inherit an upgrade blocker.

Operational Impact

Maintenance

  • Effectively self-maintained. With 0 stars, 0 dependents, and a 2019 release, there is no community patch stream. Budget a standing allocation (≈2–4 dev-days/year minimum) for PHP/Symfony bump compatibility plus editor security patches, or accept a frozen, unsupported component.
  • Vendor-fork governance: fork it into our own namespace so rebuilds are reproducible if the GitHub repo disappears.

Support

  • None commercially or via community. Internal runbooks, an owner in CODEOWNERS, and a documented deprecation/exit plan are mandatory before production.
  • Add a dependency-review gate to CI so the package is re-evaluated on every framework upgrade.

Scaling

  • Client-side asset delivery dominates: serve the editor bundle from CDN or the build pipeline, not from a PHP asset route. Budget bundle size (~hundreds of KB minified+gzipped) against page-weight SLOs and lazy-load the editor on focus rather than on page load.
  • Server side is negligible — no runtime scaling concern; the risk is contention-free but the authoring experience degrades on large documents with CKEditor 4.

Failure modes

  • Symfony/PHP upgrade breaks the form type or config tree → editor silently falls back to a plain textarea (often undetected because authors keep working).
  • Asset publish path drift after deploys → 404s on editor assets, blank toolbar; usually invisible to backend monitoring.
  • EOL CKEditor 4 XSS → stored payload in user content, only caught by output sanitisation.
  • Composer resolution conflicts from abandoned transitive constraints blocking unrelated upgrades.

Ramp-up

  • Symfony developers with bundle experience: low (<1 day) — familiar config-tree and form-type patterns.
  • Laravel-only teams: not applicable; the investment would be spent learning a framework they do not use.
  • Hidden cost is not the editor — it is the ownership of an unmaintained dependency. The TPM recommendation is to decline for a Laravel stack, and for a legacy Symfony stack treat it as a short-lived, security-reviewed stopgap with a funded exit to CKEditor 5.
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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource