10 Essential Hidden Gem Laravel Packages for Modern Developers

Overview

Efficiency in software development often boils down to the tools that sit quietly in the background, solving repetitive problems before they become bottlenecks. While

provides a robust core, the ecosystem thrives on specialized packages that refine the developer experience.
Freek Van Der Herten
from
Spatie
presents a selection of "hidden gems"—smaller, highly focused packages designed to automate tedious tasks like restarting queue workers, creating PDFs with modern CSS, or building filterable APIs in minutes. These tools don't just add features; they eliminate the friction that slows down a production-ready workflow.

Prerequisites

To implement these packages, you should have a baseline understanding of the following:

  • PHP 8.x: Most modern Spatie packages require current PHP versions.
  • Laravel Framework: Familiarity with Artisan commands, Blade components, and Middleware.
  • Composer: The ability to manage dependencies via the command line.
  • Node/NPM: Required for packages that rely on headless browsers like
    Puppeteer
    or
    Google Chrome
    .

Key Libraries & Tools

  • Laravel Horizon Watcher: Automates worker restarts during local development.
  • Laravel Remote: Executes Artisan commands on remote servers via SSH.
  • Laravel Support Bubble: A drop-in Blade component for user feedback forms.
  • Laravel Response Cache: A performance booster that caches full HTML responses.
  • Laravel Query Builder: A tool to filter and sort Eloquent queries via URL parameters.
  • Laravel Login Link: A developer tool for instant authentication in local environments.
  • Laravel Error Solutions: Restores actionable suggestions to the default error page.
  • Laravel Blade Comments: Adds HTML comments to identify which Blade file rendered which section.
  • Laravel PDF: A wrapper for
    Browsershot
    to generate PDFs using
    Google Chrome
    .
  • Laravel Schedule Monitor: A monitoring tool to ensure scheduled tasks complete successfully.

Code Walkthrough: Enhancing the Local Workflow

Automatic Worker Restarts

One of the biggest frustrations in Laravel development is modifying a queued Job and seeing the old code execute because

has the old version in memory. laravel-horizon-watcher solves this by monitoring your file system.

# Run the watcher instead of the standard horizon command
php artisan horizon:watch

When you save a file, the watcher detects the change, kills the current processes, and restarts the worker, ensuring your background tasks always reflect your latest code changes.

Simplifying PDF Generation with Chrome

Historically, generating PDFs in PHP meant struggling with outdated libraries like DomPDF that lacked modern CSS support. laravel-pdf leverages a headless

instance, allowing you to use
Tailwind CSS
and Flexbox within your PDF views.

use Spatie\LaravelPdf\Facades\Pdf;

public function downloadInvoice()
{
    return Pdf::view('pdfs.invoice', ['data' => $invoiceData])
        ->name('invoice-2024.pdf')
        ->download();
}

By treating the PDF like a standard Blade view, you gain full access to the Laravel ecosystem, including components and localization helpers, while ensuring the output looks exactly like it does in a browser.

Syntax Notes: The Query Builder Pattern

The laravel-query-builder package follows a declarative syntax pattern. Instead of manually writing if($request->has('filter')) blocks, you define allowed actions on the Eloquent model. This prevents SQL injection and keeps your controllers clean.

use Spatie\QueryBuilder\QueryBuilder;

$users = QueryBuilder::for(User::class)
    ->allowedFilters(['name', 'email'])
    ->allowedSorts(['created_at'])
    ->allowedIncludes(['posts'])
    ->get();

This syntax allows the frontend to request ?filter[name]=John&include=posts without the backend developer writing a single extra line of logic for that specific request.

Practical Examples: Production Monitoring

In a production environment, knowing that a scheduled task failed is just as important as knowing it started. The laravel-schedule-monitor integrates with the native Laravel scheduler to track the lifecycle of every task.

You can sync your existing schedule with the monitor using a simple command:

php artisan schedule:monitor-sync

Once synced, the package tracks the "Grace Time"—the window in which a task is expected to finish. If a task fails or hangs, it can trigger notifications via Slack or

, preventing silent failures in your background infrastructure.

Tips & Gotchas

  • Performance vs. Stale Data: When using laravel-response-cache, be cautious with authenticated routes. While it speeds up the site, caching a page that contains a user's name might result in another user seeing that cached name. Use the provided middleware carefully and consider excluding specific routes.
  • Environment Safety: Always wrap the laravel-login-link and laravel-error-solutions in an environment check. You do not want "Login as Admin" buttons appearing on your production site or detailed system solutions exposed to the public. Stick to APP_ENV=local for these tools.
  • System Dependencies: Packages like laravel-pdf require
    Node.js
    and
    Google Chrome
    to be installed on the server. If you are using a shared hosting environment, these might not be available; verify your infrastructure before committing to a headless browser approach.
5 min read