Pixel art VS screen: a robot developer fighter faces off against a hooded framework fighter, with a defeated Nuxt fighter slumped in the corner
P1
DEVELOPER
VS
P2
FRAMEWORK

FIGHT THE
FRAMEWORK

When your AI can see the code and the error, but not the invisible framework magic in between.

11 March 2026

ROUND 1
THE SIGNAL PROBLEM

I keep coming back to this. Full-stack frameworks like Next.js, Nuxt, and SvelteKit blur the line between client and server. That is literally the selling point. You write your code and the framework figures out where it runs. Server components, server actions, middleware, edge functions. You do not have to think about it.

And for humans, that is brilliant. You learn the framework, you internalise the conventions, and you stop thinking about the plumbing. It just works.

But AI does not internalise conventions. It does not "learn" a framework the way you do. It sees patterns in training data and tries to match them. And when half of how a framework works is implicit, baked into file naming conventions and directory structures and config that is never written down in your codebase, the AI is essentially guessing.

Compare that to a separated architecture. A React frontend calls an API. The API has endpoints. Each endpoint has a request shape and a response shape. It is all explicit. All signal. The AI can look at the fetch call, look at the handler, and understand the entire flow.

SPECIAL MOVE

A Vite React app calling a Hono API is almost boring in its simplicity. But every layer is legible. Every layer is inspectable. That is exactly what AI needs.

With a framework, the signal-to-noise ratio is terrible. The conventions that save you time are noise to the AI. The magic that makes development fast is the same magic that makes debugging with AI slow.

ROUND 2
THE BLACK HOLE

Here is the thing that actually matters. When something goes wrong in a framework, the execution path disappears into the framework internals. The AI can see your code. It can see the error message. But the bit in between? That is a black hole.

With an explicit stack, you can trace the full path. Request hits the router, goes through middleware, calls the handler, hits the database, comes back. Every step is your code. When something breaks, the AI can reason about it linearly. A to B to C to D. Simple.

With Next.js or Nuxt, half that path is invisible. And the bits that are visible are often just config files and conventions rather than actual logic. The AI is staring at both ends of a tunnel but cannot see what is happening inside it.

SPECIAL MOVE

The abstraction that saves you time is the black hole that eats the AI's understanding.

This is the irony. Frameworks exist to reduce complexity for humans by hiding things. That is the value proposition. But that hidden complexity is exactly what trips AI up. The implicit nature of frameworks is good for humans. For AI, it is a black hole. And when things go wrong, it is difficult to follow the entire path of execution.

ROUND 3
THE SPIRAL

This is where it gets properly ugly. When the AI does not understand why something is not working, it does what any reasonable agent would do. It starts trying things. A workaround here. A config tweak there. A patch on top of a patch.

And each one digs the hole a little deeper.

3-HIT COMBO
HIT 1 AI hits an edge case it cannot trace through the framework internals
HIT 2 Adds a workaround. The workaround breaks something else.
HIT 3 Patches the patch. Then patches the patch's patch. Code is now a mess.

That is the "fight the framework" spiral. The AI is not stupid. It is just fighting something it cannot see. It assumes the problem is somewhere in the black hole, so it starts trying to work around the black hole rather than through it. And because these frameworks are so widely written about, the AI is confident in its guesses even when they are wrong.

This is also why vibe coding falls apart faster with full-stack frameworks. The happy path works fine. You tell the AI to build a page, it builds a page. But the moment you hit an edge case or something behaves unexpectedly, the lack of explicit execution paths becomes a real problem and the AI starts thrashing.

You end up with code that is increasingly weird and fragile. And at that point even a human developer would struggle to unpick it.

FINAL ROUND
THE BORING
STACK WINS

None of this means frameworks are bad. They are excellent at what they were designed for. Next.js is a brilliant piece of engineering. So is Nuxt. So is SvelteKit. For a team of humans who know the framework, they are fantastic.

But the tools are changing. And the tools work better with explicit, separated, boring architectures.

A Vite React frontend and a Hono or Express backend. Two separate things. Clear boundaries. Explicit contracts. No magic. The AI can read every layer. It can trace every request from the button click to the database and back. Nothing is hidden.

SPECIAL MOVE

It is not a hot take. It is not a prediction about the death of frameworks. It is just practical. If you are building with AI tools every day, you will hit less friction with a boring stack.

Maybe the frameworks will catch up. Maybe the AI tools will get better at understanding conventions and implicit execution paths. But right now, in March 2026, the boring stack wins.

And there is something worth noting about that. AI-assisted development might actually push us back towards older, more explicit architectural patterns that we had started to move away from. The full-stack framework was the answer to a problem. But AI might be changing the question.

K.O.
DEVELOPER WINS

This is not a manifesto. It is not a prediction about the death of frameworks. It is just an observation from someone who builds with AI tools every day. Fight the framework, or pick a stack where there is nothing to fight.