Releases: vercel/next.js
v15.0.0-canary.199
Core Changes
- Add default cache handlers and update tags manifest handling: #71455
- fix: set aria role on static indicator toast: #71420
- Pass cacheLifeProfiles during static path generation: #71502
- Follow up to default cache handler: #71504
- [dio] Prospective Fallback Render: #71450
- Add handling for custom cache handlers: #71505
- [dynamicIO] Move disallowed dynamic tracking to it's own object: #71499
Misc Changes
- Differentiate error messages in server function transforms: #71491
- Update flakey edge log test: #71501
- Updates workOS auth link for the Next.js : #71335
- docs: Move Static Rendering section into Behavior section: #71353
- Fix handling of local functions in
"use cache"
modules: #71497
Credits
Huge thanks to @unstubbable, @ijjk, @mayur9210, @bangseongbeom, @makepanic, @sebmarkbage, @wyattjoh, and @gnoff for helping!
v15.0.0-canary.198
Core Changes
- enhance: polish hydration error layout to separate error link: #71456
- Let cache body execute with hanging inputs: #71452
- [Turbopack] Perf improvement new backend aggregation: #71356
- Upgrade React from
77b637d6-20241016
tobf7e210c-20241017
: #71436 - next-upgrade: Consistent version comparison to codemod decisions: #71457
- feat: handle server extra attribute hydration error: #71462
- fix: set overlay click outside touchstart handler as passive: #71449
- codemod: only turn function to async when no hooks: #71392
- Turbopack: rscModuleMapping without extra chunks: #71326
- Turbopack: Make UnableToExternalize a warning: #71477
- Turbopack: Improve externals plugin: #71375
- [dynamicIO] refine error messaging for sync API access: #71467
Misc Changes
- [dynamicIO] clarify date docs: #71459
- [Turbopack] Perf improvements new backend: #71249
- [Turbopack] fix unresolvable typo: #71414
- [Turbopack] refactor to allow different key value stores: #71430
- [Turbopack] make snapshot organization more efficient: #71466
- test: fix 18.3 hydration test: #71472
- [Turbopack] update total size when reached: #71354
- [Turbopack] add a startup cache which caches the first 100MB of accessed data: #71431
- [Turbopack] bugfixes persistent caching: #71481
- fix: add test helper back: #71495
- docs(route-groups): add an example about opting loading skeletons to a specific route: #71328
- Assign proper function names to server actions: #71478
Credits
Huge thanks to @huozhi, @sebmarkbage, @gnoff, @sokra, @eps1lon, @mischnic, @wyattjoh, @samcx, and @unstubbable for helping!
v15.0.0-canary.197
Core Changes
- Upgrade React from
cd22717c-20241013
to77b637d6-20241016
: #71391 - next-upgrade: Stop adding empty overrides: #71380
- next-upgrade: Fix React 19 upgrade not being prompted: #71378
- Ensure next-dev-server usages can be found: #71423
- [dynamicIO] Do not warn on arbitrary param access in browser: #71437
- capture console.error into error overlay: #71424
- next-upgrade: Only run React 19 codemods when we upgrade to React 19: #71389
Example Changes
- chore(examples): updated the example of with-goober to utlize the App router: #71349
- chore(examples): updated the example of with-styled-jsx to utilize the App Route: #71290
Misc Changes
- [Turbopack] bugfixes in persistent caching: #71355
- Adjust transforms for cached functions imported from client components: #71401
- refactor(turbopack): Simplify
EcmascriptModulePartAsset::ident
: #71337 - [Turbopack] lmdb Backing Storage performance improvments: #71250
- Turbopack: Support resolving to index.js with fully_specified: #71367
- perf(turbopack): Optimize
last_side_effects
of tree shaking: #71418 - Unflake "cancels stream making progress" test: #71422
- Increase timeout for deploy tests from 120 (default) to 240 seconds: #71428
- Fix flaky app action test, take 2: #71427
- chore(github): update schema from url → html_url: #71429
- Skip unnecessary work in server action transforms for client modules: #71417
- Fix typo in version number: #70680
- test: fix flaky react 18 tests: #71403
- rename:
.md
to.mdx
inerrors
directory: #71240
Credits
Huge thanks to @sokra, @unstubbable, @kdy1, @mischnic, @eps1lon, @samcx, @Manoj-M-S, @whatisagi, @Sam-Phillemon9493, @huozhi, @gnoff, and @lumirlumir for helping!
v15.0.0-canary.196
Core Changes
- next-upgrade: Update all Next.js packages: #71324
- Encode FormData for cache keys using custom algorithm: #71341
- [dynamicIO] Implement a warmup prefetch render in dev: #71278
- fix: stack frame format: #71366
- [dynamicIO] implement dynamic check using AbortSignal: #71344
- fix(after): broken error handling for unstable_after(promise): #71373
- [ppr] Stabilize Partial Prerendering Fallbacks: #71320
- remove NextCacheHandler from request context: #71381
- codemod: fix resolutions in bun: #71362
- next-upgrade: Reduce formatting artifacts when overrides are added: #71379
- next-upgrade: Add testfixtures: #71377
- [dynamicIO] track suspense boundaries only after excluding metadata and other boundaries: #71348
- fix(next/image): improve error message when
src={null}
: #71398 - [ppr] PFPR Debugging Fixes: #71390
- [dynamicIO] track environment on requestStore : #71345
- [dynamicIO] Error in dev when using sync platform APIs that are dynamic : #71346
Misc Changes
- Improve Server Reference transform to support closure variables from nested directives: #71332
- Fix default export and exported function expressions handling of cache directive transform: #71334
- Fix flaky app action test: #71360
- docs: add secured server action ids section: #71368
Credits
Huge thanks to @eps1lon, @sebmarkbage, @gnoff, @shuding, @unstubbable, @huozhi, @lubieowoce, @wyattjoh, and @styfle for helping!
v15.0.0-rc.1
Core Changes
- refactor: next-flight-client-module-loader return conditions: #64348
- Fix Server Action error logs for unhandled POST requests: #64315
- Shared Revalidate Timings: #64370
- Freeze loaded manifests: #64313
- test: skip turbopack build test: #64356
- Fix: css in next/dynamic component in edge runtime: #64382
- Fix more Turbopack build tests: #64384
- use pathToFileUrl to make esm import()s work with absolute windows paths: #64386
- Improve rendering performance: #64408
- Fix the method prop case in Server Actions transform: #64398
- fix(next-lint): update option --report-unused-disable-directives to --report-unused-disable-directives-severity: #64405
- Revert "Fix: css in next/dynamic component in edge runtime": #64442
- default fetchCache to no-store when force-dynamic is set: #64145
- router restore should take priority over pending actions: #64449
- Fix client boundary inheritance for barrel optimization: #64467
- improve turborepo caching: #64493
- Update font data: #64481
- BREAKING CHANGE: remove deprecated analyticsId from config, and the corresponding performance-relayer files and tests: #64199
- feat: strip traceparent header from cachekey: #64499
- Fix typo in dynamic-rendering.ts: #64365
- fix(next): global not-found not working on multi-root layouts: #63053
- chore(next): add keywords on package.json: #64173
- Fix DynamicServerError not being thrown in fetch: #64511
- fix:
lib/helpers/install.ts
to better support pnpm and properly respectroot
argument: #64418 - fix(next):
Metadata.openGraph
values not resolving basic values whentype
is set: #63620 - disable production chunking in dev: #64488
- update turbopack: #64501
- Turbopack: Allow client components to be imported in app routes: #64520
- refactor: remove always truthy flag: #64522
- Turbopack: don’t show long internal stack traces on build errors: #64427
- next/script: Correctly apply async and defer props: #52939
- chore(next/font): update @capsizecss/metrics package: #64528
- feat: add information that revalidate interval is in seconds: #64229
- Typo "Minifer" in config.ts: #64359
- Enhance types for Node and Edge envionments: #64454
- feat: Add a validation for
postcss
withuseLightningcss
: #64379 - fix HMR for cases where chunking changes: #64367
- perf: improve Pages Router server rendering performance: #64461
- Fix cjs client components tree-shaking: #64558
- fix refresh behavior for discarded actions: #64532
- fix: filter out middleware requests in logging: #64549
- chore: remove unused rust dependencies: #62176
- fix(next-swc): correctly set wasm fallback for known target triples: #64567
- memoize layout router context: #64575
- fix incorrect refresh request when basePath is set: #64589
- fix TypeError edge-case for parallel slots rendered multiple times: #64271
- Fix ASL bundling for dynamic css: #64451
- Revert "fix(next): global not-found not working on multi-root layouts": #64601
- chore(test): run related E2E deploy tests on PRs: #63763
- Improve top level await coverage: #64508
- Upgrade typescript to 5.3: #64043
- add pathname normalizer for actions: #64592
- Fix experimental/testmode by removing console.log: #64670
- Don't output .test.ts files in next/font: #63472
- Fix reporting when performance.measure doesn't exist (Edge): #64669
- Reduce amount of data passed to collectBuildTraces: #59665
- fix(next-server): 'quiet' setting delegate for custom server: #64512
- Revert "chore(test): run related E2E deploy tests on PRs": #64682
- update turbopack: #64686
- Fix: resolve mixed re-exports module as cjs: #64681
- Revert "fix TypeError edge-case for parallel slots rendered multiple times": #64690
- Fix typo: 'serverComponentsExtenalPackages' should be 'serverComponentsExternalPackages': #64705
- prevent erroneous route interception during lazy fetch: #64692
- Add
@appsignal/nodejs
to the external packages list: #64503 - fix root page revalidation when redirecting in a server action: #64730
- Clean-up fetch metrics tracking: #64746
- [actions] Enforce body limit using Transform stream: #64694
- Turbopack: Don’t show stack traces for internal modules: #64228
- Reapply "chore(test): run related E2E deploy tests on PRs" (#64682): #64712
- fix(fetch-cache): fix typo: #64786
- fix: remove traceparent from cachekey should not remove traceparent from original object: #64727
- fix interception route rewrite regex not supporting hyphenated segments: #64805
- Disable ncc cache instead of cache cleaning: #64804
- Move next-swc Turborepo config to packages/next-swc: #64789
- build: Update
swc_core
tov0.90.33
: #64553 - Enable loading source maps for Next Server and React: #64527
- fix: mixing namespace import and named import client components: #64809
- fext(next): extend next.config for mdxRs support options: #64801
- skip test_e2e_deploy_related when triggered from a fork: #64893
- fix(fetch-cache): fix additional typo, add type & data validation: #64799
- feat(next-core): support parsing matcher config object: #64678
- Fix mixed exports in server component with barrel optimization: #64894
- fix: improve tsconfig extends checks: #61413
- Fix next/image usage in mdx: #64875
- fix dynamic route interception not working when deployed with middleware: #64923
- feat(turbopack): Handle fragments in requests: #64232
- feat(turbopack): Check for duplicate parallel routes: #64181
- Speed up createNext test suite isolation: #64909
- fix(rewrites): support external rewrite destination: #64943
- Ensure edge prerender-manifest is minimal: #64946
- remove special-cased prefetch kind in dev mode: #64941
- feat: support import attributes: #59480
- NextJS App router: add
isolated-vm
to server-external-packages.json: #64749 - Add
next experimental-test
command: #64352 - Revert "feat: support import attributes": #65001
- NODE_OPTIONS updates: #65006
- Update React from 14898b6a9 to c3048aab4: #64798
- initialize ALS with cookies in middleware: #65008
- feat(next/image)!: remove
squoosh
in favor ofsharp
as optional dependency: #63321 - fix: Workaround acorn bug/version issue by using SWC: #65021
- build: Update
@swc/core
tov1.5.0
: #65022 - Ensure escaped string are parsed in NODE_OPTIONS: #65046
- chore(fetch-cache): remove zod from fetch cache: #65079
- support breadcrumb style catch-all parallel routes: #65063
- Improve initial setup with new App Router TypeScript project: #64826
- Add experimental trace file field: #65071
- Fix playwright config merging for webServer property: #65090
- chore(logging): Disable info logging of critters in production: #62776
- [unstable_cache] Don't track dynamic fetches in an unstable_cache callback: #65010
- fix(page-static-info): refine warning message to emit once: #65091
- update redirect handling on forwarded action requests: #65097
- Tracing: allow opt-in flag to send build traces to url: #65019
- Turbopack: Allow client components from foreign code in app routes: #64751
- fix node.js module warning in middleware: #65112
- Fix: strip _rsc query for client navigation rsc request: #65084
- fix unhandled runtime error when notFound() triggered in generateMetadata w/ parallel routes: #65102
- Use vercel deployment url for metadataBase fallbacks: #65089
- Fix next/dynamic with babel and src dir: #65177
- update turbopack: #65191
- Fix crypto import in edge runtime with Turbopack: #65171
- Resolve global
next
Webpack alias last: #65123 - Add oslo, @node-rs/argon2, and @node-rs/bcrypt to external packages: #65204
- [trace] Reduce the size of .next/trace files: #65101
- Remove extra suspense boundary for default next/dynamic: #64716
- Only apply metadata manifest credentials for preview deployment: #64940
- fix(next): add missing browser.major type: #65185
- Turbopack: rename source map prefix: #64965
- fix(next/image): detect react@19 for
fetchPriority
prop: #65235 - Use POST for invokeIpcMethod: #65238
- fix redirect to url with semicolon: #65165
- Provide non-dynamic segments to catch-all parallel routes: #65233
- Fix an issue parsing catchall params: #65277
- Enable preloading entries by default: #65289
- Trace uploader: add worker spans to allowed events: #65255
- Update font data: #65301
- Update revalidateTag to batch tags in one request: #65296
- Revert "Remove extra suspense boundary for default next/dynamic": #65309
- Emit polyfill-nomodule.js into the build manifest polyfillFiles: #65223
- Remove broken
#[turbo_tasks::value(transparent)]
attributes: #65336 - Delete dead
concatenate_output_assets
function: #65337 - Upgrade Turbopack: #65320
- Pages router: Use attribute-based head children reconciler when
strictNextHead
is enabled: #65408 - Revert "Implement Turbopack trace server bindings": #65419
- use correct not-found component when triggered from a parallel route: #65343
- Implement Turbopack trace server bindings: #65410
- fix(next/image): bypass icns images: #65414
- [PPR] Enable incremental adoption: #63847
- fix: replace deprecated/removed functions in eslint-plugin-next: #64251
- docs: update
revalidatePath
& fix cache debug logic: #65365 - fix(next-core): mark turbopack embed fs to be internals: #65420
- fix(next/image): add missing svg test and refactor missing types: #65345
- build(edge): extract buildId into environment: #64521
- Revert "build(edge): extract buildId into environment": #65425
- fix(next/image): set max url length to 3072: #65457
- Support React 19 in App and Pages router: #65058
- Promote and rename server bundling options
serverComponentsExternalPackages
andbundlePagesExternals
: #65421 - add experimental flag to allow forcing NODE_ENV=development in builds: #65463
- Support esm externals in app router: #65041
- fix: lazy load sharp: #65484
- make sure children is first in loader tree to fix head css bug on client navigation: #65279
- Re-land build(edge): ex...
v15.0.0-canary.195
Core Changes
- Add built-in set of cacheLife profiles: #71322
Misc Changes
- Docs: Tweak staticGeneration page: #71315
- fix: make "Release stats" use the correct artifact name: #71323
- Add Turbopack support for
'use cache'
in route handlers: #71306 - Skip failing stack frames test: #71325
Credits
Huge thanks to @delbaoliveira, @lubieowoce, @unstubbable, and @sebmarkbage for helping!
v15.0.0-canary.194
v15.0.0-canary.193
Core Changes
- Fix symbol for cache: #71270
Misc Changes
- misc: bump playwright: #71312
Credits
Huge thanks to @ijjk and @feedthejim for helping!
v15.0.0-canary.192
Core Changes
- Mark revalidate: 0 on fetch or use cache as never resolving promise in Dynamic I/O: #71285
- static indicator shouldn't show for force-dynamic: #71284
- Implement cacheScope by caching a Promise: #71286
- codemod: update react-is if needed: #71276
- chore: remove experimental warning for next-config-ts: #71297
- fix(next): eslint v9 not picking up config: #71298
- Add support for
'use cache'
in route handlers using the Edge runtime: #71258 - Re-add canary gates for certain experimental features: #71307
Misc Changes
- improve code style of string operation in MiddlewareEndpoint: #70780
- Use integrated terminal as console in vscode launch configs: #71303
Credits
Huge thanks to @sebmarkbage, @ztanner, @sokra, @huozhi, @devjiwonchoi, and @unstubbable for helping!
v15.0.0-canary.191
Core Changes
- Hide stack for bad input by default: #71253
- [after] after is not dynamic anymore: #71231
- codemod: ensure install commands run in terminal: #71255
- codemod: install types into dev dependencies: #71257
- codemod: polish end message: #71259
- chore: Ensure Next.js is built with a specified version of TypeScript: #71256
- more detailed time display: #71248
- Propagate expire/stale times the same way we do with revalidate: #71228
- Update global cache handler ref: #71263
- Handle URL-encoded Turbopack client chunks when resolving source maps: #71274
- [BREAKING] Support ESLint v9 in plugin, config and
next lint
: #71218 - Make cacheLife profiles configurable: #71232
- [dynamicIO] warn in debug mode when prospective renders error: #71266
- codemod: prettier the version logging at the beginning: #71264
- Fix missing key in
LoadingBoundary
: #71222 - codemod: install core deps based on package.json group: #71265
- Set Next-Router-Stale-Time header from collected stale times: #71279
- Respect stale time header in client prefetch cache: #71280
Misc Changes
- perf(turbopack): Do not perform tree shaking for modules without export: #71236
- perf(turbopack): Make
ModuleEvaluation
depend only on the last side effect: #71237 - fix(turbopack): Use module fragment for async module analysis: #71246
- Turbopack: Refactor resolver to accept bool instead of severity: #71254
- [Turbopack] use FxHasher for IndexMap/Set and DashMap: #71251
- test: fix flaky tests for hydration error with 18.3: #71260
- Sync @next/third-parties with React peer versions: #71261
Credits
Huge thanks to @kdy1, @eps1lon, @lubieowoce, @huozhi, @mischnic, @sokra, @sebmarkbage, @ijjk, @unstubbable, @mobeigi, @devjiwonchoi, @gnoff, and @acdlite for helping!