v12.1.1
Core Changes
- refactor: move
HtmlContext
: #34482 - rsc: clean client buffer cache after flushed: #34475
- Ensure config's
experimental
field exists: #34500 - Only log experiments warning if user actually opted in to an experiment(s): #34413
- Add
unstable_useFlushEffects
hook: #34117 - fix: mock image path as
next/image
expects it: #34350 - fix process polyfill on middleware: #34426
- Ensure workers are not left open: #34503
- Leverage existing component checking warning for streaming: #34526
- build(next-swc): linux glibc compatible issue: #34481
- Fix
next/image
incorrectly warning forposition: absolute
parent: #34551 - Remove
useMaybeDeferContent
hook: #34506 - Allow reading request bodies in middlewares (#34294): #34519
- Update swc crates: #34491
- feat(react-dev-overlay): export getErrorByType and add preventDisplay prop: #34237
- Improve
next/image
warnings to avoid printing more than once: #34562 - Support trailingSlash in middleware SSR: #34544
- Update to latest version of jscodeshift: #34563
- Don't import internally from types in
next-env.d.ts
: #34394 - Improve type imports in server/render and optimize the Edge SSR loader: #34552
- remove commons chunk config: #34445
- Add
cargo clippy
andcargo fmt
to CI: #34625 - Fix rsc bootstrap buffer missing in the future renders: #34631
- fix: match
redirect
andrewrite
destination types: #34617 - fix: make sure
image-config.ts
gets transpiled to ES5: #34677 - Normalize image optimizer error status codes: #34699
- Fix CSS Loader Detection False Positives: #34584
- Upgrade @napi-rs/triples to support android arm platform: #34752
- Add proper headers to responses in web server: #34723
- produce source maps for middlewares: #34409
- Reduce the size of web server: #34767
- collect telemetry for ESLint rules: #34564
- Refactor entries generation in hot-reloader: #34733
- Integrate tsec into the linting process: #33746
- Add API config to allow disabling response size warning: #34700
- fix(#34030): ignore non-checkable jsx spread attribute: #34473
- fix eslint-plugin-react version to avoid jsx-key error: #34800
- fix: #34711 ensure distDir inside project folder: #34795
- Update to ncc dev overlay during build instead of pre-compile: #34813
- Add warning for Yarn PnP v3 with Node.js < 16.14: #34818
- lock eslint-config-next dependencies: #34823
- Clean-up error when starting next with non-existent dir: #34830
- Ensure unstable_revalidate does not error from notFound: true: #34826
- Update eslint-plugin-react to latest version: #34819
- Add CLI command typo detection: #34836
- Fix flight loader for shared components: #34692
- refactor: re-use existed escapeRegex: #34470
- Fix only byte stream writing is allowed in CF workers: #34893
- Only warn styles and scripts under next head in concurrent mode: #34897
- Fix image optimization invalid internal upstream image: #34899
- feat(next-swc): Update swc: #34878
- Simplify next-flight-server-loader: #34902
- Ensure non-matching API routes can be rewritten: #33966
- Optimize component type filters: #34941
- Expose WASM bindings in Middleware: #34437
- Provide page runtime parsing utils: #34922
- Refactor export marks of server components: #34945
- Fix
next/image
noscript when blur and priority: #34973 - Fix named export missing from client components: #34974
- Adopt react 18 rc1: #34972
- Fix typescript 4.6.2 randomUUID(): #34976
- Update ISR error handling: #34931
- Handle de-duping revalidations in minimal mode: #34935
- feat: allow dotenv default expansion: #34765
- Support colons in Middleware NextResponse.rewrite path: #32543
- Generate static html for bots: #35004
- Enable import assertion syntax parsing: #33750
- Split up & tweak
next/client
initialization: #33838 - Normalize root path according to trailingSlash option in default next/image loader #21337: #22453
- Fix animated png bypass from Image Optimization API: #35120
- watch node_modules: #35140
- feat(trace): postprocess trace reporter for datadog: #35032
- [next] Fix to not call middleware with shallow push, fix middleware call witβ¦: #35047
- fix post request hangs when no body is consumed on middleware: #35131
- fix: hard-navigate when preflight request fails: #35145
- Per-page runtime: #35011
- Delay prefix flushing: #35170
- Change to loadBindings for swc parse: #35171
- Ensure mjs files are transformed with jest: #34698
- Disable the functions manifest plugin: #35155
- Adopt react 18 rc2: #35161
- Convert server.js to module.exports: #35181
- Fix
next/image
when src is webp but browser doesnt support it: #35190 - [Fix] Adds try/catch to gracefully handle performance observer exception: #35202
- Render resolved streaming content for static render result: #35221
- feat(next-swc): Update crates: #35133
- Ensure that pages manifest contains pages of both runtimes: #35243
- chore: upgrade
cssnano-simple
: #35258 - fix(Script): allow passing defer=false to Script component: #34850
- Remove the special
_document-concurrent
component: #35242 - Adds web worker support to
<Script />
using Partytown: #34244 - Bump styled-jsx to 5.0.1: #35290
- Add new 'raw' image layout: #34339
- SWC emotion transform plugin: #34687
- enhance: cover re-exported gsp cases for runtime fallback: #35326
- Make concurrent features independent from the global runtime option: #35245
- Update comments for the web server: #35366
- Add libc fields to Linux platform packages: #35354
- Drop browser field for edge runtime: #35335
- Make router able to navigate between rsc pages: #35344
- Revert "Make concurrent features independent from the global runtime option": #35405
- Update on-demand ISR to skip fetch locally: #35386
- Use hasConcurrentFeatures instead of reactRoot as the condition of Fizz: #35407
- Abstract out stream related utils from render and web/utils: #35372
- Keep fouc tags for streaming: #35417
- Fix: change the timing for clearing the inlined data buffer: #35413
- fix(document): accepts nodearray for head's children: #35424
- Update to latest @vercel/nft and leverage new reason types: #35446
- Add test to ensure
fs.readFile()
works with Output File Tracing: #35338 - feat(next-swc): embed target triple string: #35416
- Typo in URL removed: #35472
- feat(telemetry): report swc target triple to telemetry: #35420
- Update trace ignore check to check reasons correctly: #35511
- SWC import modularization plugin: #34969
- Reduce hello-world middleware bundle size from 128k to 88k: #35512
- Update next/link error when no children are provided: #35453
- Normalize ssgCacheKey for /index with minimalMode de-duping: #35536
- Merge rsc queries handling: #35545
- Upgrade react-server-dom-webpack: #35524
- Fix styled transform in next-swc/emotion: #35527
- Fix
next info
accidentally printing stderr: #35556 - chore: replace deprecated String.prototype.substr(): #35421
- test: warn on substr() usage: #35499
Documentation Changes
- Update docs for image optimization swr: #34483
- Fix 404 links in React 18 docs: #34486
- Fix snippet language sh -> bash: #34487
- Add info on rendering an error page when using getServerSideProps: #34488
- Update details about Cache Control Headers: #34416
- Update wrong code snippet: #34520
- fix: change showcase url: #34590
- Add note about public folder with standalone mode: #34646
- added styled-components & replay support in swc: #34647
- Provide more detail to static folder placement: #34651
- Update testing.md: #34661
- Remove page-specific font example from docs: #34694
- Fix typo in documentation: #34734
- Improve rewrites documentation: #34725
- Add Error Handling document: #34329
- Update inlineCode reference: #34817
- Add redirect for error doc rename: #34791
- Fix issues in getStaticPaths docs: #34840
- Improve TypeScript documentation.: #34690
- Fix broken link in react-18 streaming docs.: #34884
- Add missing closing parenthesis in docs: #34924
- [examples] Update styled-components to use SWC: #34770
- feat: support
pnpm
withcreate-next-app
: #34947 - Fix missing parenthesis for link in docs: #35090
- Update shallow routing caveat: #35052
- Add
next/image
docs section for animated images: #35123 - Add info on
context.ctx
argument in _app docs page: #35303 - Encourage installation of sass as a devDep: #35323
- [docs] Update docs about Cache-Control default headers.: #35336
- [docs] Update going to production docs around caching headers: #35374
- Update
next/image
docs for width & height: #35188 - Added note about why Next.js used 307 and 308 status codes: #35325
- Fix typo in getServerSideProps doc page: #35467
- clarify use of Script: #35491
- Server component docs use wrong next version: #35313
- Add link for revalidate from notFound section: #35553
- Fix typo in docs: #35561
Example Changes
- Convert custom-server-hapi Example to Typescript: #34507
- Updated head, img -> Image, type { NextPage } as default next-app: #34513
- removing redundant/unnecessary lines as these are defaults: #34587
- Sentry example: add js types to SentryWebpackPluginOptions: #28726
- Add .git to .dockerignore in docker examples: #34628
- Updates with-supertokens example: #34679
- Convert
with-redis
example to TypeScript: #34720 - Update MySQL example.: #34784
- Some minor adjustments to MySQL example.: #34792
- docs: update CMS examples to use the new tw grid gaps: #34917
- docs: update cms-sanity example: #34898
- Update cms-wordpress example: #34944
- Update supertokens demo app: #35007
- fix(examples/with-docker): add npm comment for yarn build: #35040
- [examples] Add Tina CMS blog starter: #35045
- [examples] Use more semantic footer element: #35033
- Re-add _document to with-styled-components example: #35163
- docs(examples): add on-demand ISR to cms-sanity: #35220
- examples: update instructions for create-strapi-app: #35288
- Remove with-custom-reverse-proxy example: #35340
- Change README structure in examples: #35349
- use initial state for rootReducer in with-redux-saga example: #35406
Misc Changes
- chore: clarify GitHub action (bot) comments: #34546
- Add test for multiple cookies coming from middleware: #34465
- Simplify .env.local gitignores: #34471
- Clarify test types during scaffolding: #34638
- Ensure rust-check skips on docs only change: #34648
- Update CODEOWNERS to include renamed files: #34686
- Lock yarn pnp version in tests: #34688
- Fix create-next-app Multiple calls to the function 'makeDir': #34669
- chore: Move test for streaming and RSC: #34724
- Fix react-dom type error in CNA typescript template: #34623
- Update test concurrency for CI: #34827
- Update to use whatwg validator for test: #34891
- dep: upgrade @swc/core v1.2.148 , @swc/cli v0.1.55: #35054
- Run tests against node LTS (v16) and current (v17): #35414
- test: add document head multi child prod test: #35426
- Use check on prerender test assertion: #35482
Credits
Huge thanks to @styfle, @shuding, @balazsorban44, @huozhi, @amandeepmittal, @bennettdams, @sophiabits, @MaedahBatool, @devknoll, @nkzawa, @kinetifex, @elrumordelaluz, @Brooooooklyn, @mitchell-abbott, @Schniz, @natew, @nrjdalal, @dephraiim, @lfades, @sokra, @AmirhBeigi, @marshalcode, @timneutkens, @mxgnus-de, @MoltenCoffee, @jonespen, @NoamNol, @khuezy, @rishabhpoddar, @kara, @reubn, @luciy, @Pauldic, @brodyd795, @eungyeole, @kyliau, @Nutlope, @jgoping, @crice88, @leerob, @SukkaW, @thibautsabot, @sincovschi, @ahollenbach, @kolarski, @AFusco, @stipsan, @sisp, @kdy1, @lydiahallie, @Skagoo, @ijjk, @klarstrup, @midgleyc, @perkinsjr, @bnoguchi, @fhinkel, @fliptheweb, @kwonoj, @leyanlo, @ericponto, @huzaifarif, @chemicalkosek, @chentsulin, @housseindjirdeh, @bernard-lin, @atcastle, @kylemh, @samsisle, @Gomurmamma, @molebox, @xairoo, @nelodev, @SevlaMare, @lukahartwig, @losfair, @cramforce, @hiro0218, and @CommanderRoot for helping!