- What does the filament-saved-filter package do?
- It lets Filament users store the current table filter configuration as a named preset and reapply it later with one click. Saved filters are managed and deleted per user, so data-heavy admin resources and dashboards are faster to navigate without rebuilding complex filter combinations. It is a lightweight, configurable add-on for Filament Table.
- How do I install filament-saved-filter in a Laravel Filament app?
- Install it with Composer as jeffersongoncalves/filament-saved-filter, then publish and run the package migrations. The package depends on laravel-saved-filter ^1.10, so confirm that dependency is resolved before migrating. For upgrades, publish the migrations again and inspect the files before running php artisan migrate.
- Does filament-saved-filter work on custom pages and relation manager tables?
- Yes, the newer release supports any table surface using InteractsWithTable, including ManageRelatedRecords pages and custom pages, not just resource list pages. Custom pages must call configureSavedFilters() inside their own table() method, or the feature silently will not appear. Outside list pages, saved views are keyed by page class, so renaming or moving a custom page can orphan its saved views with no described migration path.
- How are saved filters scoped to users and tenants?
- Saved filters are managed and deleted per user, and the package supports owner, tenant, and shared scopes in its persistence model. When a view is applied via ?view=<id>, the server must re-check owner, tenant, and shared scope on every request. Do not rely on render-time checks alone, because integer IDs in URLs are enumerable.
- Is ?view=<id> in the URL a security risk for Filament saved filters?
- It can be an IDOR surface because integer view IDs in URLs invite enumeration. Applying a saved view by ID must re-check ownership, tenant, and sharing permissions server-side on every request, not just when the page renders. Without that check, a user could see another user's filter state, grouping, or potentially a colleague's name.
- What Laravel and Filament versions does this package support?
- The package integrates with Filament Table and depends on laravel-saved-filter ^1.10. Exact Laravel and Filament version constraints are declared in the package composer.json, so check those before adding it to an existing application. Test the resolved dependency set in a staging app, especially when upgrading from an older release.
- How do I upgrade from an earlier version of filament-saved-filter?
- Upgrade the dependency to laravel-saved-filter ^1.10, then republish and run the package migrations before deploying the new package code. Inspect the published migration directory first: if a new migration overwrites an already-run file, the new columns will never be applied. Confirm the release ships a later-timestamped migration rather than editing an existing one.
- What happens to a saved-filter link after the view is deleted or access is revoked?
- A deleted view or a recipient without access leaves a dangling ?view=<id> link in circulation. The package notes do not define whether that should degrade silently to the default view or return an error, so document and implement the behavior your app needs. A graceful fallback with a clear message is usually safer for support.
- Does filament-saved-filter include email reports and scheduling?
- The newer release adds an email reports subsystem with a per-tenant My email reports slide-over, per-report timezones, schedule summaries in the view picker, and view/report IDs in the report context. Reports too large to attach can optionally use laravel-report-url for temporary download links. This is a separate scheduling and notification surface, so review its data model and tenant boundaries carefully.
- How should I evaluate filament-saved-filter before production?
- The available release evidence is release-notes-only, with no changelog diff, migration source, or test artefacts supplied. Before production, verify migration file identity, server-side authorization for ?view=<id>, dangling-link behavior, and cross-tenant aggregation in the My email reports slide-over. Run the upgrade in staging and diff the published migrations before deploying to production.