canary
Replace createNextDescribe with nextTestSetup (#64817)
Fix server action forwarding loop with middleware rewrites (#93792)
[test] `assert*` -> `waitFor*` when the util is not instant (#85450)
Upgrade React from `fef12a01-20260413` to `da9325b5-20260417` (#92945)
Fix stale data after navigation despite revalidation (#95439)
[test] Run more test suites under cacheComponents flag, again (#96196)
Add new updateTag API and new signature for revalidateTag (#83822)
Fix streaming server actions (#86148)
Validate server reference IDs during manifest lookup (#96007)
Omit unused arguments for server actions (#89651)
test: skip action module instance deploy test (#96629)
Fix adapter outputs for dynamic metadata routes (#91680)
test: migrate webdriver callers to next.browser (#93941)
[Breaking] Update Dynamic APIs to be async (#68812)
Return 200 for client-handled Server Action redirects (#96310)
feat(cache-components): require non-empty generateStaticParams for validation (#85135)
Fix unset crossOrigin in Turbopack manifests (#97164)
Remove redundant React dependency declarations in test (#66530)
test: Improve test assertions to prepare for dpl query string (#90463)
Prevent unhandled rejections when a "use cache" cache handler errors (#95985)
fix: handle file:// URLs from import.meta.resolve in cache handler path (fixes #73796) (#90370)
refactor: added more strict app segment config parsing (#70479)
Turbopack: improve issue printing colors (#94858)
tests: Assert dpl query string in all tests for Turbopack (#90592)
fix fetch lock not being consistently released (#74623)
[test] Move off of as much `url.parse` as possible (#87286)
Fix: CSS asset URLs broken with `experimental.inlineCss` (#85140)
refactor: added more strict app segment config validation (#70480)
Change names of logged times (#90688)
Fix missing incremental cache in middleware unstable_cache (#89980)
[fragment-scroll] Stop blurring on navigations (#96113)
fix app-prefetch-false-loading deploy test (#66811)
test: migrate rest async api usage in tests (#71663)
[ci] Share a single browser instance across all test suites in a single job (#95589)
[BREAKING] Support ESLint v9 in plugin, config and `next lint` (#71218)
Persist `'use cache: private'` entries in dev (#94694)
Turbopack: error when importing Typescript in node_modules (#83990)
Route Handlers: Fix devRequestTimingInternalsEnd and Turbopack server HMR (#92271)
Include additional prerender metadata about build-time routes (#96080)
Strengthen _rsc cache-busting param (#92755)
Convert tests using createNext -> nextTestSetup (#93767)
test: Improve immutable static asset tests (#95349)
Fix race when navigating Back before hydration (#96252)
enable experimental.routerBfCache behind cacheComponents (#84923)
Fix basePath fallback parameter parsing (#95966)
Fix debug channel not closing on the client with Node streams (#94268)
Match peer dependencies in rsc-binary tests (#69515)
Mark bun builtin modules as external (fixes #75220) (#77616)
Gate partial fallback shell upgrades behind `partialPrefetching` for `next start` (#96297)
[cache components]: move flag out of experimental (#85035)
[test] Use `--debug-build-paths` instead of `NEXT_PRIVATE_APP_PATHS` (#85504)
instant: prompts on all fix cards, [group]-tagged CLI bullets, new docs slugs (#94017)
Remove legacy PPR code paths (#96868)
[Cache Components] Exclude dynamic params from prerenders when no generateStaticParams values is provided (#95872)
Turbopack: show specific SWC error messages as error titles (#91022)
Enforce route segment configs on metadata routes under Cache Components (#94962)
instant: enable navigation validation by default (#94312)
Reapply "Stabilize catchError and retry by removing unstable_ prefix" (#94623)
fix(turbopack): allow page segments that don't alter the path after catchall (#67713)
fix(turbopack): correctly handle catchall specificity (#68800)
chore: update prettier to 3.2.5 (#65092)
fix: force module format for virtual client-proxy file (#74162)
Turbopack: remove deployment id suffix from client reference manifest chunks (#88741)
test: Add tests for client reference side effects (#92774)
Fix: server-patch retry preserves push/replace intent of suspended transitions (#90533)
Turbopack Build: Fix conflicting page error (#79634)
Add regression test for conflicting search and route params (#81249)
Convert more tests from createNext -> nextTestSetup (#93799)
[turbopack] Strip leading BOM before parsing CSS (#96678)
test: fix missing await in css-chunking test (#96725)
Tweak flakey metadata error tests (#66060)
Turbopack: Disable LightningCSS MediaRangeSyntax feature (#85086)
Turbopack: fix data-url CSS Module client references (#78428)
add support for cssmodules-pure-no-check to allow global CSS features like View Transitions (#77321)
Turbopack: fix module rules for `.module.scss` (#82570)
Upgrade lightningcss, disable grid prefixing (#65986)
Turbopack: replace cssChunking graph `moduleFactorCost` with `weightDistribution` (#95088)
Turbopack: switch from immutable token to path prefix (#92164)
Disable `colormin` feature from `cssnano` (#53393)
Remove devCacheControlNoCache experimental option (hard-code no-cache) (#91503)
skip invalid deploy tests (#67563)
Update default error pages (#90469)
Remove the experimental.devtoolSegmentExplorer flag (#83384)
[DevOverlay] fix: shadow host element affects parent's display (#70676)
[test] Move all files to .ts (1/6) (#85634)
Preload all chunks for next/dynamic in SSR (#65486)
[test] Include error code in Redbox snapshot (#90497)
Turbopack: Enable tree-shaking for dynamic imports with destructuring (#89683)
Use `registerClientReference` for ESM client component modules (#71968)
Append sitemap extension and optimize imafe metadata static generation (#66477)
ignore fully dynamic requests on server side (#62949)
Turbopack: don't treat metadata routes as RSC (#82911)
Rename process.env.TURBOPACK to process.env.IS_TURBOPACK_TEST for tests (#77892)
Do not warn during build for supported modules in the Edge runtime (#74752)
fix(turbopack): Apply `import_map` option of `swc_emotion` correctly (#71776)
Render a code frame for build errors thrown collecting page data (#95270)
Upgrade React from `d9158919-20260615` to `ad78e251-20260616` (#94867)
Handle empty ESM client modules (#72404)
Fix support for `custom-media-queries` in LightningCSS (#95689)
Honor the route-level `expire` value with blocking revalidation (#93211)
Fix: External redirect swallowed by Next.js (#87121)
Fix: revert the bad node binary handling (#71723)
Fix `isHeadPartial` when hydrating from a static fallback shell (#96400)
Add experimental_gesturePush to App Router (#88776)
fix: handling of falsey values in error boundaries (#93134)
[strict-route-types] Enforce common React Component return types in App Router (#87389)
feat(after): stabilize `unstable_after` (#73605)
[test] revert config change in hello-world test (#82173)
Ensure constructor for `useSearchParams` can be imported for `instanceof` checks (#87269)
Move Ready in time before handler initialization (#88235)
fix(turbopack): support `type: 'text'` in rules, and error on binding imports of non-ESM modules (#96558)
Fix an issue in how css references are collected under `next build --turbopack` (#81704)
Turbopack: fix client reference order for shared references (#84760)
Require Cache Components for Instant Navigation testing (#96745)
Unify allow-runtime with Partial Prefetching (#96106)
[refactor] Prepare dev validation for running on a worker thread (#96151)
Stabilize `unstable_instant` (#94578)
Insights: use a single Learn more link in console errors (#95967)
Allow literal exports in `'use cache'` files (#97181)
Interception routes match from nested route navigation (#84898)
[test] Regenerate tsconfig.json files (#85515)
Fixed interception on a catch-all route (#72902)
Convert test/integration to isolated tests (#93247)
[ci] Pin typescript version in tests (#95619)
Stabilize `unstable_io` (#93621)
Turbopack: Fix next/font preloading for page.mdx (#88848)
Add a fallback for the mdx-components file (#59693)
Turbopack: lazy require metadata and handle TLA (#91705)
Update `@vercel/og` and `satori` vendors (#90933)
[test] separate metadata font tests (#82746)
fix: support multiple icon formats with same base name (icon.png + icon.svg) (#89504)
Allow SSR to finish microtasky work before flushing (#86311)
fix(Turbopack): Address duplicated metadata image modules when they are impored (#82367)
chore: upgrade rspack 1.6.0 (#84210)
fix: allow custom app routes for metadata conventions (#71153)
Fix metadata title dropped on soft navigation with Cache Components (#95315)
[test] Add test for static metadata files and `generateStaticParams` (#93465)
Remove 'silence this warning' from instant validation fix output (#95187)
Fix HTML-limited bot matching in prerender bypass rules (#96584)
[metadata] only render one metadata outlet (#80146)
test: expand Cache Components metadata streaming coverage (#96366)
[test] Resolve `elementByCSS` and `waitForElementByCSS` once visible (#83301)
[test] Regenerate checked-in tsconfig.json files (#92455)
Turbopack: Fix sizes=any with icon.svg metadata file (#78663)
test: break down metadata test suite into smaller ones (#67018)
Cleanup non-generic assertions in our deploy test suite (#90894)
Fix: Middleware does not match when use :path (#72056)
Fix warning in new apps caused by incorrect image dimensions (#93826)
Revert "[metadata] use https protocol for schema urls" (#81934)
Fix: Optimistic routing bugs leading to repeated prefetch loops (#97128)
[test] Stop using `baseUrl` (#92469)
Turbopack: Allow fully dynamic import() in node_modules (#79153)
fix: preserve repeated search params in client page segment cache keys (#94863)
Improve root detection to handle worktrees, more workspaces & stray lockfiles (#96159)
[fragment-scroll] Remove `config.experimental.appNewScrollHandler` (#95602)
Handle next/navigation import in middleware (#66175)
fix: don't drop queued actions when navigating (#75362)
[test] Compile the middleware redirect routes up front in dev (#97190)
fix: request APIs in promises passed to after() in actions/handlers (#94964)
test: stabilize after() deploy revalidation checks (#96428)
test: fix next-after-app-static (#94195)
fix: after(callback) called after response end (#94974)
Improve RSC error messages (#90702)
Exclude `next-js` condition from middleware, proxy, and instrumentation (#85321)
Allow `next.config.mts` for Node.js native TS resolver (#83556)
feat: use Node.js native TS resolver for `next.config.ts` (#83240)
Resolve `compilerOptions.paths` in tsconfigs without `compilerOptions.baseUrl` (#92277)
Avoid deprecated TS node10 moduleResolution defaults (#91847)
[next/image] Only fire `onError` once (#93209)
[Breaking] Require `images.localPatterns` for query in Image src (#84406)
test: Fix immutable static asset deployment tests (#95550)
fix(next): add cross origin in react dom preload (#67423)
Fix no-double-tailwind-execution flake (#86549)
Update no duplicate headers case (#70381)
Fix Turbopack worker_threads URL resolution (#93432)
Encode the cache item name built by `unstable_cache` (#96937)
Encode non-ASCII characters in cache tags at construction (#93601)
Fix non-RSC router prefetch handling (#94553)
Fix adapter outputs for not-found routes when used with cache components (#96390)
Return plain text 404 for non-document requests to unknown paths (#95930)
test: Fix immutable static asset deployment tests for real (#95600)
[test] Enable scroll related tests in Cache Component tests (#83245)
Bump @swc/helpers (#96720)
[otel] fix missing http.route attribute (#90832)
test: skip hybrid not-found coverage for the legacy builder (#96534)
Hard-navigate to app routes shadowed by a pages dynamic route (#95185)
Unify appShells flag with Partial Prefetching (#95415)
feat: added error when there's missing root params in generateStaticParams (#73933)
Add validation for missing default.js in parallel routes (#84702)
Re-implement hmr-refresh in terms of refresh (#87135)
Update failing e2e deploy tests (#84395)
Fix interception routes with trailing slash configuration (#86787)
Prefetch links nearest the top of the document first (#95393)
Fix build crash with parallel routes and root-level dynamic parameters (#85074)
fix: correct appPaths sort order for parallel routes with route groups (#91160)
parallel routes: support multi-slot layouts (#61115)
Exclude static metadata and viewport from error recovery prerender when cache-components is enabled (#94134)
[strict-route-types] Typecheck App Router page props (#87386)
Re-fetch dynamic content on navigation with `partialPrefetching` enabled (#94655)
Stabilize export const prefetch (#94571)
Handle pnpm-workspace.yaml while searching for monorepo root (#74818)
Stream Cache Components dev render instead of restarting on cache miss (#94457)
Enable rootParams by default (#93863)
Use Cache Components as the internal PPR signal (#96827)
Add a `regions` property to the Functions Config Manifest file (#80104)
Remove implicit Partial Prefetching opt-in from `instant` (#96539)
Ensure client reference manifest is traced for global not found page (#74919)
fix: uri encode dynamic routes in dev (#71588)
Restore the live `headers()` view of the incoming request (#97166)
fix: Rename proxy.js to middleware.js in NFT file (#86214)
Only allow node runtime in proxy (#85139)
[Turbopack] place style imports in RSC in the client context (#69952)
Preserve basePath in redirect destinations (#95608)
Fix: Update the URL when a client navigation redirects to a rewritten route (#95207)
Fix client reference access causing metadata missing (#70732)
Build: Share StaticWorker between static check and static generation (#85860)
Support `compiler.removeConsole` with Turbopack (#67849)
Turbopack: Skip manifest loading in server when using route modules (#82903)
fix(turbopack): preserve resolveExtensions priority in read_matches fast path (#91856)
remove BrowserInterface (#78308)
fully remove clientSegmentCache flag (#85541)
[cache components] stabilize cacheLife profiles (#85050)
Use rewritten pathname for implicit cache tags (#88732)
[turbopack / next.js] Add an end-to-end test for new root detection (#96544)
Apply sourcemaps by default during prerender in `next build` (#93280)
[breaking]: enable router scroll optimization by default (#84102)
Rename experimental.useExperimentalReact to blockingSSR (#94869)
[ci]: pin styled-components version in tests (#90194)
Cherry-pick ghsa commits to canary (#93614)
Preserve per-segment prefetching after dynamic navigation (#96583)
Support type cast expressions in page static info extractor (#92837)
Remove automatic linting from build (#83136)
Add tests for self-importing packages (#68070)
Avoid mutating `req.headers` when stripping internal headers (#95116)
Fix server action edge redirect with middleware rewrite (#67148)
fix multi-level redirect in server actions (#72770)
ci: Enable `experimental.isolatedDevBuild` for `test-experimental-dev` (#84099)
[sourcemaps] Use file: sourcemaps for Turbopack to improve dev performance (#95946)
test: Disable service worker deploy tests for now (#95570)
[turbopack] Output service workers to `/_next/static/` (#95554)
[turbopack] Simplify service worker e2e tests (#95672)
[metadata] not add suffix to sitemap.xml in group routes (#83486)
fix: fully static pages should emit & serve static rsc payloads (#89202)
Embed static sibling info in route tree (#88692)
Turbopack: allow resolving TS files in tailwind config (#90046)
Support temporary references for server actions (#71230)
[test] Unflake `third-parties/basic` (#83385)
fix(build): don't block SSG on telemetry flush, add persistence spans to trace-build (#91335)
Update flakey E2E deploy tests (#89792)
Enable React's default Transition indicator behind a flag (#86000)
Turbopack: add support for contentType condition for webpack loaders (#89156)
feat(turbopack): add LocalPathOrProjectPath PostCSS config resolution (#91338)
Fix test after CI switched to pnpm 10 (#76615)
Enable TypeScript CLI by default (#96497)
typegen: default to Turbopack (#94952)
[CLI] Exit non-zero with a clear message when next typegen fails (#94241)
disable deploy tests for incompatible suites (#66776)
Preserve `__NEXT_ERROR_CODE` across the `/_error` page handoff (#93183)
Consolidate unhandled rejection logging into a single listener (#95999)
Turbopack: Allow distdir in project directory, outside of the application (#80683)
[Cache] Make caches error if called after prerender aborts (#96426)
Reuse completed cache entries for the rest of a request (#96727)
Fix stale dev `'use cache'` for cookieless requests and route handlers (#96022)
[test] Unflake `use-cache-default-profile-expire-zero` tests (#97250)
Normalize and validate `expire` and `revalidate` values to handle Infinity and surface mistakes early (#95493)
Fix cache warming and static params for metadata images with top-level await (#95790)
Improve deduping of concurrent `'use cache'` invocations (#91830)
Make `cacheMaxMemorySize: 0` and custom cache handlers fast in dev (#94784)
fix: replace docs/canary links with stable docs paths in error messages (#92528)
Derive foreground cache revalidation from the consumer (#96731)
Enable prefetchInlining by default (#92863)
bfcacheId: Opt out of state preservation (#93633)
Remove inert experimental.viewTransition flag (#96098)
Turbopack: absolute requests in webpack loader (#84575)
Turbopack: fix error reporting with crashing webpack loaders (#93926)
Turbopack: Add importModule() support to webpack loaders (#89630)
TURBOPACK: alias resolve lost query param (#88891)
Turbopack: Fix setting existing env var in webpack loader (#78962)
fix(next): properly pass layout-level `maxDuration` config to the children page segments on build (#68793)
[turbopack] Add e2e test that uses component chunks + workers (#96556)
Fix Turbopack worker URL context lookup (#96307)
[turbopack] Add `turbopack_ecmascript` and `turbopack_wasm`'s embeded FS to `internal_assets_conditions` (#96600)
Fix Turbopack worker chunk loading with asset prefix (#96636)