hillrange/ckeditor
A Laravel package for integrating CKEditor into your application. It provides a ready-to-use Blade component, configurable toolbar and plugin options, image and file upload handling, and support for custom CKEditor builds, letting you add rich text editing to any form with minimal setup.
Architecture fit — primary blocker. This is not a Laravel package; it is a Symfony bundle (hillrange/ckeditor, "CKEditor for Symfony 4.x"). Symfony bundles register through Kernel::registerBundles(), ship a DependencyInjection/Extension class, and rely on FrameworkBundle services (twig, form, asset, tag-based compiler passes). Laravel has no bundle registry and no equivalent extension contract — the fact that Laravel consumes individual Symfony components does not extend to bundles, which are a FrameworkBundle convention. A TPM should classify this as incompatible as-is, not as an integration-effort question. Any use requires a shim (a Laravel service provider that manually wires the bundle's services, bypasses the extension, and reproduces its Twig form theme in Blade) — i.e. a fork, not an integration.
Integration feasibility. Low, and the shim cost is not bounded by the package's size. Two sub-problems must both be solved: (1) service wiring — the bundle's form type, config tree, and asset handling must be re-expressed in Laravel's container; (2) view layer — Symfony form themes and Twig blocks do not exist in Blade, so the editor's rendering path must be rewritten regardless. Since CKEditor's actual value is the JS build plus a textarea binding, the bundle contributes very little after both are removed. The realistic "integration" is reading the bundle for its configuration defaults and reimplementing in ~50 lines of Blade + Vite, not depending on it.
Technical risk.
^7.x, which conflicts with Laravel 9+ (PHP 8.0+) and Laravel 11 (PHP 8.2+). Verify in composer.json before discarding — if the constraint is ^7.4|^8.0 the conflict is softer, but the Symfony 4 coupling remains.crayner/CKEditor vs hillrange/ckeditor). No dependents means nobody is exercising this code in production; no stars means no community triage. There is no realistic path to a security advisory reaching you.Key questions for the maintainer/owner before any further spend.
composer.json PHP and symfony/* constraints, and does it require FrameworkBundle explicitly?Stack fit. No. Laravel's editor integration surface is: an npm/Vite asset pipeline, a Blade component or @stack('scripts') partial, and a request-validation rule for sanitized HTML. None of those map onto a Symfony bundle. The bundle's only reusable artifacts are configuration values and the textarea-to-editor binding pattern.
Migration path. Do not add this to composer.json. Instead:
<x-rich-text> Blade component that mounts the editor on a textarea and round-trips content through a FormRequest.If the requirement is genuinely "keep this exact bundle," the only honest path is a hard fork into a first-party Laravel package (service provider + Blade views), which is a multi-sprint project with a permanent maintenance tail — not a dependency addition.
Compatibility. Assume incompatibility with Laravel 9+ on the PHP constraint alone until proven otherwise, then a second incompatibility on bundle registration. There is no Laravel version for which this package is a supported dependency.
Sequencing (if the team proceeds anyway):
composer.json and the bundled CKEditor version — half a day, decides go/no-go.Maintenance. Effectively 100% first-party from day one. No upstream releases, no CVE feed, no dependency-bot coverage worth trusting. If the code is adopted via shim or fork, budget for a named owner and a recurring review cadence; if it is rejected, maintenance cost is zero and the replacement is a mainstream npm package with a real release cadence.
Support. No commercial support, no issue-tracker throughput to rely on, no dependents to consult. Internal engineers unfamiliar with Symfony's DI extension model will not be able to debug a shim, which concentrates risk in whoever wrote it — a single point of failure worth flagging explicitly in the staffing plan.
Scaling. Editor-side scaling (asset payload, plugin count, upload handling) is a function of the CKEditor build, not the bundle, so this package neither helps nor hurts. The bundle's asset registration, if mimicked, will not integrate with Laravel's Vite manifest and versioning — meaning cache-busting, CDN offload, and CI asset builds must be rebuilt. Plan for the editor to be a first-class frontend dependency, not a PHP-side concern.
Failure modes.
Ramp-up. High relative to delivered value. A mid-level Laravel engineer with no Symfony background needs roughly a week to competently read and modify bundle wiring; the same engineer ships the Blade + npm replacement in a day or two. The asymmetry is the core argument: the package's learning cost exceeds its replacement cost.
TPM recommendation. Reject as a dependency. Close the decision with the composer.json/licensing audit to make the rejection auditable, then redirect the requirement toward a first-party Blade component over a maintained CKEditor build. The only scenario that changes this is an existing Symfony 4 estate migrating to Symfony — in which case this package is still the wrong answer, because the estate should be moving off Symfony 4, not deepening it.
How can I help you explore Laravel packages today?