npm / vinext
vinext
What changed in vinext 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-01.
6 breaking2 security2 new APIs and options3 performance22 behavior and defaults1 tooling34 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initvinext 170 changes
Breaking changes 6
cookies().get({ name }) is accepted, and read-only cookie mutators throw when called.
The App no longer retains every route handler request on the Node server.
Pages rendered dynamically are neither rendered in an automatic prefetch nor reused from one.
Entries for a tag revalidated with a cacheLife profile are served stale until they expire.
Defaults NODE_ENV to production.
Defaults NODE_ENV to production when starting the production server.
Security 2
Client reference scripts receive the CSP nonce.
Parallel slots and intercepted routes render their own unauthorized boundaries.
New APIs and options 2
Adds --vite-config to deploy.
Adds --ignore-wrangler-config for Cloudflare init.
Performance 3
next/image shim dependencies are pre-bundled for the Pages Cloudflare Worker.
The page and _app chunks are preloaded in the initial HTML.
Pages that do not use next/navigation no longer load the App Router runtime.
Behavior and default changes 22
A layout's children are retained above their own BFCache boundaries.
The catalog loader runs on experimental.messages catalogs.
The fetch cache is bypassed in draft mode.
A full prefetch can be fulfilled from a recent navigation's visited response.
Pages applies next.config headers to res before Node API handlers run.
Data cache reads are skipped during on-demand revalidation.
Node streams passed to Pages API res.send are piped.
The incoming Request is kept when header filtering changes nothing.
A single Response Store static Pages entry can be shared across hosts.
Server Actions run with their page's implicit tags.
Server render errors are logged in production.
Unclaimed cache hits under cached navigations advertise staleTimes.static.
unstable_noStore() is a no-op under Cache Components.
Modules using use cache that are shipped inside node_modules are compiled.
Prefetch skips a URL that navigation would serve from its visited response.
A single Workers Cache entry can be shared across hosts.
Client components that await at their top level can be streamed.
An intercepted prefetch is classified by its intercepting page.
Plain links render on the server without client hooks.
A navigation no longer waits for its page's metadata after a prefetched shell is available.
Defaults NODE_ENV to production.
Defaults NODE_ENV to production.
Tooling 1
Shim paths resolve through Vite so development loads one instance.
Fixes and other changes 34
Cached functions exported by name keep their arity.
A page's resolved client stale time is stored instead of the pending marker.
The document is regenerated when a stale RSC request regenerates its page.
Init no longer writes native-module aliases to a missing empty-stub.js.
Copied history tree ids are scoped to their document.
App Router errors reach error.tsx instead of the loading component.
Another root layout's not-found is kept out of matched routes.
Title templates now match Next.js behavior.
A raw-body handler that destroys a stalled upload emits close.
A refreshed parallel slot keeps its identity so refresh does not remount it.
Concurrent refreshes are dropped when another write has already replaced the revision.
Visible links are prefetched again only after router.refresh() finishes.
Static prefetches are kept when a Server Action calls refresh().
The title template rule now matches Next.js.
The shim remains in use when next/image is user-aliased.
Client reference stylesheets and scripts use the configured crossOrigin; stylesheets are anonymous when it is unset.
A segment's error boundary resets when the pathname changes.
The legacy experimental.cacheComponents key is honored, including as an override during project detection.
A route keeps its own title when rendering throws forbidden().
Built-in forbidden and unauthorized pages are rendered.
Parallel slots and intercepted routes render their own forbidden boundaries.
Pages Router not-found pages retain middleware Cache-Control.
Formats are inferred for extensionless Google font URLs.
Queued prefetches are dropped when their Link unmounts or leaves the viewport.
Ancestor loading boundaries render once below nested layouts, and sibling intercepting layouts can render while a synchronous page suspends.
Prefetches without a loading boundary render only the route tree.
Parallel slots and layouts now handle not-found signals in their own route tree, including nested and intercepted routes.
A route keeps its own title when rendering throws notFound().
Accepts a single video or audio entry and renders emails, phone numbers, fax numbers, and alternate locales.
Config redirect Locations are percent-encoded like Next.js, and redirect statusCode is honored.
Contextual RSC requests reached through a rewrite are canonicalized.
Content remains on screen during response recovery for search transitions.
A route keeps its own title when rendering throws unauthorized().
Reads the browser query after hydration.