Laravel 12 came out on Monday. Tuesday evening I upgraded one mid-size project. The whole diff is composer constraints and the lock file. Tests green, deployed before midnight.

People in chats are disappointed. Where are the big features. A major that mostly refreshes dependencies and starter kits, is it even a major.

I remember 4.2 to 5.0. New folder structure, new config system, half of the packages dead on arrival. We planned it as a separate project, because it was one. Skip a major, and the next one cost double.

So no, I am not disappointed. A framework major that feels like routine maintenance means the ecosystem grew up. The public API is stable enough that a version bump does not have to break you.

Two notes.

A boring upgrade is not only the framework’s merit. It is a diagnosis of your codebase. If the release notes are short and your upgrade still hurts, the pain is yours: you depend on internals, you pinned a fork, you ignored deprecation warnings for two years.

And boring does not mean blind. The checklist did not change. Read the actual dependency diff, not the marketing post. Run the tests that cover money and auth; the fast unit ones prove nothing here. Audit the packages. This round the audit found one abandoned dependency that blocks nothing today and everything next year. That package was the real work of the upgrade, and Laravel had nothing to do with it.

I waited ten years for this kind of disappointment.