kisame76/filament-tree-table
Expandable parent/child tree rows for Filament v4 and v5 tables. Show top-level parents, expand with a chevron to reveal inline child rows while search and filters stay correct. Includes expand-all/collapse-all actions and optional pagination by root.
Architecture fit. This is a Filament panel plugin rather than a general-purpose Laravel library, so its architectural footprint is narrow and well-bounded: it hooks into Filament's table layer (columns, toggle column, chevrons, expand/collapse-all actions, search) and persists column state via Table::persistColumnsInSession(). That means it inherits Filament's rendering model and Livewire lifecycle rather than introducing a parallel abstraction. For a team already standardized on Filament for admin surfaces, the fit is high and the surface area to reason about is small — essentially one table concern, not an application-wide dependency.
Integration feasibility. Composer-only integration with no service providers or migrations implied by the notes. The main feasibility question is version pinning: v1.3.1 tightens the v4 line from ^4.0||^5.0 to ^4.3||^5.0. Because Composer already resolves the newest 4.x, projects that upgrade normally will land on ≥4.3 without intervention. Projects deliberately frozen on Filament 4.0–4.2 (for example, held back by another plugin's constraints) will fail dependency resolution and see a hard blocker in CI rather than a runtime failure — which is the better failure mode, but it needs to be communicated.
Technical risk. Two risks are worth naming. First, a dependency-floor change is semantically a breaking change for a subset of consumers even though no public API changed; semver would argue for a minor-version signal, and the release is a patch. Second, the plugin's behavior is now coupled to a fairly recent Filament internal (persistColumnsInSession(), added 4.3.0), which is the kind of API that can shift within a major line. Offsetting both: the release adds Livewire-mounted rendering tests that actually draw rows and exercise the toggle, chevrons, expand/collapse and search — previously the tests only inspected the query. That materially raises confidence in the interactive paths, which are exactly where a table plugin breaks.
Key questions.
SECURITY.md scope cover the rendering surface, or only the query-building code?Stack fit. Target environment is a Laravel 11/12/13 application on PHP 8.2+ with Filament 4.3+ or 5.x. The release's CI matrix covers exactly that space (PHP 8.2–8.5 × Laravel 11/12/13 × Filament 4/5), plus a lowest-versions Composer run — a strong signal that the advertised compatibility is tested rather than asserted. Teams on PHP 8.1 or Laravel 10 should treat this release as out of scope.
Migration path. Upgrading from any earlier 1.x on the v4 line is a Composer operation only: bump the package, let Composer pull the newest Filament 4.x, and confirm no other dependency is holding Filament below 4.3. There is no data migration and no configuration change indicated. The realistic failure is a dependency conflict surfaced by composer update; the remediation is either upgrading the conflicting package or staying on the prior plugin release, which remains functional on 4.0–4.2.
Compatibility. Filament 5 is explicitly unaffected by the constraint change and is included in the test matrix. The risk concentrates on the 4.x line's lower bound and on the specific Filament internal the plugin now depends on. Because the plugin also touches session-backed column persistence, behavior can differ subtly between stateless and session-configured table setups — worth a smoke test in each panel configuration we run.
Sequencing. (1) Inventory every Filament panel and its resolved Filament version. (2) Confirm nothing pins below 4.3, or schedule that remediation first. (3) Upgrade in a non-production panel, exercising toggle, chevrons, expand/collapse-all and search manually to corroborate the new test coverage. (4) Roll to remaining panels. (5) Adopt the tag-driven release process as the trigger for our own upgrade reviews, since release notes are now guaranteed to be populated.
Maintenance. Low. One table concern, no migrations, no background processes, no external services. The tightened floor actually reduces our maintenance surface by dropping untested Filament versions. The addition of Dependabot-managed, SHA-pinned workflow actions shifts some upkeep to the maintainer; our own cost is periodic version bumps gated on the CI matrix passing.
Support. Improved by this release in two concrete ways: SECURITY.md gives us a reporting address and a stated scope, which matters for any dependency that renders admin UI handling user-supplied data, and the release workflow fails a tag that lacks a changelog section, so we will not receive empty release notes. Both reduce the ambiguity cost we normally absorb when assessing a small package.
Scaling. Effectively neutral — the plugin operates per-table-instance in the panel request cycle. The session-backed column state is the only per-user persistence, and it is Filament-managed. No scaling work is implied by this release.
Failure modes. The dominant failure is dependency resolution at install time: a hard Composer stop for panels on Filament 4.0–4.2, which is loud, early, and cheap to diagnose. The subtler failure is behavioral drift if Filament changes persistColumnsInSession() semantics within the 4.x line, which would manifest as column visibility state not surviving navigation or resetting unexpectedly. The new Livewire rendering tests substantially mitigate that class of regression, but they test against the Filament versions in the matrix, not against a future 4.x patch — so we should pin Filament minors in production and let the matrix validate the bump.
Ramp-up. Negligible for developers already fluent in Filament tables; the plugin's concepts (toggle column, chevrons, expand/collapse-all) map directly onto Filament's own table API. For developers new to Filament, the plugin adds no new mental model — it is an extension of the table layer they must learn anyway. Documentation and testing effort should focus on the session-persistence behavior, since that is the least obvious part of the contract.
How can I help you explore Laravel packages today?