Laravel Mercure Broadcasting: SSE vs WebSockets, and the Reverb I Retired
Laravel 13.32 adds a Mercure broadcast driver over SSE. I swapped Reverb for it on a one-way dashboard: what changed, and the Caddyfile bug that…
Laravel 13.32 adds a Mercure broadcast driver over SSE. I swapped Reverb for it on a one-way dashboard: what changed, and the Caddyfile bug that…
Symfony 8.2 turns colon-named console commands into a tree you can type with spaces. What CommandChain gives you, the deploy rollback trap, and where Laravel…
PostgreSQL never indexes foreign keys and Laravel's constrained() won't either. Vacuum 1.2 lints the schema in CI, with a baseline for legacy apps. What I…
I adopted Laravel Pint on a 640-file legacy app and wrecked git blame. Here's the one-commit fix, .git-blame-ignore-revs, and the CI check I run instead…
PHP 8.6 adds partial function application and readonly property defaults. Before/after code, the pipe operator payoff, and the deprecations that will bite.
Fuzz testing explained through a real bug: coverage-guided fuzzing in Pest 5 found a DivisionByZeroError my hand-written dataset missed. Setup and where it fits.
Symfony's new lsp:check command catches mistyped routes, missing templates and bad config in CI. How it works, how to adopt it, and what I do…
Laravel 13.30 adds chunkBy() for adjacent grouping and finally stops Storage::path() escaping the disk root. What changed, what breaks, and what to grep for.
An AI agent audited my Laravel app and got it wrong. Laravel Auditor's 75 evidence-first rules and read-only collectors fix the guessing problem. Here's how.
Laravel's starter kits just swapped ESLint and Prettier for Vite+ and a single vp check. What got deleted, what it costs, and how to migrate…