Satori, the renderer behind next/og, cannot read WOFF2, so one Next.js site commits four Geist .ttf files to set its preview cards in the site's own type. The card takes its logo and palette from source, but its font is a second copy that someone has to keep current.
Reality
- Evidence45
- Adoption
- Insufficient
- Hype gap0
- Incentives20
- Confidence50
Turbopack, Next.js 16's default bundler, swapped a require.resolve call for an integer module ID at build time and broke a PDF tool that passed every test. Type checks, unit tests and direct calls never run the bundled output, so none of them could see the swap.
Reality
- Evidence58
- Adoption
- Insufficient
- Hype gap+10
- Incentives
- Insufficient
- Confidence60
A dev.to write-up traces a failed Hostinger deploy of Next.js 16.3.5 to SWC's native bindings. The fix was an .mjs config file and a --webpack flag on the build script, both committed to the repo, with nothing changed on the host.
Reality
- Evidence72
- Adoption12
- Hype gap0
- Incentives20
- Confidence60
A developer timed every phase of a 60-route Next.js 16 build on both bundlers. The compile came out 19 times faster, the whole build only 4 times, and the largest single saving was a file-tracing step webpack ran for 6.6 seconds.
Reality
- Evidence58
- Adoption45
- Hype gap+12
- Incentives30
- Confidence60
Turbopack decides which chunks to merge by looking only at chunks a page already loads together, which bounds the worst case but leaves the returning visitor re-downloading shared code the merged file no longer fits.
Publishers:nextjs.org
Reality
- Evidence60
- Adoption35
- Hype gap−10
- Incentives70
- Confidence56
The Rust rewrite keeps pnpm 11's commands and lockfile, so adopting it costs little more than pulling from the next-12 tag, but the headline percentage describes a 1.5-second install and the cold case improved by about two thirds.
Reality
- Evidence58
- Adoption30
- Hype gap+28
- Incentives62
- Confidence55
A three-project diff published on dev.to shows Next.js 16's SWC sorting browserslist into two buckets, so chrome 116 and chrome 139 compile identically, while the ie 11 build downlevels syntax and still calls Object.hasOwn.
Reality
- Evidence72
- Adoption
- Insufficient
- Hype gap+14
- Incentives22
- Confidence58
Async params, a flipped caching default, Turbopack builds and the proxy.ts rename all land in one release. The guide's first real move is running the type checker by hand, because many projects told the build to skip it.
Reality
- Evidence48
- Adoption20
- Hype gap+12
- Incentives60
- Confidence45
A dev.to guide pairs route-level caching with a Suspense shell to let Partial Prerendering ship a static shell first. The mechanism is documented; the number behind it is one route.
Reality
- Evidence34
- Adoption
- Insufficient
- Hype gap+46
- Incentives41
- Confidence37
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.
Reality
- Evidence58
- Adoption20
- Hype gap+22
- Incentives62
- Confidence52
A practitioner's field report puts numbers on the wins from server components, Partial Prerendering and Turbopack, then puts numbers on the caching bugs and upgrade bills.
Reality
- Evidence38
- Adoption33
- Hype gap+8
- Incentives52
- Confidence44
Dropping tailwind.config.js for a CSS @theme block buys you tokens that any tool can read. It also means renaming every token in a shared design system to fit Tailwind's namespaces.
Reality
- Evidence52
- Adoption
- Insufficient
- Hype gap+26
- Incentives58
- Confidence44