Livewire 3 Upgrade Blocker Lint

Finds Livewire 2 APIs that silently die in Livewire 3 — emit(), wire:model.defer, dispatchBrowserEvent, livewire:load, missing :key — in your .php and .blade.php files. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Get one email when this rule changes
We watch the regulation and vendor sources behind Livewire 3 Upgrade Blocker Lint every day. When a rule changes, you get a single email with what changed and the updated check. No newsletter.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

Open VSX (Cursor, VSCodium)npmDocker Hub
npx @readystack/livewire3-upgrade-blocker-lint <file>
docker run --rm -v "$PWD:/w" getreadystack/livewire3-upgrade-blocker-lint /w

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the complete version $29

This page is the working piece. The full pack has everything below.

The Livewire 2 lines that die quietly in Livewire 3 — named, with the v3 replacement beside each

A freelance Laravel developer at $85/hour spends the opening hours of an upgrade making this inventory by hand

Buy the full version — $29

Questions people ask

What does Livewire 3 Upgrade Blocker Lint actually do?

It reads your .php and .blade.php files and flags the Livewire 2 lines that stop working under Livewire 3, printing the v3 replacement next to each one. Fifteen rules cover events, Blade modifiers and the component surface. On the 43-line Livewire 2 component shipped with it, the engine reports 14 blockers: 10 errors and 4 warnings.

Who is this for?

Laravel developers who own an app still running Livewire 2 and are doing, planning or reviewing the move to Livewire 3 — including anyone reviewing Livewire code an assistant generated, which is often written against the Livewire 2 API. Agencies inheriting a client Laravel app use it as the first pass before quoting the upgrade.

Why is grep or the upgrade guide not enough?

Grep finds emit( and wire:model.defer. It cannot find a <livewire:row> inside @foreach that is missing :key, because that defect is a missing attribute inside a block and needs loop depth. It also cannot separate wire:model.debounce, which is dead in v3, from wire:model.live.debounce, which is correct, since one string contains the other.

What is free and what needs a licence key?

Free and unlimited: scan the file you have open and get every blocker with its Livewire 3 replacement, line by line. That finishes that file, with no watermark and no run cap. The licence key adds a different job: scanning every .php and .blade.php in the workspace at once and exporting a REPORT.md or JSON with file:line, plus a CI exit code.

What would this cost me otherwise?

A freelance Laravel developer at $85 an hour spends the first hours of any Livewire upgrade making exactly this inventory by hand, component by component. The extension is $29 once, with one licence key per person or team seat and a seven-day full refund. The free tier covers a single file without paying anything.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

ENDEJAESPT

Find a tool