asignua/filament-relation-manager-tabs
A Filament plugin that adds tabs to relation managers, letting you group multiple relationship tables into one clean tabbed interface on resource pages. Simple setup and native Filament styling.
Package shape (inferred): A Filament 5 plugin that embeds a Relation Manager inside a tab/section of a Resource Edit/View page, with lazy loading, badge/tooltip metadata, and inline editing. It sits on top of Filament internals (Tabs, Livewire component parameter injection, Alpine attribute rendering) rather than on documented public APIs.
Architecture fit
Livewire component always injecting record, Tabs reading badges in the nav and both dropdown loops, and two badge APIs (deferBadge() 5.3+, isBadgeDeferred() 5.6+). That is a dependency on framework internals and render-loop behaviour, not a stable contract. Expect recurring compatibility work every Filament minor.Integration feasibility
Technical risk
record="{…json…}" attribute on the lazy placeholder. That is server-side model data emitted into the DOM of a hidden panel, reachable by anyone who can see the page and liable to land in screenshots, browser caches, log capture, and client-side error reports. If we have run any pre-1.1.1 version in a shared or lower-trust environment, treat this as a security review item, not a bug fix. Need to know exactly which attributes were serialized (relation manager pages typically operate on records the viewer is authorised for, but the parent record may carry columns the viewer shouldn't see).keydown.enter guards rather than by structure. Guards are brittle; a future Filament form refactor or a custom input we add could reintroduce it.^5.0 → ^5.6 is a breaking constraint change shipped in a patch version. Safe at install time, but it means the library's version numbers are not a reliable signal of breakage.key: values containing & now throw InvalidArgumentException at render time. Rare, but a render-time throw on a tab means a 500 on the Edit/View page. Also note the documented rule previously claimed a stricter allowlist than the code enforced — documentation drift, now reconciled; anyone who wrote keys against the old docs is fine, anyone who relied on the old code may not be.Key questions
record attribute (which columns, which audiences, retention in logs/APM).key: values, and do any contain &? Grep the codebase before upgrading.->data(['record' => …]) anywhere? The fix preserves that override path — confirm we don't depend on the old implicit injection.ManagerReference::memoized())? Per record and page — confirm badges don't go stale after an inline edit inside the tab changes the counted relation.Stack fit
Migration path
key: values or ->data(['record' => …]).& in custom keys and migrate to safe characters. Treat this as a required pre-upgrade step, since the failure is a render-time exception on a page users depend on.record= JSON in the DOM), Enter key inside embedded search/filter/inline-edit inputs (confirm the outer form does not save), badge and tooltip rendering in both the tab nav and any dropdown overflow, and inline-edit → badge refresh.Compatibility
Tabs iteration order and badge APIs is exactly what will move.& (runtime). Both are acceptable if sequenced, both are surprises if not.Sequencing Filament floor → key audit → package upgrade → targeted QA on DOM output, nested-form Enter behaviour, badge resolution → security sign-off on the disclosure item → deploy. Parallelisable except that the security sign-off should not wait for the upgrade if we have pre-1.1.1 in production.
Maintenance
^1.1, given that patch releases here can carry constraint changes and render-time behaviour changes.Support
Scaling
Failure modes
key: → whole Edit/View page fails, not just the tab. Validate keys in code review.Ramp-up
How can I help you explore Laravel packages today?