blendbyte/filament-title-with-slug
Filament v5 field combining title and slug with automatic slug generation, live permalink preview, and inline editing. Supports Laravel 11–13.
Verdict: Low-risk, high-convenience UI component with meaningful supply-chain risk. Adopt only behind an internal wrapper and a pinned version.
Architecture fit
TitleWithSlugInput::make()), so it composes into the existing Resource::form() schema with no service provider wiring, no migrations, and no model contract changes. It binds to title/slug by default, overridable via fieldTitle/fieldSlug.titleField (critical for translatable titles via Spatie), custom slugifier + regex, slugRuleUniqueParameters, readonly callbacks per context, and named-route "Visit" links. Config and translations are publishable, so we can own branding/localization without forking.Integration feasibility
composer require, drop one component into a resource, optionally publish config/translations. No Tailwind/Vite build step — v3 auto-registers its stylesheet, which removes the most common upgrade friction we have seen with form-field packages.slug, but real-world correctness depends on scoping — multi-tenant, soft-deleted records, and draft/published variants. This must be configured via modifyRuleUsing, and if we do not, we ship a latent 500 or a silent cross-tenant leak.slugIsReadonly or the /-as-homepage pattern are the only guardrails. Without a policy ("slug freezes at first publish"), we will casually break inbound links and SEO — a business cost far exceeding the package's.Technical risk
blendbyte) with a prior namespace migration (Camya\… → Blendbyte\…) and two deprecated major lines. This is a bus-factor-of-one dependency in a critical authoring path. Positive counter-signals: MIT license, tagged releases, CI test + static-analysis badges, 7 shipped locales.urlHost/urlPath in preview strings can drift from actual routing; prefer urlVisitLinkRoute so the visible URL is derived from the route table.Key questions
titleField behave with translatable inputs where slug is not itself translatable — one slug per locale or per record?modifyRuleUsing?Stack fit
lang/vendor/filament-title-with-slug.titleField support is the deciding fit criterion for content models needing translatable titles; without it the component would be unusable for our CMS-style resources.Migration path
camya/filament-title-with-slug (v1/v2), the path is documented and mechanical: composer remove / composer require blendbyte/filament-title-with-slug:^3.0, update the namespace import from Camya\Filament\Forms\Components to Blendbyte\FilamentTitleWithSlug, remove manual CSS imports from Tailwind/Vite, republish config and translations with --force, then apply Filament's own upgrade guide. The make() signature and parameter names are unchanged, so call sites are a find-and-replace.App\Filament\Fields\TitleWithSlug wrapper class so the vendor import appears exactly once in our codebase. That wrapper is the entire exit strategy and costs ~20 lines.Compatibility
Field, state callbacks, asset registration) are the parts most likely to shift in minor releases. Lock to a tested minor range in composer.json and bump deliberately.Sequencing
Maintenance
Support
Scaling
Failure modes
modifyRuleUsing review per resource.slugIsReadonly on edit context or an explicit publish-freeze policy.urlVisitLinkRoute./ as a slug plus relaxed slugRules requires route-level coordination; treat as a design decision, not a config toggle.Ramp-up
How can I help you explore Laravel packages today?