2022년 10월 26일 수요일, Next.js Conf에서 Next.js 13을 발표했다.
아직 Beta지만, 미리 Next.js 공식문서를 보면서 Next.js 13에서 추가된 점을 정리해보았다.
Update 된 Nextjs를 사용하고 싶다면
npm i next@latest react@latest react-dom@latest eslint-config-next@latest
이렇게 설치해주면 된다.
기존의 Next.js에서는 Automatic Routing을 사용할 때, pages 디렉토리 안에 파일을 생성하여 별도의 라우터 없이도 애플리케이션 내부에서 즉시 경로를 생성할 수 있었다. 하지만, Next.js 13버전부터는 app/이라는 새로운 디렉토리가 등장하여 라우팅 및 레이아웃 기능을 개선하였다.
Next JS 13 에서는 이를 기본 번들러로 사용할예정
기존에 지원하던 next/image 강화.
줄어든 client-side JavaScript
스타일링과 설정이 더 편해짐
alt 태그가 필수
네이티브한 lazy 로딩은 hydartion이 필요없기 때문에 더 빠름
CLS(Cumulative Layout Shift) 방지 : 자동으로 width 랑 height 정보를 받아와서, CLS 를 막아준다. 로컬 이미지 파일이 아닌 remote URL 기반이라면, 반드시 width와 height을 명시해주어야 한다.
Priority : LCP(Largest Contentful Paint) 를 줄일 수 있게 도와주는 기능. next js 가 화면을 로딩할 때 해당 이미지 렌더링에 우선순위를 줌.
새로운 폰트 시스템을 제공한다.
@next/font 는 구글 폰트를 기본적으로 지원해서 CSS와 font는 빌드 타임에 정적 자원으로 불러와브라우저에서는 요청을 보내지 않음.
커스텀 폰트도 지원을 하여, 이 또한 캐싱과 preloading을 지원.
Link 컴퍼넌트를 사용할 때, 드디어 a 태그를 껴넣지 않아도 된다고 함.
오히려, 이제는 더이상 a 태그를 Link 안에 포함시킬 수 없음.
OG 태그용 이미지 generation도 공식적으로 지원. vercel에서 만든 @vercel/og 라는 모듈을 사용하면 된다.
위와 같이 og 이미지를 반환하는 용도의 next js api 파일을 @vercel/og 모듈 내부의 ImageResponse를 이용해서 구현할 수 있다.
해당 og 이미지를 적용할 next JS 페이지 컴퍼넌트로 가서 og:image를 갖는 메타 태그를 생성해준다. 그리고, 위에 og image를 반환하는 api path를 content 속성에 넣어주면 끝.
next js 에서 지원하는 SSR data fetching 방식이 바뀐다.
getServersideProps, getStaticProps, getInitialProps 모두 next js 가 SSR 과 CSR 을 자유롭게 넘나드면서 사용할 수 있게 해주는 키 포인트였지만 방식이 바뀜
기존에는 useEffect 에서 data를 fetch해 오고, 그 데이터를 특정 state에 저장하는 방식을 많이 사용했지만 그냥 컴퍼넌트 로직에서 바로 await으로 data 를 가져오고 있고, 화면에 data의 내용을 그리는데 SSR단계에서 fetch가 이루어진다.
https://nextjs.org/blog/next-13
https://turbo.build/pack/docs/features
https://beta.nextjs.org/docs/data-fetching/fundamentals
https://programming119.tistory.com/273