Skip to content

Releases: vercel/next.js

v15.0.0-canary.199

19 Oct 15:31
Compare
Choose a tag to compare
v15.0.0-canary.199 Pre-release
Pre-release

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

18 Oct 23:33
Compare
Choose a tag to compare
v15.0.0-canary.198 Pre-release
Pre-release

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 to bf7e210c-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

17 Oct 23:32
Compare
Choose a tag to compare
v15.0.0-canary.197 Pre-release
Pre-release

Core Changes

  • Upgrade React from cd22717c-20241013 to 77b637d6-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 in errors 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

16 Oct 23:33
Compare
Choose a tag to compare
v15.0.0-canary.196 Pre-release
Pre-release

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

15 Oct 19:42
Compare
Choose a tag to compare

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 respect root argument: #64418
  • fix(next): Metadata.openGraph values not resolving basic values when type 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 with useLightningcss: #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 to v0.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 of sharp as optional dependency: #63321
  • fix: Workaround acorn bug/version issue by using SWC: #65021
  • build: Update @swc/core to v1.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 and bundlePagesExternals: #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...
Read more

v15.0.0-canary.195

15 Oct 23:33
Compare
Choose a tag to compare
v15.0.0-canary.195 Pre-release
Pre-release

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

15 Oct 18:59
Compare
Choose a tag to compare
v15.0.0-canary.194 Pre-release
Pre-release

Core Changes

  • [after] fix waitUntil in edge runtime sandbox (pages/api): #71309
  • codemod: override and install: #71318

Misc Changes

  • docs: update unstable_after docs: #71313
  • docs: small updates for canary docs: #71317

Credits

Huge thanks to @lubieowoce, @leerob, and @huozhi for helping!

v15.0.0-canary.193

15 Oct 16:03
Compare
Choose a tag to compare
v15.0.0-canary.193 Pre-release
Pre-release

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

15 Oct 15:21
Compare
Choose a tag to compare
v15.0.0-canary.192 Pre-release
Pre-release

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

14 Oct 23:38
Compare
Choose a tag to compare
v15.0.0-canary.191 Pre-release
Pre-release

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!