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

Slug Type Bundle Laravel Package

leapt/slug-type-bundle

Symfony bundle that adds a reusable SlugType form field for generating URL-friendly slugs from user input. It streamlines slug creation and validation in forms, helping keep routes and content identifiers clean, readable, and consistent across your application with minimal setup.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Stack-fit triage (first, before anything else): despite being filed under a Laravel/PHP package review, this is a Symfony bundle (leapt/slug-type-bundle), not a Laravel package. It ships a Symfony Form type (SlugType) plus front-end behavior so a slug field auto-populates from a title/source field as the user types. For a Laravel codebase this is a no-go on architecture alone — it will not install, will not autoload into Laravel's form layer, and has no Blade/Livewire integration. This assessment should be logged as "evaluated, wrong framework" rather than carried forward as a Laravel candidate.
  • Build vs. buy for a ~1-day feature: the actual capability is small and well-understood — a text input that mirrors another field through a slugifier, with a server-side fallback for the case where JS is disabled or the user edits the slug manually. That is roughly one Stimulus/Alpine controller plus a form type, or in Laravel a small Blade component plus Str::slug(). Buy only makes sense if the build cost exceeds the integration and vendor-review cost, which here it likely does not.
  • Roadmap scope for CMS/admin surfaces: if we have an editorial surface (blog posts, product names, category labels, SEO metadata), "slug auto-fills from title, user can override" is a real UX requirement and belongs in the admin-form spec. The decision this package informs is how we satisfy it, not whether we need it.
  • Reuse the design, not the dependency: the most valuable output of this evaluation is the interaction pattern — generate-on-type, stop generating once the user manually edits, re-enable on clear, enforce uniqueness server-side. That pattern should go into our design-system/admin-form guidance regardless of framework.
  • Maintenance-risk triage on any third-party form widget: 9 stars, 0 dependents, and a single-maintainer bundle is a signal to treat the code as a reference implementation to vendor or reimplement, not a long-lived dependency. This is a standing criterion we should apply to every small utility package that surfaces in reviews.

When to Consider This Package

Consider it if:

  • The application is genuinely Symfony (Forms + Twig), and we want a ready-made SlugType rather than writing one.
  • The need is narrow: one or a handful of admin forms where editors want a live slug preview, and we are comfortable with the bundle's JS assumptions.
  • We are willing to fork or vendor it — pin the version, read the ~hundreds of lines, and accept ownership of fixes. That is the realistic adoption mode given the maintenance profile.
  • We need a quick prototype or internal tool where long-term dependency hygiene is not a concern.

Look elsewhere (or build) if:

  • The target is Laravel or any non-Symfony stack — the bundle is inapplicable; use Str::slug()/AsciiSlugger equivalents plus a small front-end controller.
  • We need persistence-layer slug behavior (generate on save, regenerate on title change, guarantee uniqueness, keep history/redirects for changed slugs) — that belongs in a Doctrine Sluggable-style extension or our own model observer, not a form widget. A form type only covers the input moment.
  • We need multi-locale slugs, transliteration rules, or per-entity uniqueness checks — expect to own that logic ourselves either way.
  • Our dependency policy requires active maintenance, multiple maintainers, or a minimum adoption threshold. Nine stars and zero dependents will fail that gate, and rightly so.
  • Accessibility and progressive enhancement are hard requirements — verify the JS behavior (and the no-JS fallback) against our standards before committing.

How to Pitch It (Stakeholders)

One-line summary: a small Symfony-only convenience widget that auto-fills a slug field from a title; useful pattern, but not adoptable for us as a dependency and not applicable to a Laravel stack.

For executives: this is a low-cost, low-risk evaluation that resolved quickly. The capability it provides is a nice-to-have UX touch in admin forms, worth roughly a developer-day to build ourselves. The package itself has minimal adoption (single-digit stars, no dependents, effectively one maintainer), so adopting it would trade a small build cost for an open-ended maintenance and security-review obligation. Recommendation: do not add as a dependency; capture the interaction pattern in our admin-form standards and implement it natively where needed. Net cost avoided: ongoing vendor tracking. Net cost incurred: about one day of engineering, once, on the first surface that needs it.

For engineering: treat this as a reference design, not a package. The behavior to replicate is: derive slug from source field on input, stop deriving once the user edits the slug directly, restore derivation when the slug is cleared, slugify server-side on submit as the source of truth, and enforce uniqueness in the model layer. Implement with the framework's native slugger (Str::slug / AsciiSlugger) and a small front-end controller. If we ever do land in a Symfony codebase and want the shortcut, fork and vendor it rather than pulling it from Packagist — and only after a read-through of the JS.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels