integrated/slug-bundle
A Laravel bundle for generating clean, URL-friendly slugs from strings, helping you build readable routes and permalinks with consistent, SEO-friendly formatting across your application.
Str::slug() / symfony/string's AsciiSlugger. This package wraps that same logic in a framework-specific bundle. The PM decision is not "which slugger" but "do we take a third-party dependency for something this small?" For a 1-star, zero-dependent package, the answer is no.-bundle naming, container-tagged event listeners, and Doctrine lifecycle hooks all map to Symfony, not Laravel. In a Laravel codebase the wiring has no execution path; adopting it means porting listeners into an Eloquent observer. Flag this to whoever triaged it as a Laravel candidate: the framework-level integration does not transfer even where PHP-level compatibility exists.-2, -3), reject, or prompt? This requires a DB unique constraint plus retry logic on write, not just a library setting.HasSlug trait plus a redirects table; none of them require this package.symfony/string's AsciiSlugger plus a ~20-line prePersist listener covers the same ground with first-party support. The upside ceiling is low.spatie/laravel-sluggable (widely used, maintained, handles uniqueness and onUpdate) or Laravel's Str::slug() inside an observer. Both are safer and better-fit.symfony/string's AsciiSlugger, or cocur/slugify for richer transliteration rules.To executives: We evaluated a third-party library for auto-generating URL slugs. My recommendation is not to adopt it. The capability it provides is small and reproducible in-house in under a day, while the package itself has essentially no adoption (1 star, zero downstream dependents) and no maintenance signal. Taking it on would add an unsupported dependency and an upgrade liability in exchange for saving a few hours of engineering — and it appears to be built for Symfony rather than our Laravel stack, so the fit is poor on top of the risk. Slug generation will still ship: it lands as a small part of the content-modeling work, with the decisions that actually matter — whether slugs change after publish, how collisions are handled, and whether we ship a redirect table — owned by product rather than outsourced to a library.
To engineering: Don't pull this in. Write a HasSlug trait over Str::slug() with a unique index and a -2, -3 suffix retry loop — or use spatie/laravel-sluggable if we want behavior driven by config instead of code. Keep slugs immutable after publish and log old → new in a redirects table. Roughly half a day of work; the redirect table is the larger half, and no slugger package gives it to us anyway. The 1-star / zero-dependent signals mean upstream support is the maintainer's goodwill — no SLA, no advisory channel. Name an internal owner in the service catalogue and accept ownership of the transliteration table as the ongoing cost.
How can I help you explore Laravel packages today?