Commit Graph

1518 Commits

Author SHA1 Message Date
github-actions[bot] 9cf754fcc2 chore: version packages (beta) (#3074)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-02 12:10:10 +00:00
James Anderson 8370369383 fix(cloudflare): finalize CDN version metadata output (#3137)
* fix(cloudflare): finalize CDN version metadata output

* test(cloudflare): validate generated version metadata deployment

* fix(cloudflare): finalize metadata from primary output
2026-09-02 12:55:40 +01:00
James Anderson 9d94dcdd5f fix(cloudflare): support explicit CDN warm targets (#3138) 2026-09-01 22:16:55 +00:00
James Anderson 6a18dbe3ff fix(cloudflare): harden post-deploy readiness checks (#3136) 2026-09-01 22:43:02 +01:00
James Anderson 04c4de7f81 fix(cloudflare): restore web CDN warmup deploy (#3135) 2026-09-01 22:00:50 +01:00
James Anderson 2a08fb7913 fix(cloudflare): classify CDN cacheability per concrete route (#3115)
* fix(cloudflare): scale cacheability probing

* fix(cloudflare): preserve cache policy probe identities

* test(cache): cover conditional response vetoes

* fix(cache): match header policy sources exactly

* perf(cache): compute probe safety per pattern

* fix(build): omit empty route ownership metadata

* fix(cloudflare): classify cacheability per concrete path

* fix(cloudflare): retain zero-path static fallbacks

* test(cloudflare): cover on-demand static fallbacks

* fix(cloudflare): admit custom vary cache variants

* fix(cloudflare): keep wildcard vary private

* fix(cloudflare): reject wildcard vary during probing

* fix(cloudflare): reject empty Cache Components params

* fix(cloudflare): scope empty params validation to pages

* fix(cloudflare): remove cacheability response size limits

* fix(cloudflare): bound completed cache admission

* fix(cloudflare): release failed admission captures

* fix(cloudflare): honor staged readiness retries

* fix(cloudflare): retain probed manifest in dist

* fix(cloudflare): probe staged readiness without rendering

* fix(cloudflare): verify staged readiness response

* fix(cloudflare): reserve staged readiness endpoint

* fix(cloudflare): relax cacheability manifest bounds

* perf(cloudflare): avoid duplicate deployment status check
2026-09-01 21:25:26 +01:00
James Anderson c8bea6bccf feat(cache): classify and warm static Route Handlers (#3113)
* feat(cache): classify and warm static Route Handlers

* fix(cache): identify Route Handler probe responses

* test(cache): assert Route Handler probe identity

* fix(cache): prove final Route Handler responses

* fix(cache): admit explicit Route Handler policies safely

* fix(cache): close Route Handler admission fallbacks

* fix(cache): honor explicit dynamic handler policies

* fix(cache): reject unsafe Route Handler probe responses

* fix(cache): preserve Route Handler CDN policy ownership
2026-09-01 21:25:26 +01:00
James Anderson 09969d951a feat(cache): probe Pages Router cacheability (#3098)
* feat(cache): probe Pages Router cacheability

* test(cache): prove Pages prewarm reuse

* fix(cache): fail closed for Pages request variants

* test(cache): assert Pages response finalization

* fix(cache): transfer hybrid Pages admission ownership

* fix(cloudflare): warm Pages Router data routes

* fix(cache): align Pages cacheability ownership

* test(cache): preserve Pages ownership order

* fix(cache): enforce Pages response admission without manifest

* fix(cache): align Pages request-time cache policy

* test(cache): expect completed Pages request-time probes

* fix(cache): preserve routing vetoes during probing

* fix(cache): preserve final routing cache policy

* fix(cache): retain middleware cache policy precedence
2026-09-01 21:25:25 +01:00
James Anderson 8956b70556 fix(cache): certify staged cache fills before promotion (#3094)
* fix(cache): certify staged cache fills before promotion

* test(cache): verify post-purge CDN admission

* test(cache): await post-purge CDN reuse

* fix(cloudflare): make cache fill certification opt-in

* fix(cloudflare): make cache certification authoritative

* style(cloudflare): format certification deploy
2026-09-01 21:25:25 +01:00
James Anderson c2377c6b23 feat(cache): deploy probed manifests in two stages (#3093)
* feat(cache): deploy probed manifests in two stages

* fix(cache): isolate App Page cacheability probes

* fix(cache): preserve hybrid route ownership in probes

* fix(cache): isolate staged probe retries

* fix(cache): fail closed for unprobed request identities

* fix(cache): bound and filter staged cacheability manifests

* fix(cloudflare): validate cacheability manifest imports

* fix(cloudflare): bound staged cacheability probes

* fix(cloudflare): isolate cacheability probe budgets

* fix(cloudflare): bound staged probe envelopes

* test(cache): import manifest limit from owner

* fix(cloudflare): fail closed during staged warming

* fix(cloudflare): guard final staged traffic

* fix(cloudflare): deploy empty cacheability manifests

* fix(cloudflare): reconcile staged deployment failures
2026-09-01 21:25:24 +01:00
James Anderson 34dd7fe9ae fix(cache): preserve Cache Components ownership during probing (#3103)
* test(cache): cover cache component ownership probes

* fix(cache): preserve cache component ownership

* fix(cache): bail out private cache probes synchronously

* fix(cache): suspend private cache prerenders safely

* fix(cache): validate private cache parents before probing

* fix(cache): isolate private bailout cancellation

* fix(cache): reject private cache inside unstable cache

* perf(cache): avoid redundant ownership overhead

* test(cache): use a valid Cache Components fixture

* test(cache): split cache components workerd fixture

* test(cache): remove unused worker type dependency

* test(cache): register cacheability fixture entries

* fix(cache): preserve legacy io probe parity

* fix(cache): invalidate unsafe unstable cache entries

* test(cache): resolve fixture cache handler types
2026-09-01 21:25:23 +01:00
James Anderson bbaed77c35 fix(cache): gate CDN admission on probed routes (#3092)
* fix(cache): gate CDN admission on probed routes

* fix(cache): admit no-manifest responses after clean EOF

* fix(cache): fail closed for contextual admission

* fix(cache): isolate conditional config headers

* test(cache): use a valid legacy revalidate fixture

* fix(cache): finalize private app page evaluations

* test(cache): cover RSC manifest admission

* fix(cache): veto late private response policy

* fix(cache): reject conditional middleware probes

* fix(cache): trust framework admission policy

* fix(cache): isolate request-conditioned CDN responses

* fix(cache): avoid cookie response variation

* fix(cache): preserve hybrid Pages admission policy

* test(cache): allow existing Pages warm fills

* fix(cache): complete cacheable route handler responses

* fix(cache): preserve final public page policy

* fix(cache): complete adapter-admitted route handlers

* fix(cache): preserve route handler opt-out headers

* fix(cache): preserve explicit route handler policy

* style(cache): format Route Handler admission
2026-09-01 21:25:23 +01:00
James Anderson aa4b195cc2 feat(cache): probe App Page cacheability on staged Workers (#3091)
* feat(cache): probe App Page cacheability on staged Workers

* test(cache): cover probe phase define

* fix(cache): keep middleware-matched probes private

* test(cache): use current proxy convention in probe fixture

* style(cache): format prerender capability check

* test(cache): cover RSC cacheability probes

* fix(cache): expose build phase during staged discovery
2026-09-01 21:25:23 +01:00
James Anderson 56b6be06d6 fix(cloudflare): discover prewarm paths from staged worker (#3090)
* fix(cloudflare): discover prewarm paths from staged worker

* fix(cloudflare): hide prerender capability from user code

* perf(cloudflare): skip discovery URL parsing on ordinary requests

* fix(cloudflare): bound staged discovery phases

* perf(pages): lazy-load staged discovery runtime

* fix(cloudflare): use the full staged discovery deadline

* fix(cloudflare): distinguish staged discovery failures

* test(cloudflare): preserve deadline-bounded discovery

* test(cloudflare): avoid wall-clock retry count

* test(cloudflare): stabilize discovery deadline coverage
2026-09-01 21:25:22 +01:00
James Anderson 2a2ce31ecc fix(app-router): support soft navigation in static exports (#3112)
* fix(app-router): support soft navigation in static exports

* test(stream): drain transforms before releasing readers

* fix(cache): preserve prerender stale metadata across footer race

* fix(app-router): validate static export navigation payloads

* fix(app-router): handle static export basePath roots

* fix(export): align basePath artifact namespace

* fix(export): namespace basePath static artifacts

* fix(export): normalize trailing basePath artifacts

* fix(export): namespace public assets under basePath

* test(export): avoid tainted fixture HTML
2026-08-27 11:01:04 +01:00
James Anderson c1a78a73d8 fix(build): support trailing-slash static exports (#3081)
* fix(build): support trailing-slash static exports

* fix(ci): initialize static export preview routes

* fix(build): emit trailing-slash 404 fallback

* docs(build): clarify static export page count
2026-08-26 23:01:09 +01:00
James Anderson c812639653 fix(app-router): validate interception context identity (#3078)
* fix(app-router): validate interception context identity

* fix(app-router): revalidate interception proof after rewrites

* fix(app-router): retain source authorization across rewrites

* test(app-router): cover interception source auth bypass
2026-08-25 13:51:53 +01:00
James Anderson a5b6d05b83 fix(app): authenticate static file signals (#3077) 2026-08-25 10:58:22 +01:00
James Anderson 4146d69021 fix(cloudflare): verify Worker version IDs during CDN warmup (#3072)
* fix(cloudflare): revalidate stale warmup retries

* fix(cloudflare): report CDN warmup retry progress

* test(cloudflare): retry prewarm verification on fresh Worker

* feat(cloudflare): configure CDN readiness probes

* fix(cloudflare): validate CDN warmup version overrides

* fix(cloudflare): verify CDN warmup version ids

* test(cloudflare): opt into dangerous warmup fallback

* fix(cloudflare): harden warmup version validation

* docs(cloudflare): clarify version binding environments
2026-08-24 23:03:15 +01:00
James Anderson 8759b65c86 fix(build): validate CDN warm discovery and deploy inputs (#3057)
* fix(build): validate CDN warm path params

* fix(build): exclude handlers from CDN warm paths

* fix(build): resolve all CDN warm path owners

* fix(build): preserve exact CDN warm path identity

* fix(build): preserve encoded Pages warm paths

* test(cloudflare): preserve encoded warm request URLs

* fix(build): reject unsafe Pages warm paths

* fix(router): match localized warm paths case-insensitively

* fix(cache): honor build identity adapter capability

* fix(build): reject normalized CDN warm paths

* fix(build): discover dynamic MDX warm paths

* fix(build): skip routes without static param generators

* fix(cloudflare): validate warmup promotion delay
2026-08-24 23:03:15 +01:00
James Anderson e2e2b177eb fix(cloudflare): complete warmup response and promotion contracts (#3046)
* test(cloudflare): prove deployed Pages CDN warmup

* fix(cloudflare): reject incomplete no-promote warmup

* fix(cloudflare): keep warm discovery fail-closed

* test(cloudflare): prove prewarmed App HTML reuse

* fix(cloudflare): enforce no-promote warmup contract

* fix(cloudflare): warm terminal ISR responses
2026-08-24 23:03:14 +01:00
James Anderson f1efcc1e60 fix(cloudflare): harden canonical RSC warmup end to end (#3040)
* fix(cloudflare): validate reusable warm responses

* fix(cloudflare): retry staged warmup failures safely

* fix(cloudflare): extend staged propagation retries

* fix(build): filter Pages-owned RSC warm paths

* fix(cloudflare): keep CDN warmup correct with custom adapters and i18n

* fix(cloudflare): reject unusable CDN warm responses

* fix(cloudflare): keep CDN warmup bound to the deployed build

* fix(router): reuse warmed RSC on locale-prefixed hybrid routes

* fix(cloudflare): verify exact build and variant during CDN warmup

* fix(router): keep warmed RSC ownership rewrite-safe

* test(cloudflare): prove browser reuse of warmed RSC variants

* test(cloudflare): bind RSC warm proof to each deploy attempt

* fix(rsc): keep deferred loading shells contextual

* fix(build): keep CDN warm discovery route-correct

* fix(cache): preserve valid CDN policy during RSC warmup

* fix(cloudflare): warm the deployed Worker route host

* fix(cloudflare): preserve staged warmup guarantees

* fix(build): discover localized Pages warmup paths

* fix(cloudflare): wait for staged Worker before CDN warmup

* fix(cloudflare): preserve strict warmup deploy invariants

* fix(build): fail closed during CDN warm discovery
2026-08-24 23:03:14 +01:00
James Anderson 9dee8c9876 refactor(rsc): share canonical prefetch request resolution (#3019) 2026-08-24 23:03:13 +01:00
James Anderson aeee350a6f feat(cloudflare): configure warmup promotion delay (#3017) 2026-08-24 23:03:13 +01:00
James Anderson 7bf69109fc feat(cloudflare): allow warmup without promotion (#3016) 2026-08-24 23:03:12 +01:00
James Anderson 843ecd1ef7 fix(cloudflare): default CDN warmup concurrency to 25 (#3015) 2026-08-24 23:03:12 +01:00
James Anderson 8bb09481d6 feat(cloudflare): prewarm canonical ISR RSC requests (#3002)
* feat(cloudflare): prewarm canonical ISR RSC requests

* fix(cloudflare): forward preview deploy options

* fix(cloudflare): harden canonical RSC prewarming

* fix(test): wait for preview alias propagation

* fix(cloudflare): guarantee exact RSC prewarm reuse

* fix(cloudflare): harden canonical RSC prewarming

* fix(cloudflare): preserve definitive RSC warm identity

* fix(cloudflare): warm immutable worker versions

* test(form): expect Next-compatible absolute navigation

* fix(cloudflare): harden RSC prewarm deployment

* test(cloudflare): stabilize deployed RSC proof

* test(cloudflare): await RSC prefetch completion

* test(cloudflare): isolate RSC readiness probes

* fix(cloudflare): warm RSC through version overrides

* fix(cloudflare): parse labeled Worker version IDs

* fix(cloudflare): warm document requests as HTML

* fix(cloudflare): retry staged version propagation

* test(cloudflare): seed prewarm proof with prior Worker

* fix(cloudflare): await version override propagation

* fix(cloudflare): serialize staged cache warming

* fix(cloudflare): verify warmed RSC build identity

* fix(cloudflare): harden staged RSC cache warming

* fix(cache): keep RSC prewarm identity build-scoped

* fix(cloudflare): gate warmup on uploaded build

* fix(cache): certify canonical RSC warmup responses

* fix(cache): harden canonical RSC warmup propagation

* fix(cache): close RSC warmup review gaps

* fix(cache): preserve explicit response cache policies

* feat(cloudflare): prewarm canonical RSC variants without prerendering

* fix(cloudflare): forward deploy config from CLI

* fix(cache): close RSC prewarm reuse gaps

* fix(cloudflare): parse labeled Worker version IDs

* fix(router): preserve canonical prefetch invalidation

* test(cloudflare): align RSC seed Worker bindings

* fix(cloudflare): scope warmup deadlines per request

* test(cloudflare): avoid caching stale warmup seed

* fix(cloudflare): fail permanent warmup errors promptly

* fix(router): keep contextual RSC requests hashed

* test(cloudflare): await promoted warmup Worker

* test(cloudflare): retry browser warmup source

* revert: restore focused warmup deadline fix

* fix(cloudflare): remove warmup propagation deadline

* fix(cloudflare): allow slower warmup responses

* fix(cloudflare): confirm warmed cache hits

* fix(cloudflare): confirm cache hits without backoff

* fix(cloudflare): avoid duplicate cache warm requests

* test(cloudflare): allow prewarm propagation

* test(cloudflare): isolate loading prewarm propagation

* test(cloudflare): await promoted prewarm worker

* fix(cloudflare): wait for warm cache propagation before promotion

* test(cloudflare): allow promoted warm cache to settle

* test(cloudflare): wait after promoted build is reachable

* test(cloudflare): poll deployed version before warm cache checks

* test(cloudflare): trace warm cache identity

* test(cloudflare): trace prewarm verification location

* test(cloudflare): compare warm cache clients

* test(cloudflare): trace bypassed response identity

* fix(cloudflare): serialize warm cache variants

* test(cloudflare): report prewarm cache miss context

* test(cloudflare): await target RSC deployment readiness

* test(cloudflare): await stable worker promotion

* test(cloudflare): isolate RSC prewarm target

* fix(cloudflare): defer CDN warmup retries

* fix(cloudflare): verify warmed RSC variants

* test(cloudflare): trace RSC warm cache paths

* fix(cloudflare): separate loading-shell warm cache key

* test(cloudflare): make RSC warm reuse proof deterministic

* test(cloudflare): tolerate stale promoted Worker routing

* fix(rsc): enforce definitive loading-shell cache key
2026-08-24 23:03:12 +01:00
github-actions[bot] 20fdac4cec chore: version packages (beta) (#3008)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-20 13:13:32 +00:00
João Lucas 52c81f3c5f feat: experimental support for React Compiler via react: { compiler: true } (#3005)
* feat: support the React Compiler via react: { compiler: true }

@vitejs/plugin-react 6.1.0 added an experimental `compiler` option backed by
oxc-transform-react. vinext already forwards its `react` option to that plugin,
but enabling the compiler broke the build for apps with JSX in plain `.js`
files: `vite:react-compiler` and `vinext:jsx-in-js` both run at `enforce: "pre"`
and the React plugin was registered first, so the compiler parsed those files as
plain JS and failed with `Unexpected JSX expression`.

Register `vinext:jsx-in-js` before `@vitejs/plugin-react`, bump the plugin-react
catalog entry to ^6.1.0, add oxc-transform-react as a dev dependency for the
tests, and document the option.

* fix: fail fast when react.compiler is set on plugin-react 6.0

Addresses review feedback.

@vitejs/plugin-react 6.0 accepts an unknown `compiler` key and drops it, and it
still satisfies vinext's published peer range, so a project that upgrades vinext
without upgrading the plugin would silently get no React Compiler. Probe the
plugin list the factory returns and throw an actionable error when the compiler
plugin is missing.

Also drops the hand-authored changeset: AGENTS.md says changesets are generated
from Conventional Commits in CI.

* fix: keep the compiler version error out of the import failure wrapper

Addresses review feedback.

The trailing `.catch()` wrapped every rejection from the plugin-react promise
chain, including the compiler version check, so the actionable message and its
install command were demoted to a nested `cause` behind
`vinext: Failed to load @vitejs/plugin-react.`. Attach the wrapper to the
dynamic import itself so only genuine import failures are relabeled.

* fix: move only the compiler plugin instead of the whole React group

Addresses review feedback.

Reordering the entire @vitejs/plugin-react group put `vinext:jsx-in-js` ahead of
`vite:react-babel`, so on plugin-react 5.x, which is still in the supported peer
range and does expose a `babel` option, a user-configured Babel transform would
stop seeing JSX in plain `.js` files. Split `vite:react-compiler` out of the
group and register just that plugin after `vinext:jsx-in-js`. Every other plugin
keeps the position it had before this PR.

Also documents that components using `<style jsx>` are not memoized, since
`vinext:styled-jsx` lowers their JSX through the Next.js SWC transform first.
Running the compiler ahead of it is not an option: the styled-jsx plugin selects
modules by matching `<style` in the source, and lowered JSX no longer matches,
which would silently disable styled-jsx entirely.

* fix(ci): account for React Compiler test dependency

---------

Co-authored-by: James <james@eli.cx>
2026-08-20 14:07:54 +01:00
James Anderson c107079ad1 fix(build): avoid workerd cwd in module identity (#3007)
* fix(build): avoid workerd cwd in module identity

* test(cloudflare): cover legacy module identity

* test(ci): run Cloudflare encoded-path fixtures

* test(cloudflare): version module identity fixture
2026-08-20 12:29:25 +00:00
github-actions[bot] 87f6ec420f chore: version packages (beta) (#2930)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-19 11:52:40 +01:00
James Anderson 0736fdd50b fix(app-router): route server actions through their owning pages (#2520)
* fix(app-router): align server action routing

* perf(app-router): cache action ownership discovery

* fix(app-router): retain client-bound action owners

* fix(app-router): harden action owner forwarding

* fix(app-router): escape action owner metadata

* fix(routing): parse route parameters linearly

* perf(app-router): collect action owners during RSC scans

* perf(app-router): reuse RSC action consumer metadata

* perf(app-router): narrow RSC action metadata patch

* perf(app-router): move action edge analysis into vinext

* fix(app-router): finalize action scan observer integration

* fix(app-router): preserve original action scan metadata

* fix(app-router): retain imported inline action ownership

* test(actions): cover production action ownership edge cases

* fix(build): resolve action runtimes from generated entries

* test(actions): cover nested client form actions

* test(actions): cover same-named non-action exports

* refactor(app-router): derive action owners from final module graphs

* fix(app-router): lazily access RSC plugin API

* fix(app-router): harden action ownership forwarding

* fix(app-router): preserve forwarded action misses

* fix(app-router): resolve shared action owner roots

* fix(app-router): route progressive action owners

* fix(app-router): preserve progressive action routing

* fix(app-router): route bound progressive actions safely

* fix(app-router): preserve forwarded action redirects

* fix(app-router): reject unsafe progressive references

* fix(app-router): validate nested action references

* fix(app-router): decode outlined action chunk ids

* test(app-router): cover cached action ownership

* test(app-router): cover action owner route handlers

* test(app-router): cover direct object-wrapped actions

Adapt the regression from #2743 to assert successful direct form submission through the final action ownership graph.
2026-08-19 01:46:19 +01:00
James Anderson 9a876322c5 fix(web): consolidate canonical host SEO signals (#2989) 2026-08-19 00:12:05 +01:00
James Anderson 0e28810667 fix(app-router): restore shallow history tree snapshots (#2885) 2026-08-19 00:11:17 +01:00
James Anderson b663d4bc35 fix(cache): inherit route revalidate for tagged fetches (#2985)
* fix(cache): inherit route revalidate for tagged fetches

* fix(cache): inherit the live fetch revalidate interval
2026-08-18 14:27:12 +01:00
James Anderson f702d16126 refactor(middleware): remove dead resolver wrapper (#2972) 2026-08-18 09:56:27 +00:00
James Anderson 0fcb7e1771 refactor(app-router): remove dead intercept match helper (#2971) 2026-08-18 09:55:30 +00:00
James Anderson 3a021ced6b refactor(dev): remove dead stack-line wrapper (#2974) 2026-08-18 10:52:44 +01:00
James Anderson 932116c997 refactor(server): remove dead encoding helper (#2973) 2026-08-18 10:52:26 +01:00
James Anderson c84af82482 refactor(cache): remove dead revalidate duration registry (#2967) 2026-08-18 09:51:27 +00:00
James Anderson 794b04e75c refactor(pages): remove superseded helper wrappers (#2970) 2026-08-18 10:51:13 +01:00
James Anderson 22d2d38033 refactor(app-router): remove superseded helper wrappers (#2969) 2026-08-18 10:50:55 +01:00
James Anderson 5eb21da2a0 fix(security): validate supplemental interception selectors (#2976)
* fix(security): verify interception cache identities

* fix(security): bypass caches for interception selectors

* fix(security): preserve caching for verified interception selectors

* fix(cache): delegate selector policy to CDN adapter
2026-08-18 10:48:04 +01:00
James Anderson b653aaf52b fix(build): preserve bundled ESM module identity (#2942)
* fix(build): preserve bundled ESM module identity

* fix(build): harden bundled ESM identity

* test(pages): allow parity route table growth
2026-08-18 02:35:44 +01:00
James Anderson 1c05615159 fix(build): preserve portable CommonJS module identity (#2826)
* fix(pages): preserve CJS globals in bundled dependencies

* fix(pages): use portable emitted CJS module identity

* test(build): expect emitted proxy module identity

* fix(build): support linked CommonJS package identity

* fix(build): harden linked CommonJS transforms

* fix(build): harden emitted CommonJS identity

* test(pages): account for fixture route table growth

* refactor(plugins): reuse shared module utilities

* test(cloudflare): cover Pages bundled CJS globals

* test(cloudflare): tolerate unmounted dev source identity

* fix(build): preserve nested Cloudflare module identity

* refactor(build): resolve deployed module filenames explicitly
2026-08-18 02:35:44 +01:00
James Anderson fbf77b17dc fix(router): refresh retained parallel routes (#2880)
* fix(router): refresh retained parallel routes

* fix(router): harden supplemental parallel refreshes

* fix(router): preserve refreshed nested source routes

* fix(router): skip retained descendant refreshes

* fix(router): canonicalize supplemental refresh paths

* fix(app-router): preserve superseded flight streams
2026-08-18 02:04:38 +01:00
James Anderson 68cf0af31c refactor(app-router): remove dead RSC chunk subscriber (#2964) 2026-08-18 00:59:10 +00:00
James Anderson 1e0cc50323 refactor(dynamic): remove dead preload queue (#2968) 2026-08-18 00:46:40 +00:00
James Anderson ace7a1f7a2 fix(pages-router): emit dev build ID in next data (#2962) 2026-08-18 01:18:27 +01:00
James Anderson 46eb2f031c refactor(app-router): remove dead RSC nav global (#2961) 2026-08-18 00:10:32 +00:00