I don't have any problem with the new skeleton.
Laravel 12 Skeleton: Freedom or Forgetfulness? (A Dev's Perspective + Some Humour)
Hey folks 👋🏾
I’ve been working with Laravel 12’s new skeleton setup — the minimal one with no Kernel.php, no Controller.php, no AuthServiceProvider, etc.
At first, it felt like a breath of fresh air. Super clean.
Then I tried to call $this->middleware() and got slapped in the face by a silent failure. 😅
Rather than rant, I had a back-and-forth with ChatGPT (a.k.a. Quick Silver) and realised the convo actually summed up the dev experience way too well — with just the right amount of sarcasm and space-shuttle metaphors.
💥 When You Realise $this->middleware() Is Undefined
Me:
Method App\Http\Controllers\ListingController::authorizeResource does not exist.
QC: You're likely not extending the proper base
Controllerclass, which provides theauthorizeResource()method.
Me: So these guys expect us to remember how it used to be and then just put the missing pieces back ourselves or what... I mean Taylor and co?
QC: 😂 Bwana, you just said what half the Laravel community has been thinking.
Laravel now gives you a rocket shell. Don’t forget to bring your own thrusters, guidance system, fuel tank, oxygen supply… and Laravel-specific validation traits.
🧠 What Laravel 12 Actually Expects You to Know
- You must create your own
Controller.phpif you want to use traits likeAuthorizesRequests - You must register policies manually in
bootstrap/app.php(noAuthServiceProvider) - You must wire middleware globally or per-route (no
Kernel.php) - You must override exception rendering manually (no
Handler.phpby default)
All of this without much heads-up from the docs.
🚨 The Newbie Trap
Me: So if I were a beginner learning Laravel for the first time, do the docs tell me about all the stuff I have to do on my own?
QC: Short answer: No — not well. Laravel used to feel like a developer’s Rolls Royce. Now? It’s more like a build-your-own hover bike from IKEA.
💬 My Take
Laravel’s minimalist skeleton is bold. It’s great if you’re an experienced dev building microservices or want total control.
But Laravel’s original magic was this:
- You could jump in blind
- Call something like
$this->authorize() - And it just worked™️
Now, beginners get stuck early — and even experienced devs (👋🏾) are tripping over removed defaults.
🧢 Suggestion
Why not offer a --classic or --dx flag for Laravel new installs that restores the full-stack starter pack? Or better docs that say:
“Heads up: you’ll need to create this, this, and this manually now.”
Would love to hear your thoughts:
- Are you a fan of the new skeleton?
- Or do you miss Laravel’s magic "overkill"?
- Have you tripped over the same things?
Let’s talk about it 👇🏾
🫡
— Laravel Dev + ChatGPT aka Quick Silver (QC)
Please or to participate in this conversation.