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

Filament Relation Manager Tabs Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin panel UX: This package replaces the custom work of embedding a relation manager inside an Edit/View page as a tab or section. That is a recurring layout requirement in almost any Filament admin panel (e.g. "Customer → Orders", "Project → Tasks"), so adopting it buys back engineering time that would otherwise go into bespoke Livewire wiring.
  • Feature/roadmap decisions around record-detail pages: It directly enables the "single page, all related context" pattern — editing a parent record while viewing/editing its children inline — which is a common ask from ops and support teams. If your roadmap includes reducing clicks between parent and child records, this is the enabling component.
  • Risk decisions this release surfaces (worth a PM note):
    • Privacy/QA risk resolved: a Livewire attribute was leaking the owner model as raw JSON into the hidden tab panel, and a " in the data could break the attribute and print raw text on screen. If you ship record data with free-text fields, this was a real (if low-severity) data-exposure and visual-defect risk. v1.1.1 fixes it — a reason to take the upgrade rather than defer.
    • Data-integrity risk resolved: pressing Enter in the embedded manager's search/filter/inline-edit inputs submitted the outer Edit form and saved a half-edited record. That is a "silent wrong data saved" class of bug — high user trust impact, cheap fix. Worth calling out to QA as a regression test case.
    • Dependency-floor decision: the package now requires Filament 5.6+ (was ^5.0). That converts into a platform-upgrade decision: you cannot stay on Filament 5.0–5.5 and take these fixes. Older Filament 5 previously crashed every Edit/View page that had a tab, so teams on 5.0–5.5 are effectively already broken and should upgrade.
    • Behaviour change to plan around: custom key: values containing & now throw InvalidArgumentException (browser decodes character references in the Alpine attribute, so the tab opened empty). Any saved configuration, seeded demo data, or user-entered tab keys containing & must be migrated or validated. PM action: confirm with engineering whether any keys are user-supplied; if so, add validation/copy in the UI rather than letting it throw.
  • Performance/roadmap hygiene: badge, badge colour, and tooltip are now resolved once per record/page instead of up to three times per render. Not a headline feature, but it lowers the cost of putting counters (e.g. "12 open tickets") on many tabs — which makes badge-heavy nav designs affordable.
  • Documentation-trust signal: the README's key: rule was corrected to match the shipped code. Useful for PMs writing internal onboarding docs — the documented rule (empty, backslash, quote, backtick, angle bracket, or control character rejected; everything else allowed) is now accurate.

When to Consider This Package

Consider it when:

  • You are on Filament 5.6+ (hard requirement as of v1.1.1) and need relation managers rendered as tabs or sections on a resource's Edit/View page rather than as a separate page or a plain RelationManager table.
  • You want inline child-record management inside the parent's form context — the use case where users should not lose their place in a long parent form to go edit a child.
  • You want badges/counters on tabs (counts, status colours, tooltips) without hand-rolling nav widgets; the new memoization makes this cheap across many tabs.
  • You are deciding build vs. buy and the alternative is a custom Livewire/Alpine implementation of nested forms — this package already absorbs the ugly edge cases (form submission containment, Livewire attribute injection, deferred badges).
  • You need the v1.1.1 fixes specifically: the JSON-leak fix, the Enter-key form-submission fix, and the Filament 5.6 compatibility fix. If you are on an older 5.x, this release is effectively a prerequisite upgrade, not an optional one.

Look elsewhere (or plan extra work) when:

  • You are pinned to Filament 5.0–5.5 and cannot upgrade — this version will not install, and older versions crashed Edit/View pages with tabs.
  • You need custom tab key: values containing & (or user-authored keys you cannot validate/constrain) — this now throws by design.
  • Your related-record editing needs are better served by a dedicated RelationManager page, a modal action, or a separate resource — the embedded-tab pattern adds form-nesting complexity that isn't free.
  • You require heavy customization of the embedded manager's own form behaviour; the Enter-key guard is scoped to inputs owned by the outer form, so unusual custom input compositions need verification.
  • You need guaranteed long-term API stability: this is a small-maintainer package with meaningful behaviour changes between patch releases (the & key rule and the Filament floor both changed in a patch bump). Treat it as a dependency to pin and regression-test, not a foundation.

How to Pitch It (Stakeholders)

For executives (one paragraph): This is a small UI component for our Filament admin panel that lets staff edit a record and its related records on one screen instead of bouncing between pages. The new release closes two real defects — a case where record data could print as raw JSON text on screen, and a case where pressing Enter in a search box silently saved a half-finished record — and it fixes a crash that hit every edit page for teams on older Filament 5 versions. The cost is a mandatory framework bump to Filament 5.6+ and one small behaviour change for custom tab identifiers. Recommendation: take the upgrade, budget a short regression pass, and schedule the Filament bump alongside it.

For engineering: v1.1.1 is a correctness release. It sets the Livewire record to null in RelationManagerTab::livewire() (a caller's ->data(['record' => …]) still overrides), which stops Filament's always-injected record from being forwarded as an HTML attribute and leaking model JSON into the hidden panel. It bumps the Filament floor to 5.6+ because the tab calls deferBadge() (5.3+) and isBadgeDeferred() (5.6+). It adds a keydown.enter guard scoped to outer-form-owned inputs so embedded search/filter/inline-edit no longer submit the parent form. It memoizes badge, colour, and tooltip per record/page via ManagerReference::memoized(), and it tightens the custom key: rule so & throws InvalidArgumentException (character references are decoded in the Alpine attribute, producing an empty tab). The README's key: rule was corrected to match shipped behaviour. Action items: upgrade Filament to 5.6+, grep for key: values containing &, add regression tests for Enter-in-input and for records with quotes/free text in the parent model, and pin the version.

For the product/QA team: Two test scenarios matter most — press Enter in the embedded manager's search, filter, and inline-edit fields on an Edit page (the parent form must not submit), and open a tab on a record whose fields contain quotes or JSON-sensitive characters (no raw text should appear in the hidden panel). Also verify any existing tab key: values, and re-verify tab badges/counters render with correct counts after the memoization change.

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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox