Next.js's bundled http-proxy 1.18.1 stamps Content-Length: 0 on chunked DELETE and OPTIONS rewrites, so a hidden second request reaches the backend. Whether it reaches anything sensitive depends on how the next hop frames requests and which internal routes the backend opens to its proxy.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+15
- Incentives
- Insufficient
- Confidence56
Satori's SVG escaping flaw exposes Next.js 16.2.0 and every release before 16.3.6 to remote code execution when apps pass attacker input to next/og on Node. The step where app data becomes SVG markup needs the escaping discipline teams already give HTML and SQL.
Reality
- Evidence45
- Adoption
- Insufficient
- Hype gap+15
- Incentives
- Insufficient
- Confidence50
Drizzle-kit generated a DROP TABLE ... CASCADE for a table still in production when a developer asked it for two new tables. The developer traces it to schema.ts, drizzle-kit's snapshot and the live database each describing a different schema.
Reality
- Evidence55
- Adoption
- Insufficient
- Hype gap−5
- Incentives
- Insufficient
- Confidence60
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
Chrome moves to a two-week release cycle on desktop, Android and iOS from version 153, according to a dev.to round-up of DevTools 151 to 153. Web teams get smaller milestones more often, each one another browser version to test against.
Reality
- Evidence40
- Adoption
- Insufficient
- Hype gap+15
- Incentives20
- Confidence40
OAI-SearchBot and GPTBot began rendering JavaScript on September 25, 2026, according to IP-verified logs from a Japanese Next.js marketplace. OpenAI has not announced it, so the case rests on prefetch URLs that only a JavaScript run can produce.
Reality
- Evidence45
- Adoption
- Insufficient
- Hype gap+15
- Incentives30
- Confidence40
V8's 'is not valid JSON' error quotes the whole response body when it is 20 characters or fewer, according to a developer's tests on Node 24.13. A quote without a trailing ellipsis is the entire reply, so a short error body can be diagnosed from the logged message alone.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+5
- Incentives20
- Confidence58
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
Next.js 15 switched GET Route Handlers from static to dynamic, so handlers written for 14 now run on every request. Version 16 keeps that default and adds a caching mode in which a common 14-era config line becomes an error.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap0
- Incentives
- Insufficient
- Confidence64
OpenAI's Node SDK gives each attempt 10 minutes by default, so on Vercel a hung model call is killed at 300 seconds before its catch block can log anything. The call's own limits have to be shorter than every clock in front of it, or the platform ends the request and nothing gets recorded.
Reality
- Evidence50
- Adoption
- Insufficient
- Hype gap+10
- Incentives
- Insufficient
- Confidence45
CVE-2026-94545 lets attacker-supplied text in an Open Graph image reach Next.js dependencies. Vercel shipped the fix on September 22 in 16.3.6; a day later, npm audit still passed affected builds.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+20
- Incentives35
- Confidence60
Sparkpix.ai cut its GPT Image 2 humanizer prompt from 2,300 characters to one sentence asking for a photo that looks shot on an iPhone 12 camera. The builder compared the two by eye, and the scoped version now live has not been through that comparison.
Reality
- Evidence35
- Adoption10
- Hype gap+30
- Incentives70
- Confidence55
Munchable's 10-pound Premium plan takes every displayed and charged price, in 24 currencies, from one package with zero runtime dependencies. With the rounding kept in that package, the web site and the Expo paywall print the amount Checkout charges.
Reality
- Evidence55
- Adoption12
- Hype gap+5
- Incentives30
- Confidence55
Cloudflare's one-hour HTML cache rule stored the 404 from Escrozon's pre-launch check and kept serving it after the deploy returned 200. Without Tiered Cache each data center keeps its own copy, so one region can see the page while another still gets the error.
Reality
- Evidence58
- Adoption
- Insufficient
- Hype gap0
- Incentives20
- Confidence62
Next.js 16's stable instrumentation.ts runs telemetry setup once per runtime before app code loads, a dev.to walkthrough says. Because an async register holds the server until it resolves, a three-second SDK connect becomes three seconds of cold start.
Reality
- Evidence35
- Adoption
- Insufficient
- Hype gap+20
- Incentives
- Insufficient
- Confidence40
The affected releases stretch back to Next.js 13.4, and for Windows self-hosters the only remedy Vercel offers is the version bump. The AVIF bug shipped in the same release at least has a config gate.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+15
- Incentives35
- Confidence58
OopsSec Store, a deliberately vulnerable Next.js app, lets an admin-uploaded SVG run JavaScript in every visitor's browser. It works because the server trusts the client-set Content-Type and the product page renders SVGs through an <object> tag.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+8
- Incentives40
- Confidence72
CogniPrep gates its trend arrow on a slope threshold of half a point per session plus a confidence score weighted toward sample size. Both constants are product decisions, and the published formula finishes earlier than its own comment says.
Reality
- Evidence68
- Adoption12
- Hype gap+10
- Incentives50
- Confidence58
The App Router's built-in announcer writes the new page name into an aria-live region on every client-side navigation. Focus stays where the unmounted link was, so the next Tab press starts again at the site header.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap+8
- Incentives22
- Confidence58
Next.js treats any component that touches a request-time API as dynamic, so one call in a root layout removes the prerendered shell for every page beneath it. A dev.to post's repair is a Suspense-wrapped leaf that reads the cookie.
Reality
- Evidence42
- Adoption
- Insufficient
- Hype gap+32
- Incentives28
- Confidence48
Earlier coverage
- The cancellation went into cancel_at while the dashboard read cancel_at_period_end
Build · September 23, 2026 · 1 publisher
- Next.js 16 renames middleware.ts to proxy.ts, which always runs on the Node.js runtime
Build · September 22, 2026 · 1 publisher
- The cheapest gate runs first so a flood stops before the Supabase auth call
Build · September 22, 2026 · 1 publisher
- Five PHP-FPM workers capped an entire ride-hailing API at roughly 80 requests a second
Build · September 21, 2026 · 1 publisher
- A five-minute function ceiling pushes long agent loops off Vercel's Hobby tier
Build · September 21, 2026 · 1 publisher
- A bracket inside a folder name turned 1,200 Next.js pages into one encoded route
Build · September 21, 2026 · 1 publisher
- A deploy that deletes old chunks leaves every open tab one click from a 404
Build · September 20, 2026 · 1 publisher
- Next.js keeps a navigated static route in the browser for five minutes
Build · September 20, 2026 · 1 publisher
- Invalidating a cache tag on one Next.js instance leaves the other one serving sold-out stock
Build · September 19, 2026 · 1 publisher
- A log dashboard on default credentials hands over every plaintext password
Build · September 19, 2026 · 1 publisher
- An audit of 23 AI-generated wiki sites found invented redeem codes on 18 of them
Build · September 18, 2026 · 1 publisher
- Exiting zero on a failed FX fetch keeps yesterday's rates in the build
Build · September 18, 2026 · 1 publisher
- Pooling per-job status polls into one Server Action cuts the client queue depth to one
Build · September 17, 2026 · 1 publisher
- Upwork Scout signs its 15-minute login link and year-long unsubscribe token with one secret
Build · September 17, 2026 · 1 publisher
- Arcjet puts a policy check in front of every action an AI agent takes
Product · September 17, 2026 · 1 publisher
- Don Watch replays the 2019 Sheffield flood from gauge records inside one browser tab
Build · September 17, 2026 · 1 publisher
- An HMAC-signed cookie and a license key carry all of Keyword Brief's billing state
Build · September 17, 2026 · 1 publisher
- The globs line decides whether a Cursor rule ever reaches your route handler
Build · September 16, 2026 · 1 publisher
- Markup filled 263,968 of a scraped product page's 267,361 tokens
Build · September 16, 2026 · 1 publisher
- A 3,442-byte skill copy in a gitignored .gemini directory became a second source of truth
Build · September 16, 2026 · 1 publisher
- Moving tenant isolation into Postgres policies buys zero rows instead of a cross-tenant leak
Build · September 16, 2026 · 1 publisher
- React Compiler 1.0 skips any component that breaks the Rules of React
Build · September 15, 2026 · 1 publisher
- Three hand-written route lists put /about in the sitemap and behind a login gate
Build · September 15, 2026 · 1 publisher
- A singleton cron must list its tenants before a tenant filter has anything to bind to
Build · September 15, 2026 · 1 publisher
- A CDN country header served Googlebot $14.99 on a page declaring GBP in its structured data
Build · September 14, 2026 · 1 publisher
- Verifying Search Console at the bare domain summed four hosts into one 17% error rate
Build · September 14, 2026 · 1 publisher
- Your Next.js hosting bill is a transform count, not a price list
Build · August 20, 2026 · 1 publisher
- A try/catch around a Next.js server action swallows the redirect it was meant to protect
Build · September 11, 2026 · 1 publisher
- A dev-server alias kept a cron handler out of the deployed Cloudflare Worker
Build · September 11, 2026 · 1 publisher
- Seven hundred client fingerprints cover React2Shell's 8,163 source addresses
Build · September 11, 2026 · 1 publisher
- Dropping a 6.6-second trace phase saved more build time than Turbopack's faster compile
Build · September 11, 2026 · 1 publisher
- Algolia counts staging and locale indices against the same 10,000-record ceiling
Build · September 11, 2026 · 1 publisher
- A remote MCP server spends five of its six routes on getting the client signed in
Build · September 10, 2026 · 1 publisher
- Any path containing a dot skips LibreDB Studio's Next.js middleware
Build · September 8, 2026 · 1 publisher
- Redefining done as 'prove the money path' made the agent provision its own infrastructure
Build · September 8, 2026 · 1 publisher
- Keying the upsert on Stripe's id lets five code paths write one subscription row
Build · September 6, 2026 · 1 publisher
- A 1.00 pages-per-visitor ratio caught the bots a user-agent block let through
Build · September 6, 2026 · 1 publisher
- Next.js middleware's Edge Runtime default breaks Mongoose auth checks three different ways
Build · September 6, 2026 · 1 publisher
- A cursor declaration in the route file gates the Pinia Colada adapter at compile time
Build · September 5, 2026 · 1 publisher
- Turbopack's chunk merging pays off on the visitor who leaves after one page
Build · September 4, 2026 · 1 publisher