Core Changes
- Remove .next/traces directory as it's not used: #28728
- Update css-loader runtime to use compiled files: #28735
- Fix typings of dynamic suspense: #28740
- Ensure build trace handles mixed modules: #28770
- [ESLint Plugin] Updates
no-document-import-in-page
rule to usepath
separators: #28768 - feat: Adding generic typing for previewData: #28668
- Add
RenderResult
class: #28776 - Reuse warning from postcss-loader: #28727
- mini-css-extract-plugin should not bundle webpack code: #28822
- update webpack to 5.52.0: #28771
- Add tracing for css-loader: #28756
- Simplify static + dynamic HTML generation: #28793
- [ESLint] Support single-file linting in
next lint
(necessary forlint-staged
): #28042 - Webpack rule to block importing images into _document: #28475
- Remove outdated webpack conformance experiment: #28846
- Remove unused profiler: #28844
- Remove unused dependencies: #28876
- Update concurrent tests and enable experimental streaming: #28892
- Fix/swc minify: #28898
- Ensure timed out prefetches are cleaned up correctly: #28899
- Simplify
RenderResult
: #28900 - fix: should allow optional properties for
images
option: #28709 - Adopt context based experimental styled-jsx version: #28646
- Fix ensurePage race condition: #28939
- Support node-sass@6: #28710
- Update swc: #28946
- Update swc in next-swc: #28970
- Ensure cache-control is correct for notFound: true with revalidate: #28973
- Update gSSP type to support props as a promise: #28999
- Use
Writable
instead ofObservable
: #29007 - Pass code as buffer to swc minify: #29009
- Deprecate webpack 4 support: #28840
- Make next-ssg optional: #28862
next/dynamic
: AcceptpagesDir
: #29055- Update test set-up to leverage playwright when able to: #28634
- Make traces in development reliable: #28990
- Fix webpack version and safari test and update compiled: #29059
- Throw error if res is accessed after gSSP returns: #29010
- Fix/upload binary artifact: #29069
- Add crossOrigin type to the NextConfig: #29033
- reload the page to show 404 when receiving
invalid
event from on-demand-entries: #29074 - Add stats config for SWC: #28883
- Fix host segment replacing for custom routes: #29090
- Add/styled jsx swc: #29005
- Update styled-jsx: #29103
- Remove inert font tag in font optimization: #28869
- Remove log from failing to parse source map: #29118
- Development tracing improvements: #29076
- Update trace ignores for next import: #29119
- Fix partial one off global selectors: #29128
- Update next-swc binaries: #29132
- Fix transform of ` in styled-jsx: #29136
- Update next-swc binaries: #29140
- Ensure Next.js dist files are commonjs compatible with swcLoader enabled: #29138
- next-ssg: Don't inject
__N_SSP
for files without server props.: #29141 - Build next-swc binaries: #29144
- Add crawler blocking for fallback: true: #29121
- upgrade to typescript 4.4.3: #29112
- Fix native unit tests: #29146
- Ensure traces are flushed in development when there is an error: #29149
- Add name to invalidated span: #29170
- suggest incremental typescript for typescript >= 4.4.2: #29169
- make code consistent with babel externals: #28867
- add support for new URL(): #28940
- Fix bug where returning
{ notFound: true }
from GSP brokenext export
: #24481 - Fix #11107 - don't prefetch preloaded modules: #22818
- Fix array query value has matching: #29216
- Remove useless getComputedStyle call.: #27969
- Preserve
next-env.d.ts
line ending: #28100 - fix compilation span relationship: #29174
- Add spans for hot-reloader start: #29251
- Fix dynamic style issue: #29163
- Ensure trailingSlash is correct for index with query: #29217
- Migrate prerender tests to new set-up: #29245
- Fix resolving href with query and matching as: #29246
- upgrade webpack to 5.53.0: #29168
- Fix basePath: false not being honored for client-side redirect: #29235
- Fix default static /500 with i18n: #29250
- Remove docker usage for running development tests: #29264
- Remove collect-dependencies span as it balloons trace size: #29266
- Initial work for using webpack 5 typings: #29105
- Rename experimental tracing to
outputFileTracing
: #29267 - Add internal mode for debugging Next.js core webpack: #29254
- Fix invalid project dir casing breaking Next.js on Windows: #29205
- Fix add-entry span duration: #29288
- Update to latest @vercel/nft and use async fs methods: #29341
- feat: allow setting custom tsconfig file: #28104
- Ensure static image works correctly with basePath: #29307
- Use webpack resolve with nft: #29342
- Experimental: hook version of reportWebVitals: #28769
- enable unsafeCache for better incremental build performance: #29175
- upgrade webpack and enable experiments.cacheUnaffected: #29369
- Fix
onLoadingComplete()
callback when image src is Data URL: #29367 - Additional bench tracing improvements: #29325
- Remove inline-source-map for Windows: #28893
- Ensure blurDataURL is correct in dev with basePath: #29436
- Update swc : #29460
- Build next-swc binaries: #29465
- Fix SWC unit test: #29466
- Ensure initial imports are included in traces correctly: #29437
- Rename
onReadyToStream
toonCompleteShell
: #29442 - Update css parser: #29484
- update webpack: #29469
- Parallelize
requirePage
when loading components: #29494 - Invalidate webpack cache when swc options are enabled/disabled: #29497
- Update output tracing resolving: #29473
- Remove error that is too strict in next/dynamic swc transform: #29511
- make client and server independent for on-demand-entries: #29518
- Update resolve options for nft: #29524
- Fix root global jsx style: #29505
- Fix custom app file regex: #29525
- Upgrade swc deps: #29531
- Ensure all package.json files are traced correctly: #29539
- Add page mapping for Server Components: #29508
- Fix ie11 from untranspiled vitals: #29532
- Update version @babel/runtime: #29458
- upgrade webpack: #29549
- Include param vars in nearest scope bindings: #29536
- Update
swc_css_parser
: #29572 - Upgrade swc deps: #29620
- fixes #29553: #29611
- Add trace file for "next dev": #29633
- Update to latest version of node-file-trace: #29617
- Update swc crates: #29643
- Fix missing trace items and migrate required files test: #29649
- Create TelemetryPlugin for collecting feature usage metrics: #29145
- Fix grammar in conflicting paths error: #29658
- update webpack: #29644
- Bump squoosh to the latest version: #29506
- Remove webpack 4 support: #29660
- Ensure conditional resolve alias does not affect server: #29673
- Chore/update swc: #29675
- Remove isWebpack5 checks: #29677
- chore: Update swc: #29689
- fix: Prevent image redirection when trailingSlash is set: #29640
- fix(styled-jsx): Use correct SyntaxContext for identifiers: #29705
- Use correct arg for require.resolveWeak: #29719
- update webpack: #29708
- update webpack: #29738
- serverOnlyChanges should be determined when both compilers are done: #29757
- Hmr DX improvements: #29753
- Add trace span for module readFile: #29759
- Fix bug with getServerSideProps when swcLoader is enabled: #29760
- feat(build/swc): Add debug utilities: #29730
- Fix bugs of
styled-jsx
andswc
: #29774 - Fix swc tests: #29776
- Fix
styled-jsx
: Don't drop extra selectors: #29791 - show partial compiled message and correct module count: #29795
- avoid using absolute paths in import/require: #29797
- Update swc: #29798
- Pass sourcemap when swcMinify is enabled: #29794
- hide build error when returning to old build: #29813
- only schedule pages for disposing and dispose on next compile: #29816
- reduce default maxInactiveAge to 15s: #29817
- add summary logging option: #29814
- handle new hmr connection as heartbeat signal: #29818
- allow to reload disposed client pages: #29815
- Collect feature usage for optimizeCss: #29828
- Add support for AVIF to
next/image
: #29683 - Update swc: #29843
- Avoid TypeError when comparing path param: #29821
- feat(jsconfig-paths-plugin): Resolve paths synchronously: #29467
- Update swc: #29866
- Update swc: #29881
- Added more examples to Response Helpers page: #29462
- update webpack: #29870
- Add experimental option to enable fullySpecified: #29880
- only listen to drain even once: #29885
- Update swc & Improve CI time: #29884
- Enable esmExternals by default: #29878
- Refactor Document to prep for classic streaming: #29834
- Update to latest @vercel/nft: #29902
- Remove unused options from swc-loader: #29907
- Update swc: #29913
- upgrade strip-ansi in react-dev-overlay: #29906
- Add revalidate to the GetStaticPropsResult: #29919
- Migrate server-sent events HMR connection to WebSocket: #29903
- Upate swc to allow line comments in css: #29943
- fix Log Typo: #29937
- Bump "engines" to node >= 12.22.0: #29949
- Update webpack target to node12.22: #29953
- Add ESLint docs URLs: #29645
- Use import() to load next.config.js: #29935
- Fix config import on Windows and disable test in failing envs: #29971
- Update swc: #29969
- Fix identifier handling of
styled-jsx
: #29986 - Update swc to fix minifier: #29989
- Remove obsolete prerender indicator code: #30004
- Update swc: #30019
- Update swc: #30029
- Compile native-url and node-libs-browser: #30032
- Update swc to fix regenerator issue: #30035
- Update tracing to collect from reasons: #29975
- Fix eslint loading on Windows: #30040
- Fix
next/image
when parent is<p>
: #30041 - Fix trace when initial file is also child: #30048
- Update react 18 streaming api: #30038
- Update manifest to include notFound revalidate info: #30046
- Sanitize the path to the user config before importing: #30003
- Update swc: #30055
- Update swc: #30057
- Update swc: #30066
- Prevent inherited styles on
next/image
wrapper or sizer: #30064 - update webpack: #30073
- Print error when
images.loader
is assigned butimages.path
is not: #30080 - Update swc: #30086
- Enable fast refresh transform when using SWC: #30106
- Implement Middleware RFC: #30081
- Enable shared worker pool by default: #30110
- use xxhash64 by default: #30095
- [ESLint] Adds temporary error message for ESLint v8: #30113
- improve production error message printing: #30065
- Simplify export statement: #30015
- automatically enable managed paths for all node_modules: #30089
- Skip minifying middleware: #30122
- Fix creation of styled jsx ids: #30124
- Update swc: #30127
- avoid showing empty
Import trace for requested module
: #30130 - fix pageKey and compiling output for on-demand-entries: #30116
- add experimental.urlImports option: #30079
- Update swc: #30141
- Ensure we dont attempt minifying middleware-chunks: #30147
- Update middleware chunk handling: #30151
- Ensure error message prints
next.config.mjs
: #30152 - Use default
next.config.js
if not found: #30155 - Add warning when using middleware: #30160
- test and fix error reporting for stack overflows and other fatal errors: #30169
- [ESLint] Add add
next/script
support forno-unwanted-polyfillio
rule: #28944 - make static image import output path consistent with other media: #30168
- De-dupe inflight getStaticProps requests: #30125
- Update include/exclude handling for output tracing: #30184
- make import trace consistent between runtime and build: #30175
- Add middlewareCount info to build optimized: #30185
- Change AVIF to opt-in via configuration: #30180
- Add page config swc transform: #30183
- Move tracing next-server to next build: #30190
- Update to latest caniuse-lite version: #30194
- Remove
all: initial
in favor of specific styles onnext/image
: #30191 - Upgrade styled-jsx for react 18 improvement: #30179
- Enable SWC by default when there is no custom Babel config: #29811
- Enable outputFileTracing by default: #30202
- Add isDevfallback to cache name to create a separate cache for the fallback compiler: #30227
- Use SWC for middleware: #30209
- Update swc: #30230
- Add deprecation note for target: #30200
- Add initial documentation for output file tracing: #30199
- partially migrate to webpack 5 types: #30189
- hide next-middleware-loader in import trace: #30243
- fix some labels for middleware stuff: #30241
- Use
Log.warn()
instead ofconsole.warn()
in next-server: #30240 - test, fix and document all possible import types for URL imports: #30165
- Ensure isServer is true when compiling middleware: #30242
- Add initial test trace outputs: #30246
- Move swcMinify out of experimental: #29810
- Add events polyfill: #30256
- next-swc: Support more platforms: #30254
- Update error for failing to load SWC bindings: #30269
- update webpack: #30268
- fix middleware on windows: #30253
- Add warning for large amount of page data: #29956
- Add warning when LCP image is missing
priority
prop: #30221 - New Middleware API signature: #30282
- Fix trace case with tsconfig/jsconfig baseUrl: #30286
- Warn when mutating res if not streaming: #30284
- Chore/publish all swc: #30289
- Update swc-minify-enabled link: #30290
- Fix middleware header propagation: #30288
- Move outputFileTracing config up: #30295
- Track usage of swc features: #30297
- Ensure null bytes in resolved path are handled: #30313
- Improve deprecation errors for new middleware API: #30316
Documentation Changes
- Update docs to clarify that image imports are static: #28744
- Add note to Gatsby migration guide about using
next/image
with custom loaders.: #28805 - doc: fix typo: #28817
- (docs) Remove duplicate comma: #28850
- (docs) Add
permanent
property in redirect object: #28852 - Update
next/link
API docs to mention a11y and ESLint rule.: #28841 - name should be key: #28917
- chore(examples): switch to Script component on the google analytics example: #27674
- Fixed issue with grammar: #28964
- Fixed typo: #28989
- Fix minor typo in no-img-element.md: #29027
- Add more examples of static generation to docs page.: #29052
- Add note about using Sharp for next/image to deployment docs.: #29067
- Add client-side debugging instructions: #28815
- Use new @clerk/nextjs package in with-clerk example, update Next.js authentication docs: #28906
- Update router.prefetch section to clarify it supports dynamic routes: #29070
- Ensure manifests check has correct exit code on fail: #29183
- Fix minor typos: #29188
- Update Gatsby migration guide to use image imports.: #29178
- Ensure href/as behavior points to correct docs: #29270
- Update invalid-getstaticpaths-value.md: #29397
- Update imperative routing docs to have better a11y: #29382
- Add Stitches example to CSS-in-JS docs: #29498
- Update getServerSideProps docs with req.cookie note: #29457
- docs: Link to getInitialProps on Custom
App
page: #29567 - Update permanent redirect field documentation: #29557
- Use npx create-next-app@latest instead of the version that is installed: #29595
- docs: Clarify locale properties on
context
object in data-fetching: #29566 - docs: remove
this
usage from function component: #29596 - Overhaul image component documentation: #29186
- Document i18n routing with dynamic routes: #29632
- Fix debugging docs markdown lang: #29674
- Grammatical fixes: #29676
- Fix typo in image optimization documentation: #29685
- Fixed method for removing class: #29735
- Fix test running command in testing.md: #29778
- docs(testing): added Playwright guide: #29832
- Add Scss variables section to Built-in CSS Support document: #29822
- Update testing based on Failed to parse src "test-file-stub" on `next…: #29039
- Update docs for image caching behavior: #29895
- Update typo in response helpers doc: #29899
- Update minimum Node version in Getting Started: #29952
- docs: Remove invalid link "Glamor": #29982
- Update docs for Prerender Error message: #30044
- Update documentation to fix github cache key: #29983
- Update eslint.md with instructions for installing Prettier plugin dependency: #29764
- Add image example with background color using blurDataURL: #30111
- docs: remove mention of experimental pageDataCollectionTimeout: #30107
- Update upgrade docs: #30265
- Add minimum Node.js version to upgrading guide: #30274
- Fix typo of upgrading: #30276
- Add note about improved CSS parser for styled-jsx to upgrading guide: #30280
- Add "priority" section to Image Optimization doc: #30218
- Add more docs.: #30320
Example Changes
- with-stitches example fixes #28650: #28652
- Updates @react-three/drei version and other dependencies.: #28755
- fixes with-typescript-graphql: unable to resolve dependency tree: #28637
- Examples Prepr CMS update: #28871
- Fix Typo in "with-eslint" Example docs: #28601
- Updates supertokens-node dependency version: #28916
- Fix falsy values not being returned in post fields: #29011
- [Examples] Updates
with-google-tag-manager
example to use<Script>
component: #29061 - Update Redux example to use Toolkit + update dependencies.: #29104
- fix(with-sentry example): Small tweaks: #28359
- bugfix: remark/webpack conflict: #29180
- Fix dependency in
api-routes
example: #29181 - Fix type-check in Temporal example: #28546
- Update with-react-intl example: #28336
- switch to Script component on the facebook pixel example: #29192
- Update with-segment-analytics example to use next/script component: #29282
- fix: cover image redirect to undefined: #29311
- Update Prisma example: #29459
- Fixed MongoParseError: #29277
- Add id to inline gtag script: #29530
- Updates supertokens-auth-react dependency version: #29547
- Update examples/cms-contentful: #29641
- Adding Formspree contact-form example: #29314
- Rename
utils
tolib
: #29651 - Update typescript version: #29854
- Update mongoose and swr and remove no longer needed connection options: #29934
- Fixed Favicons URL mismatch across the project in [examples/blog-starter] : #29990
- Updating with-supertokens example: #29876
- [examples] Fix deploy button URL in
with-sentry
example: #30112 - Update image component example to use AVIF: #30294
Misc Changes
- Bug fix for lint rule: #28677
- router-is-ready test. Clean up unused vars.: #28723
- Fix
next lint
no-document-import-in-page on Windows: #28745 - Fix lerna publish for automation token: #28750
- Update github labeler with
eslint-plugin-next
: #28751 - Update to new npm publish token: #28772
- Change create-next-app getting started text in TypeScript template: #28718
- exclude test files from copy in trace-next-server: #28819
- Add line break to typescript template: #28760
- Update precompiled
- Upgrade upload-artifact action
- Trim large test output to not exceed limit: #28881
- Fix create-next-app tests from example change: #28972
- Update test workflows for mac/react: #29060
- Remove extra macOS test workflow: #29064
- Fix minor typo in index.test.js: #29065
- Ensure browser instances are not re-created un-necessarily: #29091
- Merge branch 'canary' of github.com:vercel/next.js into canary
- Update swc dependencies: #29151
- Workflow improvements: #29155
- Temporarily disable unreliable tests: #29249
- Ensure we only ignore .git cache for check-precompiled: #29274
- Ensure actions/cache paths match for restoring: #29275
- Update webpack5 import when using local webpack version
- Update font-optimization test snapshot: #29305
- fix(create-next-app): starter styling errors: #28096
- Remove unsafeCache from benchmark + use cross-env for benchmark: #29425
- Update test timings endpoint: #29443
- fix test/integration/app-document-remove-hmr flake: #29486
- Update stats-config for release stats: #29654
- Add automated bench script for nested-deps: #29583
- Exclude SWC test input/output JS from eslint checks
- Exclude SWC test input/output JS from prettier checks
- Exclude bench/nested-deps from prettier check
- avoid running multiple test from the same directory in parallel: #29830
- Add rich to codeowners for docs: #29848
- Pin create-next-app to eslint@v7: #29837
- make test directories more unique: #29864
- Add native build caching to main workflow also: #29920
- add trace-to-tree script to allow to visualize traces on the commandline: #29942
- Update labeler.json
- Fix repo-setup when .DS_Store exists: #30119
- fix(docs): Clarify contribution docs about linting: #30123
- improve CI stability: #30171
- Update removeHash handling for stats-app: #30235
- upload test traces for integration tests too: #30260
- Update test-pnp tests: #30273
- Add necessary workflow job dependencies: #30291
Credits
Huge thanks to @prateekbh, @andersonleite, @huozhi, @styfle, @mrmckeb, @housseindjirdeh, @buraksakalli, @espipj, @devknoll, @sokra, @leerob, @royal, @Perry-Olsson, @well-balanced, @AlexVilchis, @RobEasthope, @ijjk, @msp5382, @tim-hanssen, @appsplash99, @padmaia, @scottrepreneur, @smakosh, @catnose99, @adrienharnay, @kdy1, @rishabhpoddar, @donsn, @volcareso, @kara, @oiva, @KonstHardy, @timneutkens, @sinchang, @janicklas-ralph, @TyMick, @lobsterkatie, @rezathematic, @colinclerk, @x4th, @fracture91, @lorensr, @Sheraff, @HaNdTriX, @emilio, @oluan, @ddzieduch, @Dev-CasperTheGhost, @ctjlewis, @thien-do, @AryanBeezadhur, @Bundy-Mundi, @shuding, @kylemh, @vitorbal, @zNeb, @jacksonhardaker, @micro-chipset, @arthurdenner, @whitep4nth3r, @kyliau, @colevscode, @atcastle, @velocity23, @jonowu, @Blevs, @GustavoEdinger, @harryheman, @kriswuollett, @mxschmitt, @PhattOZ, @finn-orsini, @oste, @genetschneider, @jantimon, @molebox, @angelopoole, @thibautsabot, @AlfonzAlfonz, @mohamedbhy, @matamatanot, @christianvuerings, @pgrodrigues, @kimizuy, @paul-creates, @TimBarley, @georgegach, @ionut-botizan, @javivelasco, @rojserbest, and @ka2n for helping!