James Anderson
caec466fe2
fix(actions): match root params execution phases ( #2248 )
...
* fix(actions): match root params execution phases
* fix(actions): preserve root params execution phases
* fix(actions): skip non-revalidating error rerenders
* test(actions): cover failed revalidation rerenders
* fix(actions): dedupe fallback robots metadata
* fix(actions): align thrown action render phases
* fix(actions): close remaining root params parity gaps
* refactor(actions): remove unused root params phase
2026-06-23 19:30:21 +01:00
Jerry Zhao
8eef972c95
refactor(cli): pass a forward-slash root to printBuildReport ( #2294 )
2026-06-23 18:40:59 +01:00
Jerry Zhao
04245d44d3
refactor(cli): pass a forward-slash root to runPrerender ( #2295 )
2026-06-23 18:40:50 +01:00
James Anderson
f44a97a793
fix(build): align SSR CSS asset paths ( #2291 )
...
* fix(build): align SSR CSS asset paths
* test(build): cover SSR asset naming edge cases
* fix(build): preserve array output configuration
2026-06-23 16:39:15 +01:00
Jerry Zhao
4d90f8bac4
refactor(cli): pass a forward-slash root to hasAppDir ( #2282 )
2026-06-23 14:34:09 +01:00
github-actions[bot]
373cc8b946
chore: version packages ( #2259 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vinext@0.1.8
2026-06-23 12:53:49 +00:00
James Anderson
2cbd2a0356
fix(build): apply default server externals ( #2257 )
...
* fix(build): externalize Next.js default server packages
* test(node): cover externalized shiki in standalone output
2026-06-23 10:20:55 +00:00
ponharu
66a7b4e6e8
fix(app-router): exclude dev overlay from production client bundle ( #2284 )
...
* fix(app-router): exclude dev overlay from production client bundle
* fix(app-router): reuse loaded dev overlay during HMR
---------
Co-authored-by: James <james@eli.cx >
2026-06-23 11:09:56 +01:00
James Anderson
92884eef42
feat(web): add Vite configuration examples ( #2289 )
2026-06-23 09:01:24 +00:00
James Anderson
0d5a9e5e1b
fix(ssr): ignore runtime renderer import in Vite ( #2288 )
2026-06-23 10:01:01 +01:00
Jerry Zhao
516107cf7c
refactor(deploy): build detectProject paths on a forward-slash root ( #2283 )
2026-06-23 09:41:40 +01:00
Jerry Zhao
c9a16852e8
refactor(typegen): pass the findDir candidate as a forward-slash literal ( #2281 )
2026-06-23 09:41:26 +01:00
Jerry Zhao
6f7b37d77f
refactor(check): build check scanner paths with path.posix ( #2280 )
2026-06-23 09:41:16 +01:00
Jerry Zhao
767c79afbc
refactor(cli): normalize the check/init root to forward slashes at the CLI entry ( #2278 )
2026-06-23 00:04:22 +01:00
Jerry Zhao
9857bcf53c
refactor(check): compute scanImports relative paths with path.posix.relative ( #2277 )
2026-06-23 00:04:10 +01:00
Jerry Zhao
06fc2b7dd0
refactor(check): join findSourceFiles paths with path.posix.join ( #2276 )
2026-06-23 00:04:00 +01:00
Jerry Zhao
d7ce03dfbe
refactor(check): match findDir's forward-slash contract in checkConventions ( #2275 )
2026-06-23 00:03:28 +01:00
Jerry Zhao
cde1c45d77
docs(app-router): document the forward-slash appDir contract on appRouter/appRouteGraph ( #2274 )
2026-06-23 00:03:02 +01:00
Jerry Zhao
59f892c6b6
refactor(app-router): build typegen route paths on forward slashes ( #2273 )
2026-06-23 00:02:52 +01:00
ponharu
68547961ee
test(deploy): stabilize Wrangler fallback resolution test ( #2272 )
2026-06-23 00:02:32 +01:00
James Anderson
a34c083e88
fix(app-router): match interception route precedence ( #2231 )
...
* fix(app-router): prioritize specific interception routes
* fix(app-router): match interception route precedence
* Reviewed PR #2231 : LGTM, minor notes
Co-authored-by: james-elicx <james-elicx@users.noreply.github.com >
* fix(app-router): align interception route tiebreaks
---------
Co-authored-by: ask-bonk[bot] <ask-bonk[bot]@users.noreply.github.com>
Co-authored-by: james-elicx <james-elicx@users.noreply.github.com >
2026-06-22 23:37:34 +01:00
James Anderson
d65dd4c601
fix(router): ignore stale initial popstate with i18n ( #2230 )
...
* fix(router): ignore stale initial popstate with i18n
* Review done: no issues found
Co-authored-by: james-elicx <james-elicx@users.noreply.github.com >
* test(router): run i18n popstate coverage in existing project
---------
Co-authored-by: ask-bonk[bot] <ask-bonk[bot]@users.noreply.github.com>
Co-authored-by: james-elicx <james-elicx@users.noreply.github.com >
2026-06-22 22:36:52 +00:00
James Anderson
6e998ec114
fix(middleware): run on missing build assets ( #2242 )
...
* fix(middleware): run on missing build assets
* fix(middleware): preserve missing asset rewrites on workers
2026-06-22 23:36:49 +01:00
James Anderson
7b21c429c0
fix(app-router): preserve global error details ( #2249 )
...
* fix(app-router): preserve global error details
* fix(app-router): preserve default global error semantics
2026-06-22 23:29:40 +01:00
ponharu
7c932f39cd
fix(headers): strip internal dev request ID headers ( #2260 )
2026-06-22 23:25:08 +01:00
dependabot[bot]
0fa7c8046f
chore(deps): bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 ( #2263 )
...
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action ) from 0.5.6 to 0.5.7.
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases )
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa )
---
updated-dependencies:
- dependency-name: zizmorcore/zizmor-action
dependency-version: 0.5.7
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: James Anderson <james@eli.cx >
2026-06-22 22:22:03 +00:00
Jerry Zhao
ad7fe15d9d
refactor(app-router): consume directoryToAppRoute paths with path.posix ( #2270 )
2026-06-22 23:21:10 +01:00
Jerry Zhao
465c00f336
refactor(app-router): yield forward-slash ids from scanWithExtensions ( #2271 )
2026-06-22 23:20:56 +01:00
Jerry Zhao
a532a03a26
refactor(config): normalize the resolveId id once and drop the Windows backslash branches ( #2264 )
2026-06-22 23:20:17 +01:00
Jerry Zhao
14549e323f
test(shims): expect forward-slash shim ids in the next/error and subpath resolution fixtures ( #2265 )
2026-06-22 23:19:51 +01:00
Jerry Zhao
ecfc68874f
test(pages-router): wrap the client-navigation page module URL as a Vite /@fs/ id on Windows ( #2266 )
2026-06-22 23:19:37 +01:00
Jerry Zhao
d89fcb5070
test(og-inline): use a forward-slash scoped package name in the linked-workspace fixture ( #2267 )
2026-06-22 23:19:17 +01:00
Jerry Zhao
bc19327853
refactor(app-router): descend findSlotRootPage with path.posix.join to preserve forward-slash ids ( #2268 )
2026-06-22 23:18:59 +01:00
Jerry Zhao
13f30dd18b
refactor(app-router): build parallel-slot dirs with path.posix.join ( #2269 )
2026-06-22 23:18:51 +01:00
James Anderson
fbf68d588e
fix(app-router): restore cache and parallel route parity ( #2261 )
...
* fix(app-router): preserve searchParams cache variants
* test(app-router): cover RSC metadata cache variants
* fix(app-router): isolate metadata searchParams observation
* fix(app-router): preserve static ISR cache proofs
* fix(app-router): limit queryless cache probes
* fix(app-router): skip redundant cache proof probes
* fix(app-router): harden incomplete cache proofs
* fix(app-router): observe loading page execution
* fix(app-router): preserve exotic page exports
* fix(app-router): preserve client page ISR
* fix(app-router): avoid duplicate queryless page execution
* fix(app-router): observe viewport search params
* fix(app-router): clear force-static search params
* fix(app-router): isolate intercept static context
* fix(app-router): preserve intercept request context
* fix(app-router): isolate action static context
* fix(app-router): match static request API semantics
* fix(app-router): preserve dynamic segment constraints
* fix(app-router): apply slot-only segment config
* fix(app-router): preserve draft mode reads in static errors
* fix(app-router): include nested slot constraints
* fix(app-router): refresh slot layout constraints
* fix(app-router): render nested slot layouts
* fix(app-router): preserve nested slot params
* fix(app-router): preserve intercepted slot head
* fix(app-router): scope parallel layout params
* fix(app-router): preserve intercept layout parity
* fix(app-router): preserve intercept ancestor params
* fix(app-router): scope intercept source params
* fix(app-router): preserve intercept source route params
* test(app-router): stabilize parity validation
2026-06-22 23:17:41 +01:00
Steve Faulkner
826ae4cc7c
perf(app-router): skip speculative page probes for HTML renders ( #2226 )
2026-06-22 08:53:17 -05:00
James Anderson
65f9531d00
fix(app-router): canonicalize initial history URL ( #2250 )
2026-06-22 14:50:06 +01:00
James Anderson
1908494d4d
fix(pages-router): allow server-only in API routes ( #2234 )
2026-06-22 14:46:49 +01:00
Stephen Zhou
6b55874ee0
fix(config): make vite-tsconfig-paths an optional peer ( #2258 )
2026-06-22 14:39:36 +01:00
Alexander Lichter
d6afa2e874
perf(link): omit Pages runtime in app-only builds ( #2225 )
...
* perf(link): omit Pages runtime in app-only builds
* fix(link): use document fallback in app-only builds
2026-06-22 14:28:10 +01:00
Alexander Lichter
573997382e
perf(client): omit unused server action client ( #2222 )
...
* perf(client): omit unused server action client
* fix(client): capture server action state before lazy load
---------
Co-authored-by: James <james@eli.cx >
2026-06-22 14:27:38 +01:00
Alexander Lichter
95b320f79f
perf(app): omit unused PPR runtime ( #2223 )
...
Co-authored-by: James <james@eli.cx >
2026-06-22 13:06:27 +00:00
Alexander Lichter
eb18704318
perf(app): omit unused file metadata runtime ( #2224 )
2026-06-22 13:54:45 +01:00
Alexander Lichter
bd7562ac74
feat(web): compare benchmarks with recent median ( #2221 )
2026-06-22 13:46:25 +01:00
github-actions[bot]
cceb1988dd
chore: version packages ( #2203 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vinext@0.1.7
2026-06-22 09:26:20 +00:00
James Anderson
cf9d601162
fix lockfile ( #2233 )
2026-06-21 18:18:31 +00:00
James Anderson
82d5f7691c
fix(perf): resolve Vite from benchmark target ( #2212 )
2026-06-20 14:05:33 +00:00
Divanshu Chauhan
e7a4e9b08b
fix(image): emit hoisted var for local image import binding to avoid TDZ ( #2067 )
...
The vinext:image-imports transform rewrote `import X from './a.png'` into
two imports plus `const X = {...}`. The original import is a module-scoped
binding initialized before module-body execution, but the `const` is
block-scoped and TDZ-bound until its textual line, so any reference to `X`
that runs earlier — a hoisted function called above the import, or a
circular-import re-entry — flipped from working to a runtime
`Cannot access 'X' before initialization`.
Emit `var X = {...}` instead: it hoists like the import it replaces, so the
forward reference no longer throws (it reads `undefined` before the line,
strictly better than crashing). Matches Next.js, which leaves the consumer's
`import X` untouched and rewrites the image module itself.
Closes #1975
2026-06-20 14:49:17 +01:00
Divanshu Chauhan
ad2fcfb16f
fix(dynamic): render ssr:false loading with pastDelay:true to match client ( #1967 ) ( #2064 )
...
next/dynamic's ssr:false server branch rendered the loading component with
pastDelay:false, while the client's first (pre-mount) render and Suspense
fallback default pastDelay to true. For a loading component that branches on
pastDelay (the documented `if (!pastDelay) return null` pattern), the server
emitted nothing but the client rendered the spinner, causing a React hydration
mismatch and a visible content jump.
Drop the hardcoded pastDelay:false override on the server so it defaults to
true, matching both the client render and Next.js App Router, which always
renders the loading fallback with pastDelay=true on server and client. Loading
components that ignore pastDelay are unaffected.
Update the three tests that asserted the buggy server-side pastDelay:false, and
add a server-equals-client-first-render parity assertion.
Fixes #1967
2026-06-20 14:47:02 +01:00
Divanshu Chauhan
05038707e2
fix(actions): dedupe Set-Cookie on no-JS non-redirect action responses ( #1976 ) ( #2063 )
...
The progressive (form-state) non-redirect server-action path returned the
raw `getAndClearPendingCookies()` array, so calling `cookies().set(name, ...)`
twice for the same name emitted two `Set-Cookie` headers for that name on
no-JS form submissions. Next.js stores mutable cookies in a name-keyed
`ResponseCookies` map (last value wins) and collapses to one header, as do the
redirect and RSC action paths in vinext via `dedupePendingCookies()`.
Wrap the non-redirect branch's cookie collection in `dedupePendingCookies()`
to match the sibling paths, so same-name sets collapse to a single Set-Cookie
(last value wins). The single binding feeds both the action-failed and success
returns, covering both non-redirect sub-cases.
Follow-up to the #1481 dedup fix, which landed on the redirect and RSC paths
but missed the progressive non-redirect branch.
Adds a regression test mirroring the existing redirect-dedup test for the
non-redirect form-state path.
2026-06-20 14:45:36 +01:00