Laravel Packages I Install on Almost Every Project
Over time, most Laravel projects start to look the same in one important way: you end up reinstalling the same small set of tools that make development faster, safer, and easier to debug.
This is the stack I reach for almost every time. These packages don’t change your architecture, but they dramatically improve day-to-day developer experience.
Laravel IDE Helper
If you use PhpStorm or VS Code, this one is hard to live without.
Laravel relies heavily on magic methods and facades, which can confuse IDEs. IDE Helper generates metadata so your editor understands what’s really going on. That means better autocomplete, fewer false errors, and faster navigation.
composer require --dev barryvdh/laravel-ide-helper
php artisan ide-helper:generate
For best results, re-run the generator after adding new models or facades.
I treat this as mandatory for any team project.
Laravel Debugbar
Debugbar gives you instant visibility into what your app is doing on each request: queries, routes, views, memory usage, and timing.
It’s especially useful when performance starts to feel “off” and you don’t want to guess why.
composer require barryvdh/laravel-debugbar --dev
No extra setup is required. The toolbar appears automatically in local environments.
Keep it in development only. You don’t want this anywhere near production.
Laravel Query Detector
This package exists for one reason: catching N+1 query problems before they become production bugs.
Instead of silently letting inefficient queries through, Query Detector actively warns you when something smells wrong.
composer require beyondcode/laravel-query-detector --dev
You can fine-tune thresholds and exclusions in the published config if needed.
It’s opinionated, a little noisy at times, and absolutely worth it.
Ray (Debugging That Doesn’t Hurt)
Ray is one of those tools that feels unnecessary until you use it once. Then you miss it everywhere else.
Instead of dumping data into your HTML or logs, you send it to a dedicated desktop app. That keeps your responses clean and your debugging focused.
composer require spatie/laravel-ray
php artisan ray:publish-config
Install the Ray desktop app separately to receive debugging output.
I use Ray constantly when working with collections, jobs, and complex conditionals.
Laravel Pint
Consistent code style matters more than most teams admit.
Pint is Laravel’s official opinionated code formatter. It removes bikeshedding from PRs and makes your codebase look like it was written by one person.
composer require laravel/pint --dev
Run it with:
./vendor/bin/pint
Run it manually or wire it into CI. Either way, it pays off quickly.
Laravel Boost
Boost is a newer addition, but it’s already earned a permanent spot in my setup.
It helps you move faster by generating and managing common project conventions with minimal friction.
composer require laravel/boost --dev
php artisan boost:install
Boost may modify or add files. Review changes before committing.
Think of it as guardrails, not magic.
Laravel Permission (Roles and Permissions Done Right)
When a project needs roles and permissions, I don’t reinvent this wheel.
Spatie’s Laravel Permission package is stable, well-documented, and flexible enough for most real-world authorization needs.
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
Add the required trait to your User model:
use Spatie\Permission\Traits\HasRoles;
Optionally, clear cached permissions after changes:
php artisan permission:cache-reset
```php
use HasRoles;
From there, you get clean role checks, permission gates, and middleware out of the box.
Optional but Worth Considering
These aren’t things I install on every project, but when the problem exists, these packages save a lot of time and mistakes.
Laravel Media Library
File uploads always sound simple until they aren’t.
Media Library solves a lot of hidden problems: file associations, conversions, storage abstraction, and cleanup. I reach for it any time a model needs to “own” files.
composer require "spatie/laravel-medialibrary"
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
php artisan migrate
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-config"
Add the InteractsWithMedia trait to models that handle files.
Laravel Backup
Backups are one of those things everyone agrees are important, and then quietly postpones.
Spatie’s Laravel Backup package removes most excuses. It handles database dumps, file backups, encryption, and storage targets in a predictable, configurable way.
composer require spatie/laravel-backup
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Make sure backups are scheduled via Laravel’s task scheduler.
Once installed, you configure what to back up, where to send it (S3, local, etc.), and how long to keep it. After that, it’s just a scheduled task.
Laravel Response Cache
If you’re serving mostly read-heavy pages, response caching can give you huge performance wins with very little effort.
This package caches full HTTP responses, not just query results. That makes it ideal for landing pages, public APIs, and content-heavy apps.
composer require spatie/laravel-responsecache
php artisan vendor:publish --provider="Spatie\ResponseCache\ResponseCacheServiceProvider"
Clear the cache when deploying or after major content changes.
I don’t install this by default, but when performance matters, it’s one of the first things I reach for.
Laravel Multitenancy
Multitenancy is easy to underestimate and very hard to retrofit.
If you know your app will serve multiple tenants, this package gives you a solid foundation without locking you into a single strategy.
composer require spatie/laravel-multitenancy
php artisan vendor:publish --provider="Spatie\Multitenancy\MultitenancyServiceProvider"
You’ll need to define how tenants are identified before this becomes useful.
This is not something I add casually. But if multitenancy is even a maybe, it’s worth evaluating early.
Laravel MCP (AI-Assisted Development)
Laravel MCP integrates your application with AI tools using the Model Context Protocol. In practice, this lets AI assistants understand your app’s structure, routes, models, and configuration in a much more accurate way.
This is not about generating random code. It’s about giving AI better context so suggestions are actually useful and safer to apply.
composer require laravel/mcp
php artisan mcp:install
Once installed, you expose specific parts of your application as context. You stay in control of what the AI can see and use.
I consider this optional because it changes how you work, not how your app runs. But if you already use AI heavily during development, this is worth exploring early.
Closing Thought
Most of these tools don’t change what your application does. They change how confident you feel running it.
Good backups, sensible caching, and clear tenant boundaries are boring problems until the day they aren’t. Adding the right packages early keeps those problems boring.