Build1 distinct publisher3 min readUpdated
A default flip to AVIF plus the retirement of `domains` turns a routine Next.js upgrade into a production image incident. The fix is boring config, applied before the deploy.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A post on dev.to argues that most Next.js image performance trouble in 2026 comes from one routine act: upgrading to `next/image` v4 without noticing that AVIF is now the first entry in the default `formats` array, and that the `domains` option has been retired in favor of `remotePatterns` [1][3][7]. Neither change announces itself during the upgrade, which is exactly why they land in production as latency and broken image loads rather than as a decision someone made [1].
The trade is legible once you write it down. AVIF is claimed to produce files 20 to 30 percent smaller than WebP at equivalent visual quality, and to cost 3 to 5 times more encode time [4][5]. The post's worked example, an 80KB WebP product image landing at 55 to 60KB as AVIF, actually implies a 25 to 31 percent saving, slightly better than its own headline range [10][11]. Set against the claim that images are 40 to 60 percent of total page weight, the best case whole-page byte saving is roughly 8 to 18 percent [9][18]. Real, worth having, not worth an outage.
The outage path runs through fallback. Users on Safari 15 or older Android browsers do not get AVIF; the component reads the `Accept` header and regenerates a WebP variant on demand, which produces a first-request latency spike and doubles server-side optimization work for that cohort [12]. The post puts AVIF support past 90 percent global coverage in late 2025 and separately advises reconsidering the default if analytics show 5 percent or more of traffic on pre-AVIF browsers [6][13]. Those two numbers sit awkwardly together: 90 percent coverage means up to 10 percent of global traffic on the slow path, twice the threshold the post itself sets [19]. Your own analytics decide this, not a global average.
`remotePatterns` is the second tripwire and the more abrupt one, because it enforces protocol, hostname and pathname matching where `domains` matched hostnames alone, so existing third-party image sources stop resolving [7]. Alongside it, `maximumDiskCacheSize` and `contentDispositionType` are the settings the post says teams skip, with disk exhaustion and CDN cache bypass as the consequences [8]. Cache bypass is the expensive one: it turns a 3 to 5 times encode penalty into a per-request cost instead of a once-per-variant cost [5][8]. The post also flags `priority` and `sizes` as routinely misconfigured, with priority images needing manual preload links in layouts and wrong `sizes` values generating oversized variants [15].
The mitigation is unglamorous: state `formats` explicitly rather than inheriting it, for example `['image/webp', 'image/avif']` with pinned `deviceSizes` and `imageSizes`, so the format order is a choice in your repo instead of a framework default that can move under you [14].
One caveat on provenance. This is a single source, and it discloses that it was written with AI assistance under human supervision and review [16]. Treat the version numbering, the coverage figure and the config names as prompts to check the release notes and your own `next.config` diff, not as settled fact.
What to watch after the bump: CDN cache hit ratio on the optimizer route, p95 image response time segmented by browser rather than in aggregate, disk cache growth on the node doing the encoding, and error rates for remote hosts that previously passed under `domains` [7][8][12].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The post's recommended explicit configuration in next.config.js sets images.formats to ['image/webp', 'image/avif'] (WebP first, AVIF fallback), with deviceSizes [640, 750, 828, 1080, 1200, 1920, 2048, 3840] and imageSizes [16, 32, 48, 64, 96, 128, 256, 384].
The article states it was written with the assistance of AI, under human supervision and review, and was published on dev.to.
The 80KB to 55-60KB example corresponds to a 25% to 31% byte reduction, marginally above the post's stated 20-30% range.
If images are 40-60% of page weight and AVIF cuts image bytes by 20-30%, the resulting whole-page byte saving is about 8% to 18%.
AVIF coverage of 90% implies up to 10% of global traffic on the non-AVIF fallback path, roughly twice the 5% threshold at which the post says redundant encoding costs outweigh the compression benefit.
A dev.to post asserts that most Next.js image performance problems in 2026 stem from teams upgrading to next/image v4 without understanding the default format switch to AVIF and breaking configuration changes that silently degrade production pipelines, and that the required configuration changes are not surfaced during the upgrade process.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One AI-assisted blog post, zero primary references
The cluster contains a single dev.to community post that discloses AI assistance and cites nothing: no Next.js release notes, changelog, documentation, issue links, browser-support dataset, or benchmark methodology. Its version and default-behaviour claims, its compression and encoding-cost numbers, and its page-weight framing are all bare assertions, and the supplied body is truncated mid-way through the remotePatterns explanation. The only firmly verifiable items are what the post itself recommends and how it was authored.
No adoption evidence supplied
Nothing in the supplied material records an actual release, deployment, benchmark run, usage disclosure, pricing or licence change. The post describes upgrade behaviour and hypothetical failure modes in the abstract, naming no application, team, incident or measurement, so no adoption signal can be scored without inventing facts.
Confident numbers, thin backing, self-contradicting
Claim strength runs well ahead of the evidence. The post opens with a prevalence assertion ('most Next.js image performance problems in 2026'), stacks precise-sounding figures (20-30%, 3-5x, 40-60%, 90%, 5%, 95%) with no methodology, and its own arithmetic undercuts the framing: 90% coverage leaves up to 10% of traffic on the fallback path, about twice the 5% level at which it says redundant encoding wins, and the page-level payoff of the compression change is only roughly 8-18%. The remedy itself is modest and internally consistent - pin formats WebP-first - which is why the gap is overstatement of stakes and certainty rather than a bad recommendation.
Community-platform AI-assisted post, no vendor stake disclosed
The only incentive signal the material supports is the authoring context: an AI-assisted post published on a developer community platform, which favours volume and confident, checklist-shaped framing over sourcing. No sponsorship, vendor affiliation, product being sold, or commercial relationship with Next.js, a CDN or an image service is disclosed or implied anywhere in the supplied text, so there is no evidence of a stronger financial pull.
Low - unverified single source with internal inconsistencies
Confidence is limited by a single AI-assisted publisher, absent primary references, unreproducible numbers, a body truncated mid-explanation, and demonstrable internal contradictions between the 90% coverage claim, the 5% threshold and the 95% inversion bar. The one thing that can be stated with confidence is what the post recommends and how it was produced; the framework behaviour it describes needs independent verification against upstream release notes before being relied on.
build
At 70,000 images, next/image is not your optimizer, it is your outage1 distinct publisher
build
The third answer: a dead-code tool allowed to say "not traced yet"1 distinct publisher
build
Five frameworks, one store, and a benchmark that measures when the button works1 distinct publisher
build
A default JSON-LD bundle beats a taxonomy research project on every new site1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 15, 2026