Articles › Tooling
TAG ARCHIVE

Everything on Tooling.

23 articles tagged Tooling, sorted newest first.

php

Stop Fighting pecl: Installing PHP Extensions with PIE

pecl is deprecated and PIE is the official replacement. Here is how to install, pin and verify PHP extensions, and how PIE slots into a multi-stage Laravel Dockerfile.

9 min read →
laravel

Extract a Package from Your Laravel App: The Complete Guide

Every team has an app/Support folder that's been copy-pasted into four projects. Here's how to extract it into a real Composer package without breaking the app it came from.

19 min read →
tooling

Renovate for Laravel: Automated Composer and npm Updates That Do Not Drown You in PRs

Renovate's default config opens a PR per package and buries the repository within a day. The value is entirely in packageRules — here is the Laravel configuration that turns forty PRs a week into one.

15 min read →
rector

Write a Custom Rector Rule to Refactor Your Own Laravel Conventions

Rector gets used for framework upgrades and almost never for the thing it is best at — mechanically applying a decision your own team made. Here's the AST-first workflow, and the two mistakes that make a new rule silently do nothing.

12 min read →
composer

Find the Composer Packages Your Laravel App Doesn't Actually Use

Every long-lived Laravel app carries packages nobody uses and packages nobody declared. Here is how to find both, survive the false-positive wall, and gate the check in CI.

10 min read →
tooling

Profile a Slow Laravel Endpoint: SPX, Blackfire and Reading a Flame Graph Properly

Everyone can generate a flame graph. Almost nobody can read one. Here is the loop from a four-second endpoint to a merged fix, and why Kernel::handle is never the answer.

15 min read →
phpstan

Write a Custom PHPStan Rule to Enforce Your Laravel Conventions

Some conventions live only in reviewers' heads, so they rot. A PHPStan custom rule moves one of them into CI permanently — here is the whole build, including the test.

11 min read →
laravel

PCOV vs Xdebug for Laravel Code Coverage

Coverage needs a driver, and the one you pick decides whether your suite runs in seconds or minutes. Here is how PCOV and Xdebug actually differ, and how to wire each one up locally and in CI.

9 min read →
pint

Share One Laravel Pint Config Across Every Project

Every repo ends up with a slightly different pint.json, and formatting drifts until code review is nothing but style nits. Here is how I ship one canonical Pint config as a Composer package and point every project at it.

9 min read →
laravel

Set Up a Fast Local Laravel Environment with Herd

Get a native Laravel dev environment running on macOS with Herd — no Docker, no Homebrew PHP. Install, serve on .test, pin PHP, and add HTTPS.

7 min read →
debugging

Debug Livewire and Eloquent Faster with Spatie Ray

Stop halting requests with dd() and scribbling over pages with dump(). Spatie Ray sends Laravel debug output to a desktop app so you can watch queries, events and Livewire state live.

7 min read →
duster

Duster: Run Pint, PHPStan, and Rector with One Command

A mature Laravel app ends up with four code-quality tools, four configs, and four CI steps. Here's how Duster collapses them into one command — and when that's actually worth it.

7 min read →
peck

Catch Spelling Mistakes in Your Laravel Codebase with Peck

Typos harden into method names, routes, and API fields you can't rename without a breaking change. Here's how I wire Peck into a Laravel project to catch them before they ship.

7 min read →
laravel

Tail Laravel Logs in Real Time with Pail (Filters, Levels, and Users)

Stop scrolling storage/logs/laravel.log. Pail gives you a filtered, driver-agnostic live log stream right in your terminal.

6 min read →
pest

PestStan — Type-Safe Pest 4 Tests With PHPStan Generics in a Laravel App

PestStan teaches PHPStan about Pest's globals — generic expect() types, proper $this binding, and rules that catch broken assertions before the test even runs.

9 min read →
pest

Pest 4 Snapshot Testing for Laravel API Responses: Catch Accidental Schema Drift

Pest 4 has snapshot testing built in. One expectation locks down the shape of your JSON responses so renamed keys and disappearing fields stop slipping into production unnoticed.

8 min read →
pest

Pest 4 Browser Testing with Playwright: A Dusk Replacement That Actually Sticks

Pest 4 ships a first-party browser plugin powered by Playwright. Auto-waits, parallel runs, and time-balanced shards turn a 12-minute Dusk suite into a 90-second CI job.

9 min read →
rector

Rector PHP: Automate Laravel Upgrade Refactors

Stop hand-editing hundreds of files when bumping PHP or Laravel versions. Here's how to wire Rector into a Laravel project, run it safely, and write a custom rule for the patterns specific to your codebase.

8 min read →
laravel

Laravel Pennant Feature Flags in Practice

Laravel Pennant gives you first-party feature flags without an external service. Here's how to use it for gradual rollouts, middleware gates, and reliable testing.

7 min read →
laravel

Laravel Telescope vs Debugbar vs Pulse: Which Monitoring Tool When

Laravel ships three monitoring tools and most teams install all three without knowing which does what. Here's when to reach for each one.

7 min read →
laravel

PHPStan Level 10 in Laravel: Fix the 5 Most Common Errors

Bumped Larastan to level 10 and got 300 new errors? Here are the five patterns you'll see again and again: and the exact fix for each.

6 min read →
laravel

The Complete Laravel Developer Toolchain for 2026

Stop spending days configuring tools. Here is every tool in my Laravel stack for 2026, why I chose each one, and exactly how to set it up.

18 min read →
laravel

Running Laravel Pint Automatically with Git Pre-Commit Hooks

CI failing because someone forgot to run Pint again. Here's how to wire up a Git pre-commit hook so it never slips through.

4 min read →