Skip to content

Build1 publisher3 min readPublished

Next.js 16.3's memory claim didn't reproduce; its TypeScript handoff cut a build by two thirds

One production app, taken from 16.2.3 to 16.3.1 with readings recorded on both sides, is the first published independent test of Vercel's "90% less RAM" figure. The useful win came from elsewhere.

The Engineer · Build desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened

  • Next.js 16.3 shipped on August 3, 2026, and its headline number is memory: Vercel says long development sessions now use up to 90% less RAM.
  • The 16.3 release notes also list repeat builds that read unchanged artifacts straight from cache, type checking that can hand off to TypeScript 7, a server handling roughly 22% more requests under load, and a new set of navigation primitives called Instant Navigations.
  • The "up to 90%" figure was measured on Vercel's own workloads, and two weeks after release nobody had published independent numbers from a real app.
  • The author upgraded a single production app from Next.js 16.2.3 to 16.3.1, recording every build time and memory reading before and after, same machine and same procedure on both sides, three runs each.
  • The author's summary finding: the memory claim did not survive contact with this app, while the TypeScript claim did and cut two thirds off the build; the headline number and the useful number were not the same number.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

Next.js 16.3 shipped on August 3, 2026 with a headline number about memory: long development sessions, Vercel says, now use up to 90% less RAM [1]. A developer writing on dev.to has now published what appears to be the first before-and-after measurement of that claim on a real application, and reports that the memory claim did not survive contact with the app while the unheadlined TypeScript 7 type-check handoff cut two thirds off the build [5].

Why this matters is the gap between the two. "Up to 90%" was measured on Vercel's workloads, and two weeks after release nobody had published independent numbers from a real app [3]. The release notes carried more than the memory line: repeat builds that read unchanged artifacts straight from cache, type checking that can hand off to TypeScript 7, a server handling roughly 22% more requests under load, and a set of navigation primitives called Instant Navigations [2].

The test subject is a production app that builds 142 static pages on the App Router with Turbopack, chosen over a scaffold because a scaffold has almost no dependency graph and the dependency graph is what consumes memory [6]. Baseline is 16.2.3 with React 19.2.4, target is 16.3.1, and only the framework version changes between runs, on Windows 11 Pro with Node v24.13.1, npm 11.8.0 and TypeScript 5.9.3 [7]. Three runs each side, same machine, same procedure [4].

The methodology is where this becomes usable rather than anecdotal. Windows does not expose RSS, so the author uses PeakWorkingSet64 summed across the three Node processes the dev server spans, on the grounds that a single-process reading discards most of the footprint [9]. Sampling is every 10 seconds from a PowerShell script that confirms the port is free and no stray Node processes are alive first [10]. Builds run twice with .next deleted beforehand, cold then immediately warm, because the distance between the two is itself one of the release's claims [8].

The baseline numbers are the sharpest thing in the writeup. An idle dev server is close to a flat line: roughly 351 MB on a 30-second smoke run, 355.7 MB after ten minutes of sitting still, growth of about 1.3% [14]. The same server with five single-line edits to a mounted client component over the same ten minutes reached 564.8 MB, 209 MB of growth, a 59% increase [15]. That is about 41.8 MB per edit [17], and an active session growing roughly 45 times faster than an idle one [18]. The author's point is that five edits is nothing and a real morning is a few hundred [19], which is also why an idle-only reading would have been the wrong measurement dressed up as the right one [11].

One caveat on the build win: TypeScript 7 was tested on a throwaway branch, with and without experimental.useTypeScriptCli, then removed, and the shipped tree stayed on 5.9.3 [12]. So the two-thirds cut sits behind an experimental flag and a compiler the project did not adopt.

Watch for whether the two-thirds type-check figure holds on codebases with different type surface areas, and for a second independent memory run on Linux where RSS is available [9]. The raw data, scripts and upgrade log are published, which makes both checkable [16].

Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories