- Vercel: ๋ฐฐํฌ ๋งํฌ
- Figma: ์์ด์ดํ๋ ์
- ์ ์ฅ์์ ๋ฆฌ๋๋ฏธ: GitHub
- ์น ์ฑ๋ฅ ์งํ: Mobile(๋ชจ๋ฐ์ผ), Desktop(๋ฐ์คํฌํ)
- ๊ธฐ์ ์คํ: TypeScript, NEXT.js(app Directory), Emotion, SampleAPIs, NotionAPI, Vercel
- ์ค์ผ๋ ํคUI์ Suspense
- local์์์ hydration์๋ฌ
- ๋ด๊ฐ ๋๋ NEXT.js 13์ app ๋๋ ํฐ๋ฆฌ
- SSR SSG CSR
- next/font, next/image, loading์ปดํฌ๋ํธ
- ๋ง๋ฌด๋ฆฌ
"์ค ์ด๊ฒ ๋๊ฐ ๋ง๋ ๊ฑฐ์? ์ด๊ฑฐ ์ธํฐ๋ท์ด์ผ? ๊ทผ๋ฐ ์์ฆ ์ฑ ๋ง์ด ์ฐ์ง์์?"
์ด์ ์ ์งํํ๋ '๋ค๋ ๋ค๋ ' ํ๋ก์ ํธ๋ฅผ ๋น๊ฐ๋ฐ์ ISTP ์น๊ตฌ์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ๋งจ ์ฒ์์ผ๋ก ๋ค์๋ ๋ง.
์ ๋ณด: ISTP๋ ํ๋ก ํฉํญ๋ฌ ์ด๋ค.
์ ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ฅผ ํตํด ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฌ์ฉ์๊ฐ ๋์ด๋๊ณ ์๋ค๊ณ ์๊ฐ๋๋ ๋งํผ ํญ์ ๋ญ๊ฐ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ ๋ ๊ณ ๋ฏผํ๋๊ฒ ๋ฐ๋ก ๋ชจ๋ฐ์ผ ์ฑ๋ทฐ์ด๋ค.
์ด๋ป๊ฒ ํ๋ฉด ์ฑ๊ณผ ์น, 2๋ง๋ฆฌ์ ํ ๋ผ๋ฅผ ํ๊บผ๋ฒ์ ์ก์ ์ ์์๊น? ํ๋ค๊ฐ ์ด์ '์ค์๋ฏธ' ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์๋ค๊ณผ ๊ณ ์ํ๋ฉฐ ์์ด์ดํ๋ ์์ ์งฐ๋ ๊ธฐ์ต์ ๋์๋ณด๋ฉฐ ์์ด์ด ํ๋ ์์ ์ง์ ์ง๋ณด์๋๊ฒ ์ด ํ๋ก์ ํธ์ ์ฑ๋ทฐ๋ฅผ ๋ง๋ค ๋ ์ ๋ง ํฐ ๋์์ด ๋์๋๊ฒ ๊ฐ๋ค. ์์ด์ดํ๋ ์ ๋ณด๋ฌ๊ฐ๊ธฐ
์์ด์ดํ๋ ์์ ํ ๋๋ก CoffeeList, CoffeeItem๊ณผ ๊ฐ์ ์ปดํฌ๋ํธ๋ค์ด ํ๋ฉด์ ํฌ๊ธฐ์๋ฐ๋ผ ๋ณํ์ํฌ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์๊ฐํด ๋ณผ ์ ์์๊ณ ์ถํ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ ๋ ์์ํ๊ฒ ์งํ๋์๋ค.
์ฒ์์๋ ๊ฐ๋จํ๊ฒ ๊ธ๋ฐฉ ๋๋ฑ๋๋ฑ ๋ง๋ค ์ ์์์ค ์์๋ค. ์คํ์ผ๋ง์ ๋๋ง์น๊ณ ๊ธฐ๋ฅ์ ์ง์ด ๋ฃ๊ธฐ ์ ๊น์งโฆ
๊ทผ๋ฐ ์ ๊ฑธ? ํ ์คํธ๋ฅผ ํด๋ณด๋๋ฐ UX์ ์ผ๋ก ๊ณ ๋ คํด์ผํ ๋ถ๋ถ์ด ์์ฒญ ๋ง์๋ค.
- ๋ซ๊ธฐ ๋ฒํผ ๋๋ ์ ๋ clickEvent
- esc๋ฅผ ๋๋ ์ ๋ ๋ซํ๊ฒ ํ๋ keyPressEvent
- ์ฌ์ด๋๋ฐ ๋ฐ๊นฅ์์(background)๋ฅผ ๋๋ ์ ๋ ๋ซํ๊ฒ ํ๋ clickEvent
- ์ฌ์ด๋๋ฐ ๋ฐ๊นฅ์์๋ค์(์: HeaderLogo) ํด๋ฆญ์ด๋ฒคํธ๊ฐ ๋์ํ์ง ์๊ฒ ํฌ๋ช ํ div์์๋ก ๊ฐ๋ฆฌ๊ธฐ
- ๋ค๋ฅธ ํ์ด์ง๋ก ๋ผ์ฐํ ๋์์ ๋ toggleState false๋ก ์ด๊ธฐํ
๊ทธ๋ฆฌ๊ณ ์ด๋ ์ฌ์ฉ๋๋ sideBarToggleState๋ฅผ ์ ์ฉํ๋ ๋ฐ ์ด์ ์ ๊ตฌํํด ๋์๋ ์ปดํฌ๋ํธ๋ค์ ํ์ ์ต๊ด๋๋ก ๊ณผ๋ํ๊ฒ ๋ถ๋ฆฌํด๋์ ํ์ ์์ฒญ๋ propsDrilling์ด ๋ฐ์ํ๋ค.
์ฌ์ค ํ๋ก์ ํธ ์ด๊ธฐ์ ํ๋ฒ๋ ์์จ๋ณธ Recoil์ ์จ๋ณผ๊น ํ๋ค๊ฐ ์ด๊ฑฐ ํ๋ ๊ด๋ฆฌํ์๊ณ Recoil์ฐ๋๊ฑด ์ข ์๋๋ค ์ถ๊ธฐ๋ํ๊ณ ์ฒ์ ์ฐ๋ ค๊ณ ํ๋ ๋ค๋ฅธ ๊ธฐ์ ์คํ๋ค๋ ์์๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฐํ๊ฒ ํฌ๊ธฐํ๊ณ ์งํํ๋ ์ค ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ฌ์ฉํ๋์ง ๊นจ๋ฌ์๋ค. ๊ทธ๋งํผ ์ดํ์ ๋ค๋ฅธ ํ ์ด ํ๋ก์ ํธ๋ฅผ ํด๋ณธ๋ค๋ฉด recoil์ ๊ผญ ํ์ตํด์ ์ผ๋ฌด์ง๊ฒ ํ์ฉํด ๋ณด๋ คํ๋ค!
์ฌ์ค ๋ ๋๋ง์ ๋ํ ๋ถ๋ถ์ ํฌ๊ฒ ์ ๊ฒฝ์ ์์ฐ๊ณ ์์๋๋ฐ Data-Fetching๊ณผ ๊ด๋ จ๋ docs๋ฅผ ์ฐพ์๋ณด๋ค๊ฐ ์ฐ์ฐํ SSR, SSG์ ๋ํ ๋ด์ฉ๊ณผ ๋ง์ฃผํ๊ฒ ๋์๋ค. ์ฌ์ค ์ด๋ถ๋ถ์ ๋ํ ์๊ฐ์ด ๋๋ฌด๋๋ฌด๋๋ฌด๋๋ ๋ง๊ณ ๊ถ๊ธํ๋ถ๋ถ๋ ์ ๋ง ๋ง์ง๋ง ์ ๋ถ ์ ์ง๋ ๋ชปํ ๊ฒ๊ฐ๋ค. (SSR ์ ์ฉ๊ณผ ํด๋น ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ก์๋ ์๋ฒ ๋ฐ ์ธํ๋ผ๊ตฌ์ถ์ ๋ํ ๋ถ๋ด, ์ด๋ฌํ ํ๋ก์ ํธ ๋น๋์์ devOps ๋ถ์ผ์์ ๊ธฐ์ฌ๋๋ ๋ถ๋ถ์?, SSR ํ๋ ์์ํฌ๊ฐ ์๋ค๋ฉด SSR์ ์ด๋ป๊ฒ ๊ตฌํ๋๋๊ฐ? ISR์ ๋ ๋ญ์ง? ๋ฑ๋ฑ)
์๋ฌดํผโฆ ์ด์ ์ ์งํํ๋ โ๋ค๋ ๋ค๋ โ ํ๋ก์ ํธ์์๋ NEXT.js๋ฅผ ์ผ์ง๋ง SSR์ ๋ํ ๋ถ๋ถ์ ๊ตฌํํ์ง ๋ชปํ์ฌ ํ์๋ค๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ค๊ฐ โ์ด๋ด๊ฑฐ๋ฉด ์ฐ๋ฆฌ๋ ์ NEXT.js๋ฅผ ์ผ๋๊ฐ?โ ์ ๋ํ ์ด์ผ๊ธฐ๋ ์ ๊น ๋์์๊ณ , ์๋นํ ํค๋นํ 3D์ฑ ์ปดํฌ๋ํธ๊น์ง CSR๋ก ํ๋ค๋ณด๋ ๋ก๋ฉ์๊ฐ์ด ๋ค์ ๋๋ฆฐํธ์ด๋ค. ๊ทธ๋์ ์์ฌ์์ด ๋จ๊ธฐ๋ํ๊ณ ํ ์ด ๊ท๋ชจ์ ํ๋ก์ ํธ์์ SSR๊ตฌํ์ ์ฐ์ต ํด๋ณธ๋ค๋ฉด ๋ถ๋ช ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ ์ฉํ๋๋ฐ ํ๋ค์ด ๋ฎ์์ง ์ ์์๊ฒ์ด๋ผ ์๊ฐํ์ฌ ์ด๋ฅผ ๊ตฌํํ๊ธฐ๋ก ๋ง์๋จน์๋ค. ์ด๋ฌํ ๊ณ ๋ฏผ๊ณผ ์ดํ ์ํ์ฐฉ์ค ๋์ SSR๊ณผ SSG๋ฅผ ๊ตฌํํ๊ฒ ๋์๋ค.
SSR์ ๊ดํ ๋ด์ฉ์ ์ฐพ์๋ณด๋ค๊ฐ SSG์ ๋ํ ๊ฐ๋ ๋ ์๊ฒ ๋์๋๋ฐ ์๋นํ ํฅ๋ฏธ๋ก์ ๋ค. ์ด ๋์ ๋น๊ตํด์ ์ค๋ช ํ๋ฉด ๋ญ๊ฐ ๋ ๊ธฐ์ต์๋ ์ค๋๋จ๊ณ ์ฝ๋์ด๋ก ํ์ฌ๊ธ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์๊ฒ ๊ฐ๋ค.
SSR(Server Side Rendering)
- ๋ป: SSR์ ์ง์ญํ๋ฉด ๋ง ๊ทธ๋๋ก ์๋ฒ์์ ๋ ๋๋ง์ ํ๋ค๋ ๋ป์ด๋ค.
- ์น ํ์ด์ง ์์ฑ: ์์ฒญ์ด ๋ค์ด์ฌ๋ ๋ง๋ค ์ค์๊ฐ์ผ๋ก ์นํ์ด์ง๋ฅผ ์์ฑํ๋ค.
- SSG์๋ ๋ค๋ฅด๊ฒ ๋์ ์ด๋ค.
- ํ์ด์ง ์ด๋์๋ง๋ค ์๋ฒ์์ ์นํ์ด์ง๋ฅผ ์์ฑํ๋ฏ๋ก ๊ฒฝ์ฐ์๋ฐ๋ผ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด๊ฑฐ๋ ๋๋ฆฌ๋ค.
- ๋ก๋๋๋ ํ์ด์ง์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ CSR๊ณผ SSR์ ์ ์ ํ๊ฒ ๊ตฌํํ๋๊ฒ ์ข์๊ฒ์ด๋ค.
- ์ด๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๋ฌด์ง์ฑ ๊ตฌํ์ ํ๋ค๋ฉด ์ฌ์ฉ์๋โฆ
- ์๋ฒ์ธก์์ ์นํ์ด์ง๋ฅผ ์์ฑํ๋ฏ๋ก SEO์ ์นํ์ ์ด๋ค
SSG(Static Site Generator)
- ๋ป: ์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ ๋ผ๋ ๋ป์ด๋ค.
- ์น ํ์ด์ง ์์ฑ: ์น ํ์ด์ง๋ฅผ ๋น๋ํ ๋(๋ฐฐํฌ ์์)๋ง ์นํ์ด์ง๋ฅผ ์์ฑ(์ ๋ฐ์ดํธ)ํ๋ค.
- ์์ ์ ์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ฐ๋๋ ๊ณณ์๋ ์ ํฉํ์ง์๋ค.
- ๋น๋ ์ดํ(๋ฐฐํฌ ์ดํ)์ ๋ก๋ฉ์๋๊ฐ ์์ฃผ ๋น ๋ฅด๋ค.
- ์๋ฒ์ธก์์ ์นํ์ด์ง๋ฅผ ์์ฑํ๋ฏ๋ก SEO์ ์นํ์ ์ด๋ค
์ฌ์ค SSR, SSG ๋ ๋ค ๊ตฌํํ๋ ์ค ๊ต์ฅํ ๋ง์ (๊ธ์ ์ ์ธ?)์คํธ๋ ์ค๋ฅผ ๋ฐ์๋ค. ์ด๋ป๊ฒ ํ๋ฉด ๋๊ฐ์ง ๋ชจ๋ ์๋ฏธ์๊ฒ ๊ตฌํํด ๋ผ ์ ์์๊น ๊ณ ๋ฏผ์ ์ฐ์์ด์๋ค.
์ ์ ํ๊ฒ SSR๊ณผ SSG๋ฅผ ๊ตฌํํด์ผ ์ฐธ ๋ ์๋ฏธ๊ฐ ์๊ณ ๊ตฌํ์ดํ์๋ ๋ณด๋์ ๋๋ผ๋ฉฐ โ๋ ํ ๋จ๊ณ ๋ ์ฑ์ฅํ๋ค!โ ๋ผ๋ ๋๋์ ๋ฐ์๊ฒ ๊ฐ์๊ธฐ์ ์ด๋ป๊ฒ ์ ์ ํ๊ฒ ๋๊ฐ์ง ๋ชจ๋ ๊ตฌํํ ์ ์์๊น ๊ณ ๋ฏผํ๋๊ฒ๊ฐ๋ค.
์ผ๋จ ์ปคํผ ๋ฉ๋ด ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์์๋ SSR๋ก ๊ตฌํํ์๋ค. ์๋ฒ์ธก์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ํด๋ผ์ด์ธํธ์ธก์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด pre-rendering์ด ์งํ๋๋ค. ์ ์ด ํ์ด์ง๋ฅผ SSR๋ก ๊ตฌํํ์ด? ๋ผ๊ณ ํ์ ๋ค๋ฉดโฆ
SSR ๊ตฌํ ํ์ด์ง (์นดํ ๋ฉ๋ด ๋ฆฌ์คํธ ํ์ด์ง)
- ๋ก๋๋๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํฌ์ง์๋ค
- ์ด๊ธฐ ๋ ๋๋ง์ ์๋์ ๋ํ ๊ณ ๋ฏผ์ด ์์๊ณ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค ํน์ ํด๋ผ์ด์ธํธ์ธก์์ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค ์ ์ ํ๊ฒ ๋ก๋ฉ๋ ์ ์๋ค๊ณ ์๊ฐํ๋ค.
- ๋ก๋๋๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊ป๋ฐ?
- ํ ํ๋ก์ ํธ ์ฒ๋ผ ๋ฆฌ์คํธ ํํ์ ์ปจํ ์ธ ์๋ ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ ๋ฃ์ ์ ์๋ค.
- ์ด๋ฏธ์ง ์ปจํ ์ธ ํฌ๊ธฐ๋ฅผ ์ฌ์ ์ ์ ์, LazyLoading ๊ธฐ๋ฅ์ ์ถ๊ฐ, ์ด๋ฏธ์ง ์ต์ ํ ์์ ์ ํ ์ ์๋ค.
- SEO์ธก์์ ์ข๋ค
- ๊ฒ์์์ง ๋ ธ์ถ์์ ์ด์ ์ ๊ฐ์ผ๋ฏ๋ก ์ด๊ฒ ์ค์ ์๋น์ค์ด๊ณ ์ด๊ธฐ HTML์์ฑ์์ ๊ด๋ จ ์ปจํ ์ธ ๋ค์ด ์์ฑ์ด ๋๋ค๋ฉด ๊ฒ์์์ ์์ฃผ ๋ ธ์ถ ๋ ์ ์๋ค.
SSG ๊ตฌํ ํ์ด์ง (๊ธฐ์ ์คํ, ๋ง๋ ๊ณ๊ธฐ ํ์ด์ง)
- ํ์ด์ง ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ ๋์ง ์๋๋ค. ๋ง ๊ทธ๋๋ก ์ ์ ์ด๋ค.
- ์ฌ์ฉํ๋ ๊ธฐ์ ์คํ์ด ๋ฐ๋๊ฑฐ๋, ์ด ํ ์ด ํ๋ก์ ํธ๊ฐ ๋ง๋ ๊ณ๊ธฐ๊ฐ ๋ฐ๋์ง ์์ผ๋ฏ๋ก ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ ์ ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋์ SSG ๊ตฌํ ๋ฐฉ์์ด ์์ฃผ ์ ๋ง๋ค๊ณ ์๊ฐํ๋ค.
- ๋ฐฐํฌ ์ดํ ๋ก๋ฉ์๋๊ฐ ๋น ๋ฅด๋ค.
- CSR๊ณผ๋ ๋ค๋ฅด๊ฒ ๋น๋์์ ์นํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋์ ์ํ์ด๋ฏ๋ก ํ์ด์ง ๋ก๋ฉ์๋๊ฐ ๋น ๋ฅด๋ค.
- SEO์ ์นํ์ ์ด๋ค.
- CSR๊ณผ ๋๋ค๋ฅธ ์ฐจ์ด์ ์ด๋ผ๊ณ ๋งํ ์ ์๋๊ฒ ์๋ฒ์ธก์์ ๋ฏธ๋ฆฌ HTML์ ์์ฑํด ๋์ผ๋ฏ๋ก ๊ฒ์์์ง ๋ ธ์ถ์ ์ด์ ์ ๊ฐ๋๋ค.
์ฌ์ค ํด๋น ํ๋ก์ ํธ์์ ๋ฐ์ดํฐ ํน์ ์ปดํฌ๋ํธ๊ฐ ๋ง๊ฑฐ๋ ๋ก์ง์ด ๋ณต์กํ๊ฒ์ ์ ๋๋ก ์๋์์ง๋ง ํ๋ฒ ์ฏค ์๋ํด ๋ณด๊ณ ์ถ์๋ ์ฑ๋ฅ๊ฐ์ ์ด์๋ค. ๊ทธ๋์ Web Core Vital์ ๋ํด ์ฐพ์๋ณด๊ณ LCP, TTI, CLS์ ๋ํ๊ฒ์ ์๊ฒ๋์๊ณ ์ด 3๊ฐ์ง๋ฅผ ์ค์ ์ ์ผ๋ก ์ฑ๋ฅ๊ฐ์ ์ ํด๋ณด์๋ค.
์๋ฌด๋๋ LCP์ฑ๋ฅ์ด ์ ๋์์ค์ผ TTI์ฑ๋ฅ ๋ํ ์๋์ค๋๊ฒ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ LCP๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด NEXT์์ ์ ๊ณตํ๋ next/image๋ฅผ ํ์ฉํ์ฌ ์ด๋ฅผ ๊ฐ์ ํด๋ณด์๋ค. ๊ทธ๋ผ next/image๋ก ๋๋ ์ด๋ ํ ์ด์ ์ ์ป์์๊น?
- ์ด๋ฏธ์ง ์ต์ ํ, ์ด๋ฏธ์ง ํ์ฅ์๋ฅผ .webp๋ก ๋ฐ๊พธ์ด ์ค๋ค
- ํ์ฌ api์ธก์์ ๋ณด๋ด์ฃผ๋ ์ด๋ฏธ์ง ํ์ฅ์๋ .jpg์ธ๋ฐ .webp๋ก ๋ณํํจ์ผ๋ก์จ 25%~34%์ ์ฉ๋์ฐจ์ด๋ฅผ ๋ณด์ฌ์ค๋ค.
- LazyLoading์ ์ง์ํ๋ค.
- ์ฌ์ฉ์ ํ๋ฉด์ ๋ณด์ฌ์ง์ง ์๋ ๋ถ๋ถ์ ์ปจํ ์ธ ๋ ๋ก๋ฉ์ํค์ง ์๊ณ ์๋ค๊ฐ ํ๋ฉด ์คํฌ๋กค์ ํตํด ์ปจํ ์ธ ๋ฅผ ๋ณด๊ฒ ๋ ๋ ๋ก๋ฉ์ํจ๋ค.
- ์ฌ์ ์ ์ปจํ ์ธ ์ฌ์ด์ฆ ๊ฐ์ optionalํ๊ฒ ๋ฐ์ ์๋ฒ์ธก์์ ๋ก๋ฉ์์ ๋ถ๋ด์ ์ค์ฌ์ค ์ ์๋ค.
์์๊ฐ์ next/image๊ฐ ์ง์ํ๋ ๊ธฐ์ ๋ค์ ์ดํดํ๊ณ ์ด๋ฅผ ์ ์ฉํ๋ LCP์ฑ๋ฅ ์ ์์๋ ์ด๋ก๋ถ์ด ๋ค์ด์๋ค.
์์์ ์ธ๊ธ ํ๋ฏ์ด ์ด๋ฏธ์ง ๋ถ๋ถ์์๋ next/image ํ๋๋ง์ผ๋ก ์ฝ๊ฒ ์ต์ ํ์์ ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ ์ธ์ ๋ถ๋ถ๋ค์ ์ด๋ป๊ฒ ํ๋ฉด TTI์ฑ๋ฅ์ ๋ํ ์ ์์๊น ๊ณ ๋ฏผํด๋ณด์๊ณ ์ง๊ธ ํ๋ก์ ํธ ์์์ ํ ์ ์๋๊ฑธ ์ฐพ์๋ณด์๋ค.
- ๋ถํ์ํ ์ปดํฌ๋ํธ ์ญ์ ๋ฐ ๋ณํฉ
- ์ด์ํ๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๋๋ฌด atomicํ๊ฒ ๋๋๋ ํ์ ์ต๊ด์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์ฝ๋์์ ๋๋ฌด ์ธ๋ถ์ ์ผ๋ก ๋๋๋ฉด์ ๋ถํ์ํ๊ฒ ๋ง๋ค์ด์ง ์คํ์ผ ์ปดํฌ๋ํธ๋ค์ ๋ฐ๊ฒฌํ๋ค.
- PullRequest 01
- PullRequest 02
์ฌ์ค ์ด ํ๋ก์ ํธ์์ CLS์ ์ฑ๋ฅ์ ์ปจํ ์ธ ๊ฐ ๋ง์ด ์๊ธฐ๋ ํ๊ณ ์์์ ๋งํ๋ next/image์์๋ placeholder ๊ธฐ๋ฅ๋ ์ ๊ณตํ๊ธฐ๋๋ฌธ์ Layout Shift ํ์์ ์์ ํํผํ ์ ์์๋ค.
๋ํ ํ๋ก์ ํธ ์์์ ์ ์์ด์ดํ๋ ์์ ์์ฑํ๊ณ ๋งํฌ์ ์์ ์ ํ๋ฉด์ ์ปจํ ์ธ ๊ฐ ๋ค์ด๊ฐ ๋ถ๋ถ๊ณผ ์ปจํ ์ธ ๋ฅผ ๊ฐ์ธ๋ ์ปจํ ์ด๋ ๊ด๋ จ ์ปดํฌ๋ํธ๋ค์ ์ฌ์ด์ฆ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํด ๋์์ Layout Shift ํ์์ ํผํ๋๋ฐ ๋์์ด ๋์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
์ค๋น์ค์ ๋๋ค.
์ค๋น์ค์ ๋๋ค.