🩸 Next.js is leaking memory and it isn't your code

Three leaks open in the framework, 86% of frontend repos leaking, and the soak test that catches both

In partnership with

Hey there. Welcome to Full Stack Focus. 👋

Two independent write-ups landed eleven days apart this fortnight, one about the server and one about the browser, and together they say the same uncomfortable thing: your app is probably leaking memory, and in at least three cases it isn’t your code doing it. Plus a React that compiles the virtual DOM away, and what an agent-written 17,000-line file costs you every single time you touch it.

Write docs 4x faster. Without hating every second.

Nobody became a developer to write documentation. But the docs still need to get written — PRDs, README updates, architecture decisions, onboarding guides.

Wispr Flow lets you talk through it instead. Speak naturally about what the code does, how it works, and why you built it that way. Flow formats everything into clean, professional text you can paste into Notion, Confluence, or GitHub.

Used by engineering teams at OpenAI, Vercel, and Clay. 89% of messages sent with zero edits. Works system-wide on Mac, Windows, and iPhone.

Front-End

🩸 Three Memory Leaks Are Open in Next.js Right Now
Before you audit your own code: the router LRU cache doesn’t count its own keys, the RSC tree stays pinned when a client disconnects mid-stream, and middleware timeout ids are never released. Each has a different growth shape — and the shape is how you tell which one you’ve got.

🛁 Your SPA Is Leaking Too. Soak Test It
A scan of 500 React, Vue and Angular repos found 86% register a listener, timer or subscription and never remove it. The fix here is a Playwright loop with a faked clock that folds an hour of polling into two minutes, asserting on node counts rather than heap.

Octane: React’s Programming Model, Compiled
No virtual DOM, no rules of hooks, no dependency arrays — the compiler works out what your effects capture. Billed as the successor to Inferno, and its benchmark grid puts React 19 at 2.9× slower on geomean. Whether or not you’d ship it, the argument earns an afternoon.

🧩 How Far the Server Component Model Actually Stretches
A load more button that does no fetching of its own, a search input that lives in the static shell and keeps its cursor while results stream underneath, and a composer whose draft preview is rendered by a Server Function handing back JSX.

Tools

🔄 Any Stroke Icon Morphs Into Any Other, No Pairs Declared
The library is clever — 7 KB, and the rotations fall out of the maths instead of being hand-declared per pair. But read the comments, not just the demo: the author says plainly that AI wrote most of it, takes the heat for it, then ships a real fix to the arrow-rotation bug straight off the back of the feedback.

📊 TanStack Charts
Marks, channels and D3 scales composed into typed SVG — closer to Observable Plot than to a preset library. 18.5–19.2 kB gzip for a complete chart.

🤖 A React Hook for Exposing Your App to Browser Agents
Chrome-maintained. Registers a WebMCP tool on mount and unregisters on unmount, so what an agent can see stays in lockstep with what’s actually on screen. Feature-detects and no-ops everywhere the API doesn’t exist yet.

AI for Devs

📉 2x, Not 10x
The staircase argument: models got tall enough to climb one step, and being able to take three at once matters far less than you’d think. The line that’ll stay with you — a working implementation used to mean the task was 80% done, and now it means 20%.

💸 Refactoring a 17,155-Line File Cut Token Costs by 83%
An agent-written Rust codebase, one absurd data access file, and a clean experiment: run the same change after every refactoring step and measure. Input tokens went 159,564 to 27,360. The catch is buried in the notes — Claude was bad at both choosing and applying the refactorings.

👁️ Your Taste Is Ahead of Your Hands
The gap between what you can see and what you can build used to be filled with labour. Now it’s filled with decisions, and a team can spend a month in a state of extremely productive-looking indecision.

More Tools & Stories

Have a great week, see you next time!

Full Stack Focus team :)