Static analysis for Filament v4/v5 projects. Like Pint, but for Filament. Run it after AI agents generate code or during CI to catch common issues.
View on GitHub
composer require laraveldaily/filacheck --dev
$ vendor/bin/filacheck Scanning: app/Filament ..x..x........ deprecated-reactive (Deprecated Code) app/Filament/Resources/UserResource.php Line 45: The `reactive()` method is deprecated. → Use `live()` instead of `reactive()`. deprecated-action-form (Deprecated Code) app/Filament/Resources/PostResource.php Line 78: The `form()` method is deprecated on Actions. → Use `schema()` instead of `form()`. Rules: 10 passed, 2 failed Issues: 2 warning(s)
Find deprecated patterns like ->reactive(), old form methods, and more.
Built-in auto-fixer with optional backup file creation.
Clean exit codes and pre-configured GitHub Actions workflow.
deprecated-reactive
deprecated-action-form
deprecated-filter-form
deprecated-placeholder
deprecated-mutate-form-data-using
deprecated-empty-label
deprecated-forms-get
deprecated-forms-set
deprecated-image-column-size
deprecated-view-property
action-in-bulk-action-group
wrong-tab-namespace
deprecated-bulk-actions
deprecated-url-parameters
deprecated-test-methods
19 additional rules for performance optimization, security, best practices, and UX suggestions — on top of the 15 free rules.
too-many-columns
Warns when tables have more than 10 columns
large-option-list-searchable
Suggests ->searchable() for lists with 10+ options
heavy-closure-in-format-state
Detects database queries inside formatStateUsing() closures that cause N+1 issues
stats-widget-polling-not-disabled
Warns when StatsOverviewWidget uses the default 5-second polling interval
file-upload-missing-accepted-file-types
Warns when FileUpload is missing acceptedFileTypes() or image()
action-missing-authorization
Warns when Action, BulkAction, ImportAction, or ExportAction is missing hidden(), visible(), or authorize()
flat-form-overload
Warns when form schema has more than 8 fields without any layout grouping
relationship-select-not-searchable
Warns when Select with relationship() is missing searchable()
missing-table-filters
Warns when table has filterable columns but no filters defined
table-without-searchable-columns
Warns when table has text columns but none are searchable
filter-missing-indicator
Warns when custom Filter has a schema() but no indicateUsing() or indicator()
custom-theme-needed
Detects Tailwind CSS usage in Blade without a custom theme configured
unnecessary-unique-ignore-record
Detects ->unique(ignoreRecord: true) — default in Filament v4 (auto-fixable)
string-icon-instead-of-enum
Use Heroicon::Pencil enum instead of string icons (auto-fixable)
string-font-weight-instead-of-enum
Use FontWeight::Bold enum instead of strings (auto-fixable)
deprecated-notification-action-namespace
Detects old notification Action namespace (auto-fixable)
file-upload-missing-max-size
Warns when FileUpload is missing maxSize()
bulk-action-missing-deselect
Warns when BulkAction is missing deselectRecordsAfterCompletion() (auto-fixable)
enum-missing-filament-interfaces
Warns when enums cast in Eloquent models are missing Filament interfaces like HasLabel
One-time payment
Secure checkout powered by Paddle