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

ymsoft/filament-table-presets

A Filament package for saving and restoring table presets—let users store column layouts, filters, sorting, and other table settings, then switch between named views instantly without reconfiguring tables each time.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a Filament panel plugin whose scope is table UI state: column visibility/order, filters, sort, search, and possibly pagination, persisted as named presets per user (and possibly per tenant/resource).
  • Fit is high if the product is already a Filament admin panel and users operate filter-heavy resources (orders, tickets, audit logs, inventory). It is near-zero value outside Filament.
  • It sits in the presentation layer only. No domain model coupling, no queue/event surface, no external service dependency — the integration risk is concentrated in Filament's internal table/Livewire state API, not in our business logic.
  • Persistence implies a new table (migration publish) and a model owned by the vendor namespace. That is the only schema footprint we inherit.

Integration feasibility

  • Install path is the standard Laravel package flow: composer require ymsoft/filament-table-presets, publish migrations/config, register the plugin in the target PanelProvider, and optionally enable per resource/table.
  • Realistic effort for a first working slice: 0.5–1.5 days including a review of the published migration and a check of how table identity is keyed.
  • Blocking unknowns are concentrated in three places: (1) how the table is uniquely identified (resource class vs. Livewire component vs. custom key — matters for renamed/moved resources), (2) whether filter state is stored as serialized Livewire/filter objects (schema drift risk on Filament upgrades) or as plain arrays, (3) tenant scoping.

Technical risk

Risk Severity Notes
Maturity / bus factor High 17 stars, 0 dependents, single-maintainer signal. Effectively unvalidated in production by anyone but the author.
Filament major-version coupling High Plugins hook table internals; a Filament v4→v5 bump can break presets silently. This is the dominant long-term cost.
Serialized state fragility Medium–High If presets store filter objects or column names, any rename/removal of a column or filter produces broken or misleading presets.
Multi-tenancy / authorization Medium Must confirm presets are scoped by tenant and user, and that a shared-preset feature (if present) enforces policy. Cross-tenant leakage is a compliance issue, not a bug.
Data sensitivity Medium Filter values can encode PII or business-sensitive queries (e.g., a customer ID filter). Presets become stored user data subject to retention/export/deletion obligations.
Abandonment Medium MIT license and a small surface area make forking viable; plan for it rather than assume upstream fixes.

Key questions to put to the maintainer / to answer in a spike

  1. What exactly is persisted, and in what format — plain arrays or serialized Filament objects?
  2. How is a table identified across resource renames, panel moves, and multi-tenant panels?
  3. Is there a per-user vs. shared/global preset concept, and what authorization gates it?
  4. Which Filament versions are supported, and is there a documented upgrade/test matrix?
  5. Does it capture active search terms and pagination, or only columns/filters/sort? (Search-term persistence has privacy implications.)
  6. What happens when a stored preset references a deleted column or filter — hard error, silent no-op, or graceful skip?
  7. Are migrations publish-only, and is there a documented rollback and cleanup command?
  8. Is there any test suite, CI, or static analysis in the repo? (Signals whether a fork is cheap to maintain.)

Integration Approach

Stack fit

  • Requires Laravel + Filament with Livewire already in place; no PHP version or database engine surprises expected beyond the Filament constraint. Verify the composer constraint against our pinned Filament version before committing — this is the single most common failure point for Filament plugins.
  • Fits our existing deployment model: one composer dependency, one published migration, one provider registration. No new runtime (no Redis, no queue worker, no Node build step).

Migration path

  • Greenfield within our panel: publish migration → deploy → register plugin on one non-critical panel first.
  • Existing panels: add the plugin as opt-in per resource rather than panel-wide, so we can roll out by surface area and roll back by removing a trait/registration without touching data.
  • Data is new and additive; there is no backfill. Rollback = drop the presets table (accepting loss of user-saved presets — communicate this before launch).

Compatibility

  • Confirm supported Filament major(s) explicitly, and record the constraint in our composer.json with a caret pin plus a lockfile. Treat any Filament upgrade as requiring a preset regression test.
  • Check the multi-tenant story against our tenancy configuration; if the package keys only on user + table, we must add tenant scoping ourselves via a global scope or a wrapper model.
  • Database: verify column types on the published migration (JSON vs. longText) against our MySQL/Postgres target.

Sequencing

  1. Spike (1–2 days): install on a scratch branch, enable on one filter-heavy resource, inspect the stored payload, test preset behavior after renaming a column and after a Filament minor upgrade.
  2. Security/privacy review (0.5 day): confirm tenant isolation and decide retention/export policy for preset rows.
  3. Pilot (1 sprint): one internal admin panel, 5–10 power users, measure adoption and support tickets.
  4. Wrapper layer: add a thin internal abstraction (base resource trait + our own model/scope if needed) so an upstream break or fork swap is a one-file change rather than a search-and-replace.
  5. Broader rollout only after the pilot shows reuse and after we've pinned/upgrade-tested against our Filament version.

Operational Impact

Maintenance

  • Low steady-state cost, high tail risk. The code surface we depend on is small, but we are coupled to Filament internals via a third party with no SLA.
  • Budget implicitly for a fork: MIT license, small codebase, so the realistic contingency is vendoring the package into our repo and owning it. Decide the trigger for that (e.g., two consecutive Filament upgrades without an upstream release, or maintainer inactivity > 6 months).
  • Add one regression test to our suite: create preset → change column/filter → load preset → assert no exception. Cheap and catches most upgrade breaks.

Support

  • No vendor support; issues and PRs only. Internal support load is mostly UX confusion ("my preset looks wrong / shows no results") rather than defects.
  • Users need lightweight enablement: what a preset captures, naming conventions, and how to reset a stale preset. A broken preset that silently produces an empty table is the highest-volume ticket type.

Scaling

  • Negligible: one small row per preset, read once per table render. Even at thousands of users, this is noise compared to the table query itself.
  • Watch for unbounded preset creation (no limit → clutter and a growing list in the header dropdown). Consider a soft cap or cleanup of unused presets.

Failure modes

Mode Symptom Mitigation
Filament upgrade breaks hooks Preset action missing or throws Pin Filament; regression test; feature-flag the plugin off per resource
Renamed/removed column or filter Preset loads but table is wrong/empty Graceful-skip expectation documented; audit presets on schema changes
Serialized payload schema drift Old presets throw on load Version the payload or accept a one-time reset of presets per upgrade
Tenant scoping gap Preset visible across tenants Verify in pilot; enforce with our own global scope if absent
Migration not run on deploy Runtime exception on table render Deploy checklist + migrate in release pipeline
Abandonment No fixes for new Filament Fork/vendor trigger defined in advance

Ramp-up

  • Engineering: low — half a day to a day for a Laravel/Filament-fluent developer.
  • Users: low but nonzero — this is a discoverability and habit problem, not a training problem. Expect adoption to concentrate among power users; measure preset creation rate in the pilot before investing further.
  • Overall verdict: worth a scoped pilot, not a platform commitment. The capability is genuinely useful and cheap to try, but with 17 stars and zero dependents we should treat it as "adopt with a fork plan," gate it per resource, and keep the integration thin enough to remove in an afternoon.
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.
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
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums