- What is panicdevs/modulite used for in Laravel?
- panicdevs/modulite automatically discovers and registers Filament panel providers, resources, pages, and widgets across modular Laravel applications. It is designed for modular monoliths using either nwidart/laravel-modules or panicdevs/modules, reducing manual Filament registration. It adds file-based caching and optimization commands for production performance. It is not intended for standard monolithic Filament apps or runtime-dynamic module loading.
- Does Modulite support both nwidart/laravel-modules and panicdevs/modules?
- Yes, Modulite supports both nwidart/laravel-modules and panicdevs/modules as module systems. The module approach is selected through configuration using MODULITE_APPROACH set to panicdevs or nwidart. You should align your module directory and naming conventions with the expected patterns before enabling discovery.
- Which Laravel and Filament versions does Modulite support?
- The package requirements are PHP 8.2 or higher and Filament 4.0 or higher, and version 1.1.1 claims Filament v5 support. The provided overview does not clearly document the full Laravel version constraint, so verify it in the package composer.json. Pin the exact Modulite version and test against your Laravel and Filament versions before adoption.
- How do I install and configure panicdevs/modulite?
- Install it with composer require panicdevs/modulite, then publish the configuration using php artisan vendor:publish --tag=modulite-config. Set MODULITE_APPROACH to panicdevs or nwidart depending on your module package. Add ModulitePlugin to the Filament panel providers where you want component discovery, and run php artisan modulite:cache for production optimization.
- Do I need to add ModulitePlugin to every Filament panel provider?
- Modulite discovers panel providers automatically through its service provider, but component discovery for resources, pages, and widgets happens through ModulitePlugin per panel. Add ModulitePlugin only to the panels where you want that discovery behavior. This per-panel registration also gives you a way to scope discovery rather than enabling it everywhere by default.
- How does Modulite caching work in production?
- Modulite uses a file-based cache similar to Laravel's bootstrap cache, stored at bootstrap/cache/modulite.php, and you can build it with php artisan modulite:cache. Production deployments must ensure bootstrap/cache is writable and that the cache is built during CI or deployment. Stale or missing cache is a primary operational risk, so define a clear cache invalidation contract in your pipeline before relying on it.
- Does Modulite conflict with Filament's native discoverResources, discoverPages, and discoverWidgets?
- Modulite's plugin-based discovery overlaps with Filament's native discoverResources, discoverPages, and discoverWidgets behavior, so you must validate whether it is complementary or a replacement in your app. Running both without care can cause duplicate registration or unclear ownership of component registration. Test parity against manual registration and native discovery in one representative module and panel before wider rollout.
- What happens if Modulite discovers an invalid class or fails to load a module?
- The README advertises robust error handling and graceful failure modes for production environments. However, auto-discovery can obscure registration and create boot-time failures if invalid or unloadable classes are discovered. You should explicitly test whether Modulite fails boot or skips invalid classes, and confirm whether discovery is deterministic across filesystem ordering.
- Can Modulite handle large module counts, multi-panel, and multi-tenant setups?
- Modulite is added per panel through ModulitePlugin, which helps scope discovery in multi-panel applications. The README claims roughly 1 to 2ms warm cache and 1 to 20ms cold startup depending on module count, but those figures need validation against your actual module count and deployment topology. Multi-tenant behavior and environment-level scoping should be tested directly before production use.
- Should I use Modulite in production, and what are the alternatives?
- Treat Modulite as a conditional pilot rather than a platform-wide standard for now. Maturity signals are limited, including around 22 stars, zero dependents, early 1.x releases with breaking changes, and a small-maintainer profile. Alternatives include explicit manual Filament registration and Filament's native discovery methods. If you pilot Modulite, time-box a spike with one module and two panels, require parity reporting, add a CI cache-build step, and keep a rollback plan.