PHPackages                             laraveldaily/filacheck - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. laraveldaily/filacheck

ActiveLibrary[Testing &amp; Quality](/categories/testing)

laraveldaily/filacheck
======================

Static analysis for Filament projects - detect deprecated patterns and code issues

v1.1.3(1mo ago)9016.5k↑55.6%4MITPHPPHP ^8.2CI passing

Since Feb 2Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/LaravelDaily/FilaCheck)[ Packagist](https://packagist.org/packages/laraveldaily/filacheck)[ Docs](https://github.com/LaravelDaily/filacheck)[ RSS](/packages/laraveldaily-filacheck/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (10)Versions (26)Used By (0)

FilaCheck
=========

[](#filacheck)

Static analysis for Filament v4/v5 projects. Detect deprecated patterns and code issues.

FilaCheck is like Pint but for Filament - run it after AI agents generate code or during CI to catch common issues.

Installation
------------

[](#installation)

```
composer require laraveldaily/filacheck --dev
```

---

Usage
-----

[](#usage)

You can run Filacheck as a Terminal command.

```
# Scan default app/Filament directory
vendor/bin/filacheck

# Scan specific directory
vendor/bin/filacheck app/Filament/Resources

# Show detailed output with categories
vendor/bin/filacheck --detailed
```

### Scan Only Dirty Files

[](#scan-only-dirty-files)

Scan only files with uncommitted git changes, similar to Laravel Pint's `--dirty` option:

```
# Scan only uncommitted files
vendor/bin/filacheck --dirty

# Auto-fix only dirty files
vendor/bin/filacheck --dirty --fix

# Preview fixes for dirty files only
vendor/bin/filacheck --dirty --dry-run
```

### Auto-fixing Issues (Beta)

[](#auto-fixing-issues-beta)

FilaCheck can automatically fix many issues it detects:

```
# Fix issues automatically
vendor/bin/filacheck --fix

# Preview suggested fixes without modifying files
vendor/bin/filacheck --dry-run

# Fix with backup files (creates .bak files before modifying)
vendor/bin/filacheck --fix --backup
```

Warning

The auto-fix feature is in early stages. Always ensure your code is committed to version control (e.g., Git/GitHub) before running `--fix` so you can easily review and revert changes if needed.

---

Configuration
-------------

[](#configuration)

You can optionally publish the config file to disable individual rules:

```
php artisan vendor:publish --tag=filacheck-config
```

To disable a rule, set `enabled` to `false`:

```
// config/filacheck.php
'deprecated-reactive' => [
    'enabled' => false,
],
```

All rules are enabled by default.

---

Available Rules (15 Free)
-------------------------

[](#available-rules-15-free)

FilaCheck includes the following rules for detecting deprecated code patterns and common issues:

### Best Practices (2 rules)

[](#best-practices-2-rules)

RuleDescriptionFixable`action-in-bulk-action-group`Detects `Action::make()` inside `BulkActionGroup::make()` which should be `BulkAction::make()`Yes`wrong-tab-namespace`Detects wrong `Tab` namespace - should be `Filament\Schemas\Components\Tabs\Tab`Yes### Deprecated Code (13 rules)

[](#deprecated-code-13-rules)

RuleDescriptionFixable`deprecated-reactive`Detects `->reactive()` which should be replaced with `->live()`Yes`deprecated-action-form`Detects `->form()` on Actions which should be `->schema()`Yes`deprecated-filter-form`Detects `->form()` on Filters which should be `->schema()`Yes`deprecated-placeholder`Detects `Placeholder::make()` which should be `TextEntry::make()->state()`No`deprecated-mutate-form-data-using`Detects `->mutateFormDataUsing()` which should be `->mutateDataUsing()`Yes`deprecated-empty-label`Detects `->label('')` which should be `->hiddenLabel()` (or `->iconButton()` on Actions)Yes`deprecated-forms-get`Detects `use Filament\Forms\Get` or `callable $get` which should use `Filament\Schemas\Components\Utilities\Get`Yes`deprecated-forms-set`Detects `use Filament\Forms\Set` or `callable $set` which should use `Filament\Schemas\Components\Utilities\Set`Yes`deprecated-image-column-size`Detects `->size()` on ImageColumn which should be `->imageSize()`Yes`deprecated-view-property`Detects `$view` property not declared as `protected string`Yes`deprecated-bulk-actions`Detects `->bulkActions()` which should be replaced with `->toolbarActions()`Yes`deprecated-url-parameters`Detects deprecated URL parameters like `tableFilters`, `activeTab`, `tableSearch`, etc.Yes`deprecated-test-methods`Detects deprecated test methods like `setActionData()`, `mountTableAction()`, `assertFormSet()`, etc.Partial---

Example Output
--------------

[](#example-output)

```
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: 4 passed, 2 failed
Issues: 2 warning(s)
```

---

Exit Codes
----------

[](#exit-codes)

- `0` - No violations found
- `1` - Violations found

This makes FilaCheck perfect for CI pipelines.

---

[FilaCheck Pro](https://filamentexamples.com/filacheck)
-------------------------------------------------------

[](#filacheck-pro)

**FilaCheck Pro** adds 19 additional rules for performance optimization, security, best practices, and UX suggestions.

### Performance Rules (4 rules)

[](#performance-rules-4-rules)

RuleDescriptionFixable`too-many-columns`Warns when tables have more than 10 columnsNo`large-option-list-searchable`Suggests `->searchable()` for lists with 10+ optionsNo`heavy-closure-in-format-state`Detects database queries inside `formatStateUsing()` closures that cause N+1 issuesNo`stats-widget-polling-not-disabled`Warns when `StatsOverviewWidget` uses the default 5-second polling intervalYes### Security Rules (2 rules)

[](#security-rules-2-rules)

RuleDescriptionFixable`file-upload-missing-accepted-file-types`Warns when `FileUpload` or `SpatieMediaLibraryFileUpload` is missing `acceptedFileTypes()` or `image()`No`action-missing-authorization`Warns when `Action`, `BulkAction`, `ImportAction`, or `ExportAction` is missing `hidden()`, `visible()`, or `authorize()`No### Best Practices Rules (8 rules)

[](#best-practices-rules-8-rules)

RuleDescriptionFixable`string-icon-instead-of-enum`Detects string icons like `'heroicon-o-pencil'` - use `Heroicon::Pencil` enum insteadYes`string-font-weight-instead-of-enum`Detects string font weights like `'bold'` - use `FontWeight::Bold` enum insteadYes`deprecated-notification-action-namespace`Detects deprecated `Filament\Notifications\Actions\Action` namespace - use `Filament\Actions\Action` insteadYes`unnecessary-unique-ignore-record`Detects `->unique(ignoreRecord: true)` which is now the default in Filament v4Yes`custom-theme-needed`Detects Blade files using Tailwind CSS classes without a custom Filament theme configuredNo`file-upload-missing-max-size`Warns when `FileUpload` or `SpatieMediaLibraryFileUpload` is missing `maxSize()`No`bulk-action-missing-deselect`Warns when `BulkAction` is missing `deselectRecordsAfterCompletion()`Yes`enum-missing-filament-interfaces`Warns when enums cast in Eloquent models are missing Filament interfaces like `HasLabel`No### UX Suggestions Rules (5 rules)

[](#ux-suggestions-rules-5-rules)

RuleDescriptionFixable`flat-form-overload`Warns when form schema has more than 8 fields without any layout grouping (Sections, Tabs, Fieldsets, etc.)No`relationship-select-not-searchable`Warns when `Select` with `relationship()` is missing `searchable()`No`missing-table-filters`Warns when table has filterable columns (boolean, badge, icon) but no filters definedNo`table-without-searchable-columns`Warns when table has text columns but none are searchableNo`filter-missing-indicator`Warns when custom `Filter` has a `schema()` but no `indicateUsing()` or `indicator()` for active filter badgesNoGet FilaCheck Pro at [filamentexamples.com/filacheck](https://filamentexamples.com/filacheck).

---

CI Integration
--------------

[](#ci-integration)

### GitHub Actions

[](#github-actions)

```
name: FilaCheck

on: [push, pull_request]

jobs:
  filacheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'

      - name: Install dependencies
        run: composer install --no-progress --prefer-dist

      - name: Run FilaCheck
        run: vendor/bin/filacheck
```

---

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

54

—

FairBetter than 97% of packages

Maintenance88

Actively maintained with recent releases

Popularity43

Moderate usage in the ecosystem

Community15

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

20

Last Release

59d ago

Major Versions

v0.4 → v1.0.02026-03-09

PHP version history (2 changes)v0.1.0PHP ^8.1

v0.1.9PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/8dfd7abe6d76f60f1fe0b5d24abd419f4945bd41766823f9134bb877bb3f5a34?d=identicon)[Laraveldaily](/maintainers/Laraveldaily)

---

Top Contributors

[![PovilasKorop](https://avatars.githubusercontent.com/u/1510147?v=4)](https://github.com/PovilasKorop "PovilasKorop (39 commits)")[![krekas](https://avatars.githubusercontent.com/u/11015977?v=4)](https://github.com/krekas "krekas (34 commits)")[![florianraith](https://avatars.githubusercontent.com/u/37345813?v=4)](https://github.com/florianraith "florianraith (13 commits)")[![medienopfer](https://avatars.githubusercontent.com/u/1210592?v=4)](https://github.com/medienopfer "medienopfer (1 commits)")

---

Tags

laravelstatic analysiscode qualitylintlivewirefilament

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/laraveldaily-filacheck/health.svg)

```
[![Health](https://phpackages.com/badges/laraveldaily-filacheck/health.svg)](https://phpackages.com/packages/laraveldaily-filacheck)
```

###  Alternatives

[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[maglnet/composer-require-checker

CLI tool to analyze composer dependencies and verify that no unknown symbols are used in the sources of a package

99810.9M671](/packages/maglnet-composer-require-checker)[overtrue/phplint

`phplint` is a tool that can speed up linting of php files by running several lint processes at once.

1.0k13.2M726](/packages/overtrue-phplint)[openplain/filament-tree-view

Tree view for Filament resources - drop-in replacement for Table with drag-and-drop hierarchical data management

318.5k](/packages/openplain-filament-tree-view)[ercogx/laravel-filament-starter-kit

This is a Filament v3 Starter Kit for Laravel 12, designed to accelerate the development of Filament-powered applications.

401.5k](/packages/ercogx-laravel-filament-starter-kit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
