PackageTrack
Sign in Get early access

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 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 44
  1. 3.0.2 23 Mar 2026
    Release notes

    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

    Full Changelog: 3.0.1...3.0.2

    Open source →
  2. 3.0.1 06 Feb 2026
    Release notes

    What's Changed

    Full Changelog: 3.0.0...3.0.1

    Open source →
  3. 3.0.0 06 Feb 2026
    Release notes

    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
    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

    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:

    1. discover() - Scans the filesystem and returns serializable discovery data
    2. handle() - 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: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.

    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

    Open source →
  4. 3.0.0-beta.1 03 Feb 2026 pre-release
    Release notes

    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
    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

    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:

    1. discover() - Scans the filesystem and returns serializable discovery data
    2. handle() - 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: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.

    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

    Open source →
  5. 3.0.0-alpha.5 no date pre-release
    Release notes Open source →
  6. 3.0.0-alpha.4 02 Feb 2026 pre-release
    Release notes Open source →
  7. 3.0.0-alpha.3 01 Feb 2026 pre-release
    Release notes Open source →
  8. 3.0.0-alpha.2 31 Jan 2026 pre-release
    Release notes

    Moved Modularize helper trait to separate package.

    Full Changelog: 3.0.0-alpha.1...3.0.0-alpha.2

    Open source →
  9. 3.0.0-alpha.1 31 Jan 2026 pre-release
    Release notes

    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
    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

    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:

    1. discover() - Scans the filesystem and returns serializable discovery data
    2. handle() - 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: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.

    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

    Open source →
  10. 2.3.0 28 Feb 2025
    Release notes

    What's Changed

    • Fix getApplicationBasePath naming in testbench by @inxilpro in #111
    • Handle the renamed static property in Factory by @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

    Open source →
  11. 2.2.1 28 Jan 2025

    Nothing published for this version

  12. 2.2.0 06 Apr 2024
    Release notes

    Added

    • The modules sync command now adds modules to PhpStorm exclude path, preventing double-registration of modules
    Open source →
  13. 2.1.0 18 Mar 2024
    Release notes

    Added

    • Added support for Laravel 11
    • Added support for event discovery

    Fixed

    • Fixed an error with how module command signatures were set
    Open source →
  14. 2.0.0 19 May 2023
    Release notes

    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
    Open source →
  15. 1.12.0 19 May 2023
    Release notes

    Added

    • Added support for factory model name resolution inside modules

    Fixed

    • Added support for new make:command changes in Laravel 10
    Open source →
  16. 1.11.0 13 Feb 2023
    Release notes

    Changed

    • Updated version constraints to add Laravel 10 support and drop automated testing for old versions of PHP and Laravel
    Open source →
  17. 1.10.0 03 Aug 2022
    Release notes

    Fixed

    • Improved path normalization on Windows (thanks to @Sophist-UK)
    Open source →
  18. 1.9.0 06 Jul 2022
    Release notes

    Fixed

    • Addressed issue where make:migration and make:livewire were not loading the custom --module option
    • Added additional tests for make: commands to catch necessary changes quicker in the future
    • Passing a --module flag for an unknown module now triggers a console error
    Open source →
  19. 1.8.0 04 Jun 2022
    Release notes

    Added

    • Added support for Blade component namespaces (i.e. <x-module::component.name />)

    Fixed

    • Fixed issue with make:seeder command introduced in Laravel 9.6.0
    Open source →
  20. 1.7.0 11 Feb 2022
    Release notes

    Added

    • Added support for Laravel 9.x
    Open source →
  21. 1.6.0 20 Jan 2022

    Nothing published for this version

  22. 1.5.2 15 Nov 2021

    Nothing published for this version

  23. 1.5.1 06 Oct 2021

    Nothing published for this version

  24. 1.5.0 12 Aug 2021

    Nothing published for this version

  25. 1.4.0 07 Jul 2021

    Nothing published for this version

  26. 1.3.1 28 May 2021

    Nothing published for this version

  27. 1.3.0 13 Apr 2021

    Nothing published for this version

  28. 1.2.2 31 Mar 2021

    Nothing published for this version

  29. 1.2.1 04 Mar 2021

    Nothing published for this version

  30. 1.2.0 05 Jan 2021

    Nothing published for this version

  31. 1.1.1 10 Dec 2020

    Nothing published for this version

  32. 1.1.0 14 Nov 2020

    Nothing published for this version

  33. 1.1.0-beta.5 07 Nov 2020 pre-release

    Nothing published for this version

  34. 1.1.0-beta.4 07 Nov 2020 pre-release

    Nothing published for this version

  35. 1.1.0-beta.3 07 Nov 2020 pre-release

    Nothing published for this version

  36. 1.1.0-beta.2 06 Nov 2020 pre-release

    Nothing published for this version

  37. 1.1.0-beta.1 05 Nov 2020 pre-release

    Nothing published for this version

  38. 1.0.1 30 Jul 2020

    Nothing published for this version

  39. 1.0.0 08 Jul 2020

    Nothing published for this version

  40. 1.0.0-beta.2 no date pre-release

    Nothing published for this version

  41. 1.0.0-beta.1 08 Jul 2020 pre-release

    Nothing published for this version

  42. 1.0.0-alpha.3 07 Jul 2020 pre-release

    Nothing published for this version

  43. 1.0.0-alpha.2 07 Jul 2020 pre-release

    Nothing published for this version

  44. 1.0.0-alpha.1 06 Jul 2020 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive