Just better defaults for your Laravel projects.
Essentials provide better defaults for your Laravel applications including strict models, automatically eagerly loaded relationships, immutable dates, and more!
Requires PHP 8.3+, Laravel 11+.
Note: This package modifies the default behavior of Laravel. It is recommended to use it in new projects or when you are comfortable with the changes it introduces.
⚡️ Get started by requiring the package using Composer:
composer require nunomaduro/essentialsAll features are optional and configurable in config/essentials.php.
You may publish the configuration file with:
php artisan vendor:publish --tag=essentials-configImproves how Eloquent handles undefined attributes, lazy loading, and invalid assignments.
Why: Avoids subtle bugs and makes model behavior easier to reason about.
Automatically eager loads relationships defined in the model's $with property.
Why: Reduces N+1 query issues and improves performance without needing with() everywhere.
Disables Laravel's mass assignment protection globally (opt-in).
Why: Useful in trusted or local environments where you want to skip defining $fillable.
Uses CarbonImmutable instead of mutable date objects across your app.
Why: Prevents unexpected date mutations and improves predictability.
Forces all generated URLs to use https://.
Why: Ensures all traffic uses secure connections by default.
Blocks potentially destructive Artisan commands in production (e.g., migrate:fresh).
Why: Prevents accidental data loss and adds a safety net in sensitive environments.
Configures Laravel Vite to preload assets more aggressively.
Why: Improves front-end load times and user experience.
Configures Laravel Http Facade to prevent stray requests.
Why: Ensure every HTTP calls during tests have been explicitly faked.
Configures Laravel Sleep Facade to be faked.
Why: Avoid unexpected sleep during testing cases.
make:actionQuickly generates action classes in your Laravel application:
php artisan make:action CreateUserActionThis creates a clean action class at app/Actions/CreateUserAction.php:
true,
NunoMaduro\Essentials\Configurables\Unguard::class => false,
// other configurables...
];You may also publish the stubs used by this package:
php artisan vendor:publish --tag=essentials-stubsEssentials was created by Nuno Maduro under the MIT license.
No open issues yet, or sync has not completed.