NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2196 most downloaded on Packagist
Modularize your Laravel apps
Last release 6 months ago
23 Mar 2026
Release timing varies
gaps range from 3 weeks to 11 months
Most releases are documented
notes for 25 of 28 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
44 releases · first in 2020
One column per quarter.
fix: boost skill does not use correct module directory by @calebdw in #133
Full Changelog: 3.0.1...3.0.2
Fix deprecation warning by @inxilpro in #130
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Modular 3.0 introduces a plugin-based architecture that replaces the monolithic service provider with focused, composable plugin classes. This architectural refactoring improves extensibility, testability, and separation of concerns.
Each aspect of module auto-discovery is now handled by a dedicated plugin:
| Plugin | Responsibility |
|---|---|
ModulesPlugin |
Discovers composer.json files and creates ModuleConfig instances |
RoutesPlugin |
Loads route files from modules |
ViewPlugin |
Registers view namespaces |
BladePlugin |
Registers Blade components with module namespaces |
TranslatorPlugin |
Registers translation namespaces and JSON paths |
EventsPlugin |
Discovers and registers event listeners |
MigratorPlugin |
Registers migration paths |
GatePlugin |
Auto-registers model policies |
ArtisanPlugin |
Registers console commands |
Third-party packages or application code can register custom plugins:
use InterNACHI\Modular\PluginRegistry;
PluginRegistry::register(MyCustomPlugin::class);Custom plugins will be automatically integrated into the caching system and can use the attribute-based lifecycle controls.
Each plugin implements a two-phase lifecycle:
discover() - Scans the filesystem and returns serializable discovery datahandle() - Processes the discovered data (registers with Laravel services)PHP 8 attributes control when plugins execute:
use InterNACHI\Modular\Plugins\Attributes\AfterResolving;
#[AfterResolving(BladeCompiler::class)]
class BladePlugin extends Plugin
{
// Only runs when BladeCompiler is resolved
}The modules:cache command now caches all plugin discovery data in a single file (bootstrap/cache/app-modules.php). This simplifies cache invalidation and reduces filesystem operations during bootstrapping.
Modular 3.0 requires Laravel 11 or later and PHP 8.3 or later. This allows us to leverage modern PHP features like attributes and constructor property promotion throughout the codebase.
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Full Changelog: 2.3.0...3.0.0
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Modular 3.0 introduces a plugin-based architecture that replaces the monolithic service provider with focused, composable plugin classes. This architectural refactoring improves extensibility, testability, and separation of concerns.
Each aspect of module auto-discovery is now handled by a dedicated plugin:
| Plugin | Responsibility |
|---|---|
ModulesPlugin |
Discovers composer.json files and creates ModuleConfig instances |
RoutesPlugin |
Loads route files from modules |
ViewPlugin |
Registers view namespaces |
BladePlugin |
Registers Blade components with module namespaces |
TranslatorPlugin |
Registers translation namespaces and JSON paths |
EventsPlugin |
Discovers and registers event listeners |
MigratorPlugin |
Registers migration paths |
GatePlugin |
Auto-registers model policies |
ArtisanPlugin |
Registers console commands |
Third-party packages or application code can register custom plugins:
use InterNACHI\Modular\PluginRegistry;
PluginRegistry::register(MyCustomPlugin::class);Custom plugins will be automatically integrated into the caching system and can use the attribute-based lifecycle controls.
Each plugin implements a two-phase lifecycle:
discover() - Scans the filesystem and returns serializable discovery datahandle() - Processes the discovered data (registers with Laravel services)PHP 8 attributes control when plugins execute:
use InterNACHI\Modular\Plugins\Attributes\AfterResolving;
#[AfterResolving(BladeCompiler::class)]
class BladePlugin extends Plugin
{
// Only runs when BladeCompiler is resolved
}The modules:cache command now caches all plugin discovery data in a single file (bootstrap/cache/app-modules.php). This simplifies cache invalidation and reduces filesystem operations during bootstrapping.
Modular 3.0 requires Laravel 11 or later and PHP 8.3 or later. This allows us to leverage modern PHP features like attributes and constructor property promotion throughout the codebase.
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Full Changelog: 2.2.1...3.0.0-beta.1
Full Changelog : 3.0.0-alpha.4...3.0.0-alpha.5
Full Changelog: 3.0.0-alpha.4...3.0.0-alpha.5
Full Changelog : 3.0.0-alpha.3...3.0.0-alpha.4
Full Changelog: 3.0.0-alpha.3...3.0.0-alpha.4
Full Changelog : 3.0.0-alpha.2...3.0.0-alpha.3
Full Changelog: 3.0.0-alpha.2...3.0.0-alpha.3
Moved Modularize helper trait to separate package.
Moved Modularize helper trait to separate package.
Full Changelog: 3.0.0-alpha.1...3.0.0-alpha.2
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Modular 3.0 introduces a plugin-based architecture that replaces the monolithic service provider with focused, composable plugin classes. This architectural refactoring improves extensibility, testability, and separation of concerns.
Each aspect of module auto-discovery is now handled by a dedicated plugin:
| Plugin | Responsibility |
|---|---|
ModulesPlugin |
Discovers composer.json files and creates ModuleConfig instances |
RoutesPlugin |
Loads route files from modules |
ViewPlugin |
Registers view namespaces |
BladePlugin |
Registers Blade components with module namespaces |
TranslatorPlugin |
Registers translation namespaces and JSON paths |
EventsPlugin |
Discovers and registers event listeners |
MigratorPlugin |
Registers migration paths |
GatePlugin |
Auto-registers model policies |
ArtisanPlugin |
Registers console commands |
Third-party packages or application code can register custom plugins:
use InterNACHI\Modular\PluginRegistry;
PluginRegistry::register(MyCustomPlugin::class);Custom plugins will be automatically integrated into the caching system and can use the attribute-based lifecycle controls.
Each plugin implements a two-phase lifecycle:
discover() - Scans the filesystem and returns serializable discovery datahandle() - Processes the discovered data (registers with Laravel services)PHP 8 attributes control when plugins execute:
use InterNACHI\Modular\Plugins\Attributes\AfterResolving;
#[AfterResolving(BladeCompiler::class)]
class BladePlugin extends Plugin
{
// Only runs when BladeCompiler is resolved
}The modules:cache command now caches all plugin discovery data in a single file (bootstrap/cache/app-modules.php). This simplifies cache invalidation and reduces filesystem operations during bootstrapping.
Modular 3.0 requires Laravel 11 or later and PHP 8.3 or later. This allows us to leverage modern PHP features like attributes and constructor property promotion throughout the codebase.
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Full Changelog: 2.3.0...3.0.0-alpha.1
Fix getApplicationBasePath naming in testbench by @inxilpro in #111
getApplicationBasePath naming in testbench by @inxilpro in #111Factory by @samlev in #110Full Changelog: 2.2.1...2.3.0
Nothing published for this version
The modules sync command now adds modules to PhpStorm exclude path, preventing double-registration of modules
Added support for event discovery
Dropped support for older versions of PHP and Laravel. If you are using Laravel 7 or 8, or PHP 7, please use the 1.x releases
Added support for factory model name resolution inside modules
make:command changes in Laravel 10Updated version constraints to add Laravel 10 support and drop automated testing for old versions of PHP and Laravel
Improved path normalization on Windows (thanks to @Sophist-UK)
Addressed issue where make:migration and make:livewire were not loading the custom --module option
make:migration and make:livewire were not loading the custom --module optionmake: commands to catch necessary changes quicker in the future--module flag for an unknown module now triggers a console errorAdded support for Blade component namespaces (i.e. )
<x-module::component.name />)make:seeder command introduced in Laravel 9.6.0### Added - Added support for Laravel 9.x
Added support for custom module stubs
make:livewire integration if Livewire is installedAdded support for syncing modules to PhpStorm library roots
### Added - Added support for make:cast
make:castAdded support for Livewire's make:livewire command
make:livewire commandAdded support for --module in php artisan db:seed
--module in php artisan db:seed--module flag is used in Laravel 8+--module flag is used in Laravel 8+Added better handling of missing directories
Added support for translations in modules
diglactic/laravel-breadcrumbs for breadcrumbs checkAdded better patching for PHPStorm config files to minimize diffs
Nothing published for this version
Support for auto-registering Laravel 8 factory classes
AutoDiscoveryHelperNothing published for this version
Adds support for php artisan make:component
php artisan make:componentphp artisan modules:sync will now update additional PhpStorm config files--all on make:modelapp-modules/* composer repository rather than new repositories for each modulecomposer.json fileautoload-dev to autoload because composer doesn't support
autoload-dev for non-root configsNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Introduces a few improvements to the default composer.json format.
Security in case of vulnerabilities.
Added for new features.Changed for changes in existing functionality.Deprecated for soon-to-be removed features.Removed for now removed features.Fixed for any bug fixes.Security in case of vulnerabilities.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →