Releases: vercel/next.js
v15.0.0
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
- 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): extract buildId into environment: #65426
- improve versioned content m...
v15.0.0-canary.205
v15.0.0-canary.204
Core Changes
- chore(next-codemod): use "confirm" for consistent prompt: #71551
Misc Changes
- chore(docs): add docs for input image formats with next/image: #71565
Credits
Huge thanks to @devjiwonchoi and @styfle for helping!
v15.0.0-canary.203
Core Changes
- [dynamicIO] warn for disallowed dynamic in dev: #71526
- Format generated cacheLife() types as overloads with each value: #71544
- Ensure receiveExpiredTags is called per-request: #71543
- feat: dedupe consecutive captured console errors: #71483
- [Turbopack] add more tracing to dirty flagging: #71482
- improve typescript autocomplete for cacheLife: #71400
- Ensure workers are cleaned up always: #71564
Misc Changes
- DX improvements for
"use cache"
functions: #71518 - chore(docs): remove recommendation about using
priority
overloading=eager
withnext/image
: #71562
Credits
Huge thanks to @gnoff, @sebmarkbage, @ijjk, @huozhi, @sokra, @unstubbable, @lubieowoce, and @styfle for helping!
v15.0.0-canary.202
v15.0.0-canary.201
Core Changes
- Ensure custom cache handlers are traced: #71521
- Update React to bf7e210c: #71524
- Update React (again): #71528
- Remove double decoding of encrypted closures : #71527
- codemod: fix props types modify for type alias: #71537
- next-upgrade: Stop prompting for React 19 upgrade on pure App Router apps: #71486
- Ensure only one tags manifest is leveraged across handlers: #71522
Misc Changes
Credits
Huge thanks to @serhalp, @ijjk, @Juneezee, @sebmarkbage, @huozhi, and @eps1lon for helping!
v15.0.0-canary.200
Core Changes
- [dynamicIO] prospectively render SSR phase if needed: #71506
- [dynamicIO] show dev & build warnings when using incompatible segment configs: #71500
- Check tag staleness against the timestamp of the entry: #71520
- codemod: modify props types when arg is prop: #71516
- sync access warnings for Request APIs should include a stack: #71519
Misc Changes
- Transform
"use cache"
functions exported via export default expression: #71512 - Allow
"use cache"
functions in server action module (client layer): #71511
Credits
Huge thanks to @unstubbable, @gnoff, @ztanner, @sebmarkbage, and @huozhi for helping!
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!