Version 11

Sürüm 11'e yükseltmek için aşağıdaki komutu çalıştırın:

Terminal
npm i next@11 react@17 react-dom@17
Terminal
yarn add next@11 react@17 react-dom@17
Terminal
pnpm up next@11 react@17 react-dom@17
Terminal
bun add next@11 react@17 react-dom@17

Bilmekte fayda var: TypeScript kullanıyorsanız, @types/react ve @types/react-dom adreslerini de ilgili sürümlerine yükselttiğinizden emin olun.

Webpack 5

Webpack 5 artık tüm Next.js uygulamaları için varsayılandır. Özel bir webpack yapılandırmanız yoksa, uygulamanız zaten webpack 5 kullanıyor demektir. Özel bir webpack yapılandırmanız varsa, yükseltme kılavuzu için Next.js webpack 5 belgelerine başvurabilirsiniz.

Cleaning the distDir is now a default

Derleme çıktı dizini (varsayılan olarak .next) artık Next.js önbellekleri dışında varsayılan olarak temizlenmektedir. Daha fazla bilgi için temizleme distDir RFC adresine başvurabilirsiniz.

Uygulamanız daha önce bu davranışa güveniyorsa, next.config.js adresine cleanDistDir: false bayrağını ekleyerek yeni varsayılan davranışı devre dışı bırakabilirsiniz.

PORT is now supported for next dev and next start

Next.js 11, uygulamanın üzerinde çalıştığı bağlantı noktasını ayarlamak için PORT ortam değişkenini destekler. -p /--port adreslerinin kullanılması hala tavsiye edilmektedir ancak -p adresini herhangi bir şekilde kullanmanız yasaklanmışsa artık alternatif olarak PORT adresini kullanabilirsiniz:

Örnek:

PORT=4000 next start

next.config.js customization to import images

Next.js 11, next/image ile statik görüntü içe aktarımlarını destekler. Bu yeni özellik, görüntü içe aktarımlarını işleyebilmeye dayanır. Daha önce next-images veya next-optimized-images paketlerini eklediyseniz, next/image kullanarak yeni yerleşik desteğe geçebilir veya özelliği devre dışı bırakabilirsiniz:

next.config.js
module.exports = {
  images: {
    disableStaticImages: true,
  },
}

Remove super.componentDidCatch() from pages/_app.js

next/app bileşeninin componentDidCatch adresi Next.js 9'da artık gerekli olmadığı için kullanımdan kaldırılmıştır ve o zamandan beri kullanılmamaktadır. Next.js 11'de ise kaldırılmıştır.

pages/_app.js adresinizin özel bir componentDidCatch yöntemi varsa, artık gerekli olmadığından super.componentDidCatch adresini kaldırabilirsiniz.

Remove Container from pages/_app.js

Bu dışa aktarım, artık gerekli olmadığı için Next.js 9'da kullanımdan kaldırılmıştır ve o zamandan beri geliştirme sırasında bir uyarı ile kullanılmamaktadır. Next.js 11'de kaldırılmıştır.

pages/_app.js adresiniz Container adresini next/app adresinden içe aktarıyorsa, Container adresini kaldırıldığı gibi kaldırabilirsiniz. Belgelerde daha fazla bilgi edinin.

Remove props.url usage from page components

Bu özellik Next.js 4'te kullanımdan kaldırılmıştı ve o zamandan beri geliştirme sırasında bir uyarı gösteriyordu. getStaticProps / getServerSideProps yöntemlerinin kullanılmaya başlanmasıyla birlikte bu yöntemler props.url kullanımına zaten izin vermiyordu. Next.js 11'de ise tamamen kaldırıldı.

Belgelerden daha fazla bilgi edinebilirsiniz.

Remove unsized property on next/image

next/image üzerindeki unsized özelliği Next.js 10.0.1'de kullanımdan kaldırılmıştır. Bunun yerine layout="fill" kullanabilirsiniz. Next.js 11'de unsized kaldırıldı.

Remove modules property on next/dynamic

next/dynamic için modules ve render seçenekleri Next.js 9.5'te kullanımdan kaldırılmıştır. Bu, next/dynamic API'sini React.lazy'a daha yakın hale getirmek için yapıldı. Next.js 11'de modules ve render seçenekleri kaldırıldı.

Bu seçenekten Next.js 8'den beri belgelerde bahsedilmemektedir, bu nedenle uygulamanızın bunu kullanıyor olma olasılığı daha düşüktür.

Uygulamanız modules ve render kullanıyorsa belgelere başvurabilirsiniz.

Remove Head.rewind

Head.rewind Next.js 9.5'ten beri kullanılmamaktadır, Next.js 11'de kaldırılmıştır. Head.rewind kullanımınızı güvenle kaldırabilirsiniz.

Moment.js locales excluded by default

Moment.js varsayılan olarak birçok yerel ayar için çeviriler içerir. Next.js artık Moment.js kullanan uygulamaların paket boyutunu optimize etmek için bu yerelleri varsayılan olarak otomatik olarak hariç tutuyor.

Belirli bir yerel ayarı yüklemek için bu kod parçacığını kullanın:

import moment from 'moment'
import 'moment/locale/ja'
 
moment.locale('ja')

Yeni davranışı istemiyorsanız excludeDefaultMomentLocales: false adresini next.config.js adresine ekleyerek bu yeni varsayılandan vazgeçebilirsiniz, Moment.js'nin boyutunu önemli ölçüde azalttığı için bu yeni optimizasyonu devre dışı bırakmamanızın şiddetle tavsiye edildiğini unutmayın.

Update usage of router.events

Render sırasında router.events adresine erişiyorsanız, Next.js 11'de router.events artık ön render sırasında sağlanmamaktadır. useEffect adresinden router.events adresine eriştiğinizden emin olun:

useEffect(() => {
  const handleRouteChange = (url, { shallow }) => {
    console.log(
      `App is changing to ${url} ${
        shallow ? 'with' : 'without'
      } shallow routing`
    )
  }
 
  router.events.on('routeChangeStart', handleRouteChange)
 
  // If the component is unmounted, unsubscribe
  // from the event with the `off` method:
  return () => {
    router.events.off('routeChangeStart', handleRouteChange)
  }
}, [router])

Uygulamanız herkese açık olmayan dahili bir özellik olan router.router.events 'u kullanıyorsa lütfen router.events 'u da kullandığınızdan emin olun.

React 16 to 17

React 17, uzun süredir kullanılan Next.js özelliğini daha geniş React ekosistemine getiren yeni bir JSX Transform 'u tanıttı: JSX kullanırken import React from 'react' adresine girmek zorunda kalmamak. React 17 kullanırken Next.js otomatik olarak yeni dönüşümü kullanacaktır. Bu dönüşüm, önceki Next.js uygulamasının istenmeyen bir yan etkisi olan React değişkenini global yapmaz. React adresini içe aktarmadan yanlışlıkla kullandığınız durumları otomatik olarak düzeltmek için bir codemod mevcuttur.

Çoğu uygulama zaten React'in en son sürümünü kullanıyor, Next.js 11 ile minimum React sürümü 17.0.2'ye güncellendi.

Yükseltmek için aşağıdaki komutu çalıştırabilirsiniz:

npm install react@latest react-dom@latest

Veya yarn adresini kullanarak:

yarn add react@latest react-dom@latest