NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1224 most downloaded on Packagist
Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel
Last release today
07 Oct 2026
Release timing varies
gaps range from 8 days to 3 months
Some releases are documented
notes for 16 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
192 releases · first in 2018
Larastan 3.13.0 requires PHPStan 2.3.0 or newer within the 2.x series. Update PHPStan alongside Larastan when upgrading. The PHP and Laravel requireme
Larastan 3.13.0 requires PHPStan 2.3.0 or newer within the 2.x series. Update PHPStan alongside Larastan when upgrading. The PHP and Laravel requirements are unchanged.
relation-of<Model, Relationship> and infer concrete relationship types in eager-loading arrays passed to with(), withOnly(), load(), and loadMissing() by @canvural in #2562.concat(), merge(), shift(), and splice(), by @canvural in #2562.with(['posts:id' => $callback]), by @canvural in #2562.toBase(), including passthru return types, by @Wirone in #2575.Full Changelog: v3.12.3...v3.13.0
One column per quarter.
Preserve collection key types in Eloquent queries and paginators, with an optional key type in collection-of , by @canvural in 397c6df . Read more abo
collection-of, by @canvural in 397c6df. Read more about it here.chunk() and each() callback types on BelongsToMany and through relations, including pivot types, by @canvural in 726e7a8forceCreateQuietly() by @midhunmonachan in #2558save() options such as touch instead of model properties by @Cayan in #2561configDirectories by @canvural in f9b491b, fe7154bconfig() by @canvural in f2a79f7$this in where() and global scope methods on Eloquent builders by @SanderMuller in #2567BuilderHelper by @haratake22 in #2553Full Changelog: v3.12.2...v3.12.3
Improve unused view detection for mail content, Mail::send() , concatenated view names, and slash-separated Blade view names by @FeBe95 in #2479
Mail::send(), concatenated view names, and slash-separated Blade view names by @FeBe95 in #2479sum() calls by @canvural in 6f44183NOT NULL as nullable by @canvural in 29c3d08Builder<Model> when a relationship path cannot be followed through an unknown model by @MizouziE in #2549incrementEach() assertions by Laravel version by @canvural in 79091adFull Changelog: v3.12.1...v3.12.2
Preserve custom builder types in relation count queries and BelongsToMany::firstWhere() callbacks by @canvural in 2e561c8
BelongsToMany::firstWhere() callbacks by @canvural in 2e561c8concat() key type expectation by @canvural in 7cf994bFull Changelog: v3.12.0...v3.12.1
Extend view-string coverage to more view-name signatures by @maks-oleksyuk in #2513 . Read more about it here .
view-string coverage to more view-name signatures by @maks-oleksyuk in #2513. Read more about it here.checkUnusedViews by @G4Zz0L1 in #2519. Read more about it here.ResponseInterface mixin to the HTTP client Response stub by @ramonrietdijk in #2428builder-of<Model> custom PHPDoc type by @canvural in #2374. Read more about it here.toArray() and attributesToArray() calls by @canvural in 75ea2fd. Read more about it here.Content constructors by @canvural in 43f9cae. Read more about it here.builder-of by @canvural in 62342c8. Read more about it here.static in the newQuery() method family on non-final models by @yeapea in #2544builder-of by @canvural in a23d0c9setCollection() by @canvural in f336303. Read more about it here.$with and $withCount defaults by @canvural in 99a3b0e. Read more about it here.Add agent contributor guidelines by @canvural in 7eec466, a63e66c, d8987c5, dcfa93b
Fix where callback test compatibility with older PHPStan versions by @canvural in ab26fdf
Full Changelog: v3.11.0...v3.12.0
Important Migration caching is now enabled by default. This should not affect analysis results and should make subsequent runs faster. If you notice u
Important
Migration caching is now enabled by default. This should not affect analysis results and should make subsequent runs faster. If you notice unexpected behavior, you can disable it:
parameters:
enableMigrationCache: falseHasParameters stub by @canvural in ef28a38getCasts and getTouchedRelations return types by @dfinchenko in #2497AbstractPaginator::getCollection() as an Eloquent collection for model values by @szepeviktor in #2528createQuietly() to EloquentBuilder.stub by @Mr-Offline in #2523getAppends and getMutatedAttributes return types by @dfinchenko in #2499View facade by @canvural in 9baa740getCountForPagination passthru at call time by @lazerg in #2535nullableTimestampsTz in the schema aggregator by @lazerg in #2506BuilderHelper::$passthru with Eloquent Builder by @alexkart in #2533ext-json Composer dependency by @maks-oleksyuk in #2514Full Changelog: v3.10.0...v3.11.0
Update codestyle check to latest version by @jnoordsij in #2484
where method on collections by @jnoordsij in #2483Full Changelog: v3.9.6...v3.10.0
Improve blade view parsing for NoMissingTranslationsRule by @FeBe95 in #2476
fix: fix infinite loop when Redis extension is missing
refactor: create new extensions out of old pipeline based approach by @canvural in #2448
ENUM types in squashed migrations by @FeBe95 in #2454Full Changelog: v3.9.3...v3.9.4
feat: allow Laravel 13 by @canvural in #2446
Full Changelog: v3.9.2...v3.9.3
Improve type inference for MySQL ENUM types in squashed migrations by @ngmy in #2434
[3.x] Update PendingRequest stubs by @ramonrietdijk in #2432
Full Changelog: v3.9.0...v3.9.1
feat: Add stubs for Cache facade by @melvinversluijs in #2420
enableMigrationCache option, disabled by default) in 9b35634d and 82c1889 Read more about it hereparseModelCastsMethod option for better cast inference in afd59445 Read more about it here:Full Changelog: v3.8.1...v3.9.0
Run tests on PHP 8.5 by @jnoordsij in #2382
PendingRequest generic 9b7eccdFull Changelog: v3.8.0...v3.8.1
chore: phpunit hasProperty/getProperty deprecations by @calebdw in #2379
Larastan can now detect automatically if you have phpmyadmin/sql-parser package and use that to parse your squashed database migrations. This parser package has better support for different SQL keywords. Note: The package has GPL 2 license. Meaning if you install it and distribute your app with it you also need to have GPL 2 licensed application. But generally this is not a problem because you should install Larastan and the sql-parser package as a development dependency and remove these development dependencies while deploying your application to production.
non-negative-int 52aa393Full Changelog: v3.7.2...v3.8.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →