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 Tree Table Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

  1. Check your stack first. The package now requires PHP 8.2–8.5, Laravel 11/12/13, and Filament ^4.3||^5.0. If you're pinned to Filament 4.0–4.2 you must bump Filament before installing — Table::persistColumnsInSession() does not exist before 4.3.0, and the package's own suite is only green from 4.3 upward.
  2. composer require the package, then run php artisan filament:upgrade (or filament:assets if you publish assets manually) so the column/chevron views are registered with your panel.
  3. Look first at the table definition, not the package internals: the toggle column is a normal Filament column you place in table(Table $table), and the expand-all / collapse-all controls are table actions. That is where 90% of your day-to-day work will happen.
  4. First use case: a table whose rows carry more detail than fits — e.g. an orders list where each row expands into line items. Add the toggle column (with its chevrons), register expand-all/collapse-all as header actions, and add the column manager so users can hide the columns they don't care about. Call persistColumnsInSession() on the table so those visibility choices survive navigation between pages.

Implementation Patterns

  • Toggle column placement. Add the toggle column first in the column list so the chevron sits at the row's leading edge and acts as the click target for the whole row. Keep the columns you want revealed after it — the toggle is about progressive disclosure, not a replacement for the record view page.

  • Expand-all / collapse-all as table actions. Register them in the table's header/toolbar area rather than as per-row actions; they are bulk-in-spirit and read better at the top. Pair them with search so a user can filter to a handful of rows and expand only those.

  • Column manager + session persistence. This is the combination the release notes explicitly test. In table():

    ->persistColumnsInSession()
    

    With that in place, hidden/reordered columns (and the toggle column's own state) survive Livewire navigation for the session. Without it, the manager resets on every page change — a common "the feature is broken" report that is really a missing one-liner.

  • Search integration. Keep searchable columns visible-by-default in the manager; if a user hides the column they search on, the results look arbitrary. Consider ->searchable() only on columns you expect to stay visible.

  • Testing pattern worth copying. The upstream suite now mounts the table through Livewire and actually draws a row, instead of only asserting on the underlying query. Mirror that: Livewire::test(ListOrders::class) then assert on rendered output / action existence. Query-only assertions will not catch a chevron that fails to render.

  • Contributing / releasing. If you're patching upstream, the release workflow publishes from a v* tag using the matching changelog section — a tag without a section fails the job. Write the changelog entry in the same PR as the change.

Gotchas and Tips

  • The 4.3 floor is the headline breaking-ish change. ^4.0||^5.0 → ^4.3||^5.0. Composer will pull the newest 4.x on a fresh install, so most people notice nothing; projects with an explicit filament/filament: 4.2.* in composer.json or a tight lock file will fail to resolve. Bump Filament deliberately rather than fighting the conflict.
  • Session, not user, persistence. persistColumnsInSession() is exactly what it says. Column choices are lost on session expiry, on logout, and for the next device. If you need durable per-user preferences, store them yourself and hydrate the table state from there.
  • Expanded state is render-local. Expand-all/collapse-all affect the current render; they are not a saved preference. Don't promise users that rows stay open.
  • Render debugging checklist when chevrons or actions don't appear: assets republished after upgrade → column included in the table → the panel actually uses the table you edited → Livewire component re-rendered (cached view/view:clear).
  • Unsupported combinations. Laravel 10, PHP 8.1, and Filament 4.0–4.2 are outside the CI matrix (PHP 8.2–8.5 × Laravel 11/12/13 × Filament 4/5, plus a lowest-deps run). Issues on those stacks are likely to be closed as out-of-scope.
  • Security reporting. The new SECURITY.md asks for private disclosure with a defined scope rather than public issues — worth honouring if you find something in the render path, which is where the newly added integration tests concentrate.
  • Extend via column configuration, not forks. The toggle column is a Filament column; styling/tooltips/labels are reachable through the standard column API. Forking to change a chevron is a maintenance tax across Filament 4 → 5.
  • Version skew between Filament majors. Filament 5 is unaffected by the 4.3 floor, and CI runs both majors — so the same code path is validated on 4 and 5. Keep your own app's CI on at least both if you ship the plugin in a package of your own.
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.
htinlynn/genius-helper
maco-studios/hephaestus
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