์ผ๋ง์ release ๋ nextjs 13 version
์์ ์ฃผ๋ชฉํ ๋งํ feature๋ค์ ์์๋ณด์.
app/ ๋๋ ํ ๋ฆฌ (beta)
app/
๋๋ ํ ๋ฆฌ๋ฅผ ๋์
ํ์ฌ nextjs์ routing
, layout
๊ฒฝํ์ ๊ฐ์ ํ์๋ค.

app/
์ดํ ๋๋ ํ ๋ฆฌ๋ layout
๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ, ์ฌ๋ฌ ํ์ด์ง๊ฐ ๊ณตํต์ ์ธ ์ปดํฌ๋ํธ๋ฅผ ๊ณต์ ํด ๋ ๋๋ง์ ์ต์ ํ ์ํค๊ณ ์ปดํฌ๋ํธ๊ฐ ์ํธ์์ฉ์ ๊ตฌํํ ์ ์๋ค. app/
๋๋ ํ ๋ฆฌ์์ routing์ ํ๋ ค๋ฉด page.js
๋ผ๋ ํ์ผ์ด ํ์ํ๋ค.
// before
// pages/index.js
// index route (/)
export default function Page() {
return <h1>Next.js 13 version release!</h1>;
}
// after (`nextjs 13`)
// app/page.js
// index route (/)
export default function Page() {
return <h1>Next.js 13 version release!</h1>;
}
๊ทธ๋ฐ ๋ค์ ํ์ผ๊ตฌ์กฐ๋ฅผ ํตํด layout
์ ์ ์ํ ์ ์๋ค.
export default function RootLayout({ children }) {
return (
<html>
<head>
<title>Title of nextjs root layout</title>
</head>
<body>
<h2>This is the shared title component</h2>
{children}
</body>
</html>
);
}
์ด๋ ๊ฒ ์ค์ ํด๋๋ฉด app/
์ดํ์ ๋ชจ๋ route
์ RootLayout
์ด ๋
ธ์ถ๋๋ค
React server component
์ด์ ๋ฒ์ ์์๋ server side
์์ ๋ฐ์ดํฐ๋ฅผ fetching ํ ๋, getServerSideProps
๋ getStaticProps
๋ฅผ ์ฌ์ฉํ์ง๋ง, nextjs 13๋ถํฐ๋ ์ด ๋ฌธ๋ฒ๋ค์ ์ฌ์ฉํ์ง ์๋๋ค. data fetch ํจ์๋ฅผ ์ ์ธํ ๋ค์ use()
์์ ๋ฃ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
import { use } from 'react';
export default function Page() {
const data = use(getData());
return <div>{ data }</div>
}
export async function getData() {
const res = await fetch(`https://dummyapi.com`, {
cache: 'force-cache' // similar to getStaticProps
// cache: 'no-store' // similar to getServerSideProps
});
return await res.json();
}
TurboPack

webpack
์ ํ์์ ํ์ธ Turbopack
์ด ๋ฐํ๋์๋ค. Turbopack์ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฒฝํ์ ์ํด ์๋ก์ด ์ฆ๋ถ ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์๋ค๊ณ ํ๋ค.
๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์์๋ Vite
๋ณด๋ค 10๋ฐฐ, Webpack
๋ณด๋ค 700๋ฐฐ ๋น ๋ฅธ ์
๋ฐ์ดํธ๋ฅผ ๋ณด์ฌ์ค๋ค. ๋ ํฐ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ์ฐจ์ด๊ฐ ๋ ํฌ๋ฉฐ Vite
๋ณด๋ค 20๋ฐฐ ๋น ๋ฅธ ๊ฒฝ์ฐ๋ ์๋ค. 3,000๊ฐ์ ๋ชจ๋์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ Turbopack
์ ๋ถํ
ํ๋ ๋ฐ 1.8์ด๊ฐ ๊ฑธ๋ฆฌ๋ ๋ฐ๋ฉด Vite
๋ 11.4์ด๊ฐ ๊ฑธ๋ฆฐ๋ค๊ณ ํ๋ค.
์์ธํ ๋ด์ฉ์ turbopack ๊ณต์ ํํ์ด์ง์์ ํ์ธํด๋ณผ ์ ์๋ค.

next/link ๊ฐ์
์ด์ next/link
์ฌ์ฉ์ <a>
ํ๊ทธ๋ฅผ ํฌํจํ ํ์๊ฐ ์๋ค
@next/font (beta)
@next/font
๋ฅผ ์ค์นํด์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก google font๋ฅผ ์ฌ์ฉํ ์ ์๋ค. CSS ๋ฐ font ํ์ผ์ build์ ๋ค์ด๋ก๋ ๋๋ฉฐ ๋๋จธ์ง static asset๊ณผ ํจ๊ป ํธ์คํ
๋๋ค. ๋ธ๋ผ์ฐ์ ์์ google๋ก ์์ฒญ์ ๋ณด๋ด์ง ์๋๊ฒ์ด๋ค. ๋ํ default ๊ฐ์ผ๋ก css size-adjust ์์ฑ์ ์ฌ์ฉํ์ฌ layout shift๋ฅผ ๋ฐฉ์งํด์ค๋ค.
Opengraph image generation
์ด๋ฒ ๋ฒ์ ์์ ๋์ social card๋ฅผ ์๋ก ์์ฑํด์ฃผ๋ library์ธ @vercel/og
๋ฅผ ๊ณต๊ฐํ์๋ค. ์ด ๋ฐฉ์์ ๊ธฐ์กด์ ์๋ฃจ์
๋ณด๋ค 5๋ฐฐ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค.
๊ทธ์ธ์ ๋ ์์ธํ ๋ด์ฉ์ Next.JS ๊ณต์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.