internachi/modular
Modularize your Laravel apps
3.0.2
995K downloads/mo
#2615 most downloaded on Packagist
InterNACHI/modular
What this package is like to depend on
Last release 5 months ago
23 Mar 2026
Release timing varies
gaps range from 3 weeks to 11 months
Some releases are documented
notes for 13 of 28 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
44 releases · first in 2020
8 releases in the last 12 months
see the full history below
Release timeline
42 releases · Jul 2020 to Mar 2026Releases
latest 44-
3.0.223 Mar 2026Release notes
Open source →What's Changed
- Added Laravel 13 support
- fix: boost skill does not use correct module directory by @calebdw in #133
- Add option to skip updating phpunit in modules:sync command by @gvieira18 in #128
New Contributors
- @calebdw made their first contribution in #133
- @gvieira18 made their first contribution in #128
Full Changelog: 3.0.1...3.0.2
-
3.0.106 Feb 2026Release notes
Open source → -
3.0.006 Feb 2026Release notes
Open source →Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Plugin-Based Architecture
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.
Built-in Plugins
Each aspect of module auto-discovery is now handled by a dedicated plugin:
Plugin Responsibility ModulesPluginDiscovers composer.jsonfiles and createsModuleConfiginstancesRoutesPluginLoads route files from modules ViewPluginRegisters view namespaces BladePluginRegisters Blade components with module namespaces TranslatorPluginRegisters translation namespaces and JSON paths EventsPluginDiscovers and registers event listeners MigratorPluginRegisters migration paths GatePluginAuto-registers model policies ArtisanPluginRegisters console commands Registering Custom Plugins
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.
Plugin Lifecycle
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 }
Unified Caching
The
modules:cachecommand 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.Laravel 11+ & PHP 8.3+
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.
Streamlined Dependencies
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Breaking Changes
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
Full Changelog: 2.3.0...3.0.0
-
3.0.0-beta.103 Feb 2026 pre-releaseRelease notes
Open source →Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Plugin-Based Architecture
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.
Built-in Plugins
Each aspect of module auto-discovery is now handled by a dedicated plugin:
Plugin Responsibility ModulesPluginDiscovers composer.jsonfiles and createsModuleConfiginstancesRoutesPluginLoads route files from modules ViewPluginRegisters view namespaces BladePluginRegisters Blade components with module namespaces TranslatorPluginRegisters translation namespaces and JSON paths EventsPluginDiscovers and registers event listeners MigratorPluginRegisters migration paths GatePluginAuto-registers model policies ArtisanPluginRegisters console commands Registering Custom Plugins
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.
Plugin Lifecycle
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 }
Unified Caching
The
modules:cachecommand 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.Laravel 11+ & PHP 8.3+
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.
Streamlined Dependencies
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Breaking Changes
Please see the Upgrade Guide for a complete list of breaking changes and migration instructions.
New Contributors
Full Changelog: 2.2.1...3.0.0-beta.1
-
3.0.0-alpha.5no date pre-release -
3.0.0-alpha.402 Feb 2026 pre-release -
3.0.0-alpha.301 Feb 2026 pre-release -
3.0.0-alpha.231 Jan 2026 pre-releaseRelease notes
Open source →Moved
Modularizehelper trait to separate package.Full Changelog: 3.0.0-alpha.1...3.0.0-alpha.2
-
3.0.0-alpha.131 Jan 2026 pre-releaseRelease notes
Open source →Modular 3.0 is a mostly backwards-compatible rewrite of much of the modular core.
Plugin-Based Architecture
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.
Built-in Plugins
Each aspect of module auto-discovery is now handled by a dedicated plugin:
Plugin Responsibility ModulesPluginDiscovers composer.jsonfiles and createsModuleConfiginstancesRoutesPluginLoads route files from modules ViewPluginRegisters view namespaces BladePluginRegisters Blade components with module namespaces TranslatorPluginRegisters translation namespaces and JSON paths EventsPluginDiscovers and registers event listeners MigratorPluginRegisters migration paths GatePluginAuto-registers model policies ArtisanPluginRegisters console commands Registering Custom Plugins
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.
Plugin Lifecycle
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 }
Unified Caching
The
modules:cachecommand 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.Laravel 11+ & PHP 8.3+
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.
Streamlined Dependencies
The Livewire integration has been moved to a separate package to keep the core package focused and reduce dependencies.
Breaking Changes
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
-
2.3.028 Feb 2025Release notes
Open source →What's Changed
- Fix
getApplicationBasePathnaming in testbench by @inxilpro in #111 - Handle the renamed static property in
Factoryby @samlev in #110 - Add Laravel 12 support + tests by @inxilpro in #112
- Using conventional directories for default test by @cheyner in #108
New Contributors
Full Changelog: 2.2.1...2.3.0
- Fix
-
2.2.128 Jan 2025Nothing published for this version
-
2.2.006 Apr 2024Release notes
Open source →Added
- The modules sync command now adds modules to PhpStorm exclude path, preventing double-registration of modules
-
2.1.018 Mar 2024Release notes
Open source →Added
- Added support for Laravel 11
- Added support for event discovery
Fixed
- Fixed an error with how module command signatures were set
-
2.0.019 May 2023Release notes
Open source →Changed
- 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
-
1.12.019 May 2023Release notes
Open source →Added
- Added support for factory model name resolution inside modules
Fixed
- Added support for new
make:commandchanges in Laravel 10
-
1.11.013 Feb 2023Release notes
Open source →Changed
- Updated version constraints to add Laravel 10 support and drop automated testing for old versions of PHP and Laravel
-
1.10.003 Aug 2022 -
1.9.006 Jul 2022Release notes
Open source →Fixed
- Addressed issue where
make:migrationandmake:livewirewere not loading the custom--moduleoption - Added additional tests for
make:commands to catch necessary changes quicker in the future - Passing a
--moduleflag for an unknown module now triggers a console error
- Addressed issue where
-
1.8.004 Jun 2022Release notes
Open source →Added
- Added support for Blade component namespaces (i.e.
<x-module::component.name />)
Fixed
- Fixed issue with
make:seedercommand introduced in Laravel 9.6.0
- Added support for Blade component namespaces (i.e.
-
1.7.011 Feb 2022 -
1.6.020 Jan 2022Nothing published for this version
-
1.5.215 Nov 2021Nothing published for this version
-
1.5.106 Oct 2021Nothing published for this version
-
1.5.012 Aug 2021Nothing published for this version
-
1.4.007 Jul 2021Nothing published for this version
-
1.3.128 May 2021Nothing published for this version
-
1.3.013 Apr 2021Nothing published for this version
-
1.2.231 Mar 2021Nothing published for this version
-
1.2.104 Mar 2021Nothing published for this version
-
1.2.005 Jan 2021Nothing published for this version
-
1.1.110 Dec 2020Nothing published for this version
-
1.1.014 Nov 2020Nothing published for this version
-
1.1.0-beta.507 Nov 2020 pre-releaseNothing published for this version
-
1.1.0-beta.407 Nov 2020 pre-releaseNothing published for this version
-
1.1.0-beta.307 Nov 2020 pre-releaseNothing published for this version
-
1.1.0-beta.206 Nov 2020 pre-releaseNothing published for this version
-
1.1.0-beta.105 Nov 2020 pre-releaseNothing published for this version
-
1.0.130 Jul 2020Nothing published for this version
-
1.0.008 Jul 2020Nothing published for this version
-
1.0.0-beta.2no date pre-releaseNothing published for this version
-
1.0.0-beta.108 Jul 2020 pre-releaseNothing published for this version
-
1.0.0-alpha.307 Jul 2020 pre-releaseNothing published for this version
-
1.0.0-alpha.207 Jul 2020 pre-releaseNothing published for this version
-
1.0.0-alpha.106 Jul 2020 pre-releaseNothing published for this version