2024-08 
๐ ๋งํฌ & ์ฝ์ ๊ฑฐ๋ฆฌ
State Of React 2023
2023๋ React ์ํ๊ณ์ ๋ณํ, ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก์ ๋ฐฉํฅ์ฑ์ ์ ์ ์๋ State of React 2023์ด ๋ฐํ๋์๋ค.
๋์ฌ๊ฒจ๋ณผ ๋งํ ์กฐ์ฌ ๊ฒฐ๊ณผ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- React Aria, Radix ๋ฑ์ headless ์ ๊ทผ ๋ฐฉ์์ด ๋์ ์ ํธ๋๋ฅผ ๊ธฐ๋กํ์์ผ๋ฉฐ, style์ ์ง์ ์ ๊ณตํ๋ MUI, Bootstrap, Ant Design ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ์๋ ๋ง์ผ๋ ๋ถ์ ๊ฒฝํ์ด ๋์ ๊ฒ์ผ๋ก ์กฐ์ฌ๋์๋ค.
- shadcn/ui์ ๊ฐ์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ก ์์ ๋กญ๊ฒ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ ๋ฐฉ์๋ ๋์ฌ๊ฒจ๋ณผ๋ฒํ๋ค.
์ํ ๊ด๋ฆฌ
๋ฐ์ดํฐ ๋ก๋ฉ
- Tanstack Query๊ฐ ์ฌ์ ํ ์ธ๊ธฐ๋ฅผ ์ด์ด๊ฐ๊ณ ์์ผ๋ฉฐ, ์ ์ฌํ SWR์ ๋นํด์ ๊ธ์ ์ ์ฌ์ฉ ๊ฒฝํ์ด ํจ์ฌ ๋๊ฒ ์กฐ์ฌ๋์๋ค.
- GraphQL์ชฝ์์๋ Apollo Client๊ฐ Relay๋ณด๋ค ๋์ ๊ธ์ ์ ์ฌ์ฉ ๊ฒฝํ์ ๋น์จ์ ๋ณด์๋ค.
๋ฉํ ํ๋ ์์ํฌ
์ฌ์ฉ
- Server Component, SSR, SSG ๋ฑ์ ๋ํ ๋ง์ ๊ด์ฌ์๋ ๋ถ๊ตฌํ๊ณ , ๋๋ค์์ React ์ฌ์ฉ์๊ฐ Single Page Application์์ ์์ ํ๊ณ ์๋ค๋ ์ ์ด ํฅ๋ฏธ๋กญ๋ค. ํํธ, Pain Points๋ก React Server Component๊ฐ ๋ฝํ๊ธฐ๋ ํ์๋ค.
๋ชจ๋ฅ๋ถ | EP.2 ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ์ง์ง ๋์ ๋ ๊น?
ํ๋ฐํธ์๋ ๊ฐ๋ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๋ณด๋ค ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
์ ๋ ์ต์ํ ๊ฒฝํฅ์ด ์์ด ๋ณด์ธ๋ค.
React๋ก ๊ฐ๋ฐํ๋ฉด class ํค์๋
๋ฅผ ์ ์ธ ์ผ์ด ์๋ ๊ฒ๋ ์ฌ์ค์ด๋ค. ํ์ง๋ง, class๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ OOP๋ฅผ ํ์ง ์๋ ๊ฒ์ ์๋๋ค. React์ ์ปดํฌ๋ํธ๋ Hook์ ๊ฐ์ฒด์งํฅ์์ ์๊ธฐํ๋ ๊ฐ์ฒด๋ก ๋ฐ๋ผ๋ณผ ์๋ ์๊ณ , ๋ชจ๋ ๋ถ๋ฆฌ ๋ํ OOP์ ํด๋นํ๋ค๊ณ ์๊ฐํ ์ ์๋ค.
ํ ์ค ํ๋ฐํธ์๋ ๋ฆฌ๋๋ค์ FP์ OOP์ ๋ํ ์๊ฐ์ ๋ค์ด๋ณด์.
๋ชจ๋ฅ๋ถ์ ํ ์ค์์ ์ ์ํ๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์ ํ๋ธ ์ปจํ ์ธ ์ด๋ค.
์๋ฆฌ์ฆ๋ก EP.1 ํ ์ค์์ ๋งํ๋ โ๊ฐ๋ ์ฑ ์ข์ ์ฝ๋โ ๋ ๋ฌด์์ผ๊น?, EP.3 ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ํ ์คํธ ์๋ํ, ๊ผญ ํด์ผ ํ ๊น? ์ํผ์๋๋ ๊ณต๊ฐ๋์ด์๋ค.
infer, never๋ง ๋ณด๋ฉด ๋๋ ค์์ง๋ ๋น์ ์ ์ํ ํ์ ์ถ๋ก - ๊ธฐ์ด ํ์ ์ด๋ก

๋ค์ด๋ฒ ์ฌ๋ด ๊ธฐ์ ๊ต๋ฅ ํ์ฌ์ธ NAVER ENGINEERING DAY 2024(5์)์์ ๋ฐํ๋์๋ ์ธ์ ์ด Naver TV ๋ฐ Naver D2๋ฅผ ํตํด์ ์ธ๋ถ์ ๊ณต๊ฐ๋์๋ค.
ํ์ ์ด ์ถ๋ก ๋๋ ์๋ฆฌ๊ฐ ๊ถ๊ธํ ๊ฐ๋ฐ์, infer ๋ฑ์ผ๋ก ๊ณ ๊ธ ์ ๋ค๋ฆญ์ ์ฌ์ฉํด ๋ณด๊ณ ์ถ์ ๊ฐ๋ฐ์์๊ฒ ์ด ๊ธ์ ์ถ์ฒํ๋ค.
ํด๋น ๊ธ์ ๊ธฐ์ด ํ์ ์ด๋ก , ๊ณ ๊ธ ํ์ ์ถ๋ก , ์์ฉ ๋ฌธ์ ํธ์ผ๋ก ๋๋์ด ์์ฑ๋์๋ค.
์ํ์ ์ธ ๋ด์ฉ์ด ๋ง์์, ์ดํด๊ฐ ์ด๋ ต๋ค๋ฉด ์ํ์ ๋ด์ฉ์ด ๋์ด์ง ํ์ ์คํฌ๋ฆฝํธ ํ์ ๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ์ด๋ณด๊ธธ ์ถ์ฒํ๋ค.
Announcing TypeScript 5.5
TypeScript 5.5 ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ค๋์๋ค.
๋์ฌ๊ฒจ๋ณผ ๋งํ ๋ณํ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
Inferred Type Predicates
bird is Bird
์ฒ๋ผ ๋ช ์์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ type predicate๊ฐ ์๋์ผ๋ก ์ถ๋ก ๋๊ธฐ ์์ํ์๋ค.
Regular Expression Syntax Checking
- ์ ๊ท ํํ์์ด ํ์ ๊ฒ์ฌ ๋ฒ์์ ์ถ๊ฐ๋์๋ค.
Isolated Declarations
- ์๋ก์ด
--isolatedDeclarations
์ต์ ์ ํตํด์ ๋ช ์์ ์ธ ํ์ ์ ๊ฐ์ ํ ์ ์๋ค.
- ์๋ก์ด
Editor, TSServer
- ์ฌ๋ฌ ๊ฐ์ ์ฌํญ์ ํตํด์ ๊ฐ๋ฐ์๊ฐ IDE์์
Restart TS Server
๋ฅผ ์์ฃผ ์ํํ์ง ์๋๋ก ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์์ผฐ๋ค.
- ์ฌ๋ฌ ๊ฐ์ ์ฌํญ์ ํตํด์ ๊ฐ๋ฐ์๊ฐ IDE์์
How we used esbuild to reduce our browser extension build times by 90%

1Password๊ฐ ๋ด๋ถ ํด์ปคํค์ ํตํด์ ์ด๋ป๊ฒ ๋น๋ ์๋๋ฅผ ๊ฐ์ ํ๋์ง ์๊ฐํ๋ค.
OpenTelemetry์ Jaeger๋ฅผ ํ์ฉํ์ฌ ์ ์ฒด ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ๋กํ์ผ๋งํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
๊ฐ์ ์ ์ฌ์ฉ๋ ๊ธฐ์ ๋ค๋ ํฅ๋ฏธ๋กญ์ง๋ง, ํด์ปคํค์ ํตํด์ ๊ฐ์ ์ ์๋ํ๋ ๊ณผ์ ์์ฒด๋ ๋งค์ฐ ์ธ์์ ์ด๋ค.
๊ธด ๋น๋ ์๊ฐ์ผ๋ก ๊ณ ํต๋ฐ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๋์์ด ๋๊ธธ ๋ฐ๋๋ค.
์ฃผ๋์ด FE ๊ฐ๋ฐ์์ ์์ ์ถ์ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ๊ธฐ

์นด์นด์ค FE ํ๋ซํผ ์กฐ์ง์ ์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ๋ํ ์์ ์ถ์ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐํ ๊ณผ์ ์ ์๊ฐํ๋ค.
๊ด๊ณ ์ด๋ฏธ์ง์ ๋ํ ์์์ ์ด๋ป๊ฒ ์ ์ํ ๊ฒ์ธ์ง ๋ฌธ์ ๋ฅผ ์ ์ํ๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ K-means Clustering Algorithm
์ ์ ํํ์ฌ ์ ์ฉํ๊ณ ํ
์คํ
, ๋ผ์ด๋ธ๋ฌ๋ฆฌํ ํ๋ ๊ณผ์ ์ด ํฅ๋ฏธ๋กญ๋ค.
Ecma International approves ECMAScript 2024: Whatโs new?
ECMAScript 2024๊ฐ 127๋ฒ์งธ ECMA ์ดํ์์ ์น์ธ๋์๋ค.
๋์ฌ๊ฒจ๋ณผ ๋งํ ๋ณํ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
Map.groupBy()
,Object.groupBy()
- lodash์ _.groupBy() ๋ฉ์๋์ ์ ์ฌํ ๋งต๊ณผ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฉ์๋๊ฐ ์ถ๊ฐ๋์๋ค.
Promise.withResolvers()
- resolveํ๋ ค๋ Promise๋ฅผ ์์ฑํ๋ ์๋ก์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- [๋ฒ์ญ] JavaScript์์ Promise๋ฅผ ์ทจ์ํ๋ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์ฝ์ผ๋ฉด ์ดํด์ ๋์์ด ๋ ๊ฒ์ด๋ค.
- ์๋ก์ด ์ ๊ท ํํ์ ํ๋๊ทธ /v(.unicodeSets)
ํ๊ธ ๋ฒ์ญ์ผ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค.
New Browser Engine: Ladybird
Ladybird๋ SerenityOS ํ๋ก์ ํธ์ HTML ๋ทฐ์ด๋ก ์์ํ์ฌ, ํ์ฌ๋ Linux, macOS ๋ฑ ๋ค์ํ Unix ๊ณ์ด ์์คํ ์ ์ง์ํ๋ ํฌ๋ก์ค ํ๋ซํผ ๋ธ๋ผ์ฐ์ ๋ก ์ฑ์ฅํ์๋ค. Chrome ๊ธฐ๋ฐ์ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ค๊ณผ ๋ค๋ฅด๊ฒ, Ladybird๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ํน์ง์ด๋ค. 2026๋ ์ฒซ ์ํ ๋ฒ์ ์ ๋ชฉํ๋ก ํ๋ค๊ณ ํ๋ค.
AI on Chrome
Chrome 127 ๋ฒ์ ๋ถํฐ window.ai
๋ฅผ ํตํด์ Gemini Nano AI ๋ชจ๋ธ์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ์ ๊ณตํ๋ค๊ณ ํ๋ค. Browser์์ on-device AI์ ์์์ด ๋ ์ง, ํ์คํ๋์ง ๋ชปํ๊ณ ๋๋๋ chrome์ ๋์ ์ด ๋ ์ง ๊ท์ถ๊ฐ ์ฃผ๋ชฉ๋๋ค.
๐น ํํ ๋ฆฌ์ผ
Type-safe TanStack Query with OpenAPI
openapi-typescript๋ฅผ ํตํด์ OpenAPI ์คํ์ ๋ํ ํ์ ์ ์์ฑํ๊ณ , openapi-fetch๋ฅผ ํตํด์ fetcher๋ฅผ ์์ฑํ ํ ๋์ ๊ธฐ๋ฐ์ผ๋ก TanStack Query๊น์ง ํ์ดํํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๊ฐํ๋ค.
tRPC์ ์ ์ฌํ๊ฒ ๋ฐฑ์๋์ ์คํ ๋ณ๊ฒฝ์ด ํด๋ผ์ด์ธํธ์ ์๋์ผ๋ก ํ์ดํ๋๋ DX๋ฅผ ์ํ๋ ๊ฐ๋ฐ์์๊ฒ ์ด ๊ธ์ ์ถ์ฒํ๋ค.
Render Delegationํ๋ React ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ

radix-ui์์๋ React Component Composition์ ์ง์ํ๊ธฐ ์ํด asChild props
์ ์ฌ์ฉํ๋ค.
ํ์๋ ํด๋น ํจํด์ render delegation
๋ก ์๊ฐํ๋ฉฐ ์ด๋ฅผ ์ง์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํ๋ค.
Learn Suspense by Building a Suspense-Enabled Library

React์ Suspense๋ 16.6.0 ๋ฒ์ ๋ถํฐ ์ง์๋ ์ค๋๋ ๊ธฐ๋ฅ์ด๋ค. ๊ทธ๋ฌ๋, React.Lazy
, Suspense๊ฐ ์ง์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์ ์ธํ๊ณ ๋ ์ ์ฌ์ฉ๋์ง ์๋๊ฒ์ด ์ฌ์ค์ด๋ค.
๊ณต์๋ฌธ์์ Suspense API๋ ์ ๋๋ก ๋ฌธ์ํ ๋์ด์์ง ์๊ณ , Suspense์ฌ์ฉ์ ์ํด์ Suspense๊ฐ ์ง์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฌ์ฉ์ ์ ์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐํ๋ค.
ํ์๋ Suspense๊ฐ ์ง์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์ง์ ๋ง๋ค๋ฉฐ ๋ฌธ์์ ์๊ฐ๋์ง ์์ Suspense์ ๋ท๋ฉด์ ๋๋ฌ๋ด์ค๋ค.
use hook
, Tanstack Query์ useQuery hook
๊ณผ ์ ์ฌํ ๊ตฌํ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์ ์ด ํฅ๋ฏธ๋กญ๋ค.
ํ๊ธ ๋ฒ์ญ์ผ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค.
๐ฆ ์ฝ๋์ ๋๊ตฌ
gql.tada

GraphQL ์ฟผ๋ฆฌ๋ฅผ TypeScript ์ฝ๋์์ ๋ฐ๋ก ํ์ ์ง์์ ๋ฐ์ผ๋ฉฐ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๐ฅ Matt Pocock - Everyone's talking about gql.tada
์งง์ ์๊ฐ ์์์ ํจ๊ป ๋ณด๊ธฐ๋ฅผ ์ถ์ฒํ๋ค.
Vitest 2.0
Jest์ ๋์ฒด์ ๋ก ์ฌ๋๋ฐ๊ณ ์๋ Vitest๊ฐ Browser Mode์ ํจ๊ป 2.0 ๋ฒ์ ์ ๋ฆด๋ฆฌ์คํ๋ค.
Browser Mode๋ Playwright๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ iframe ๋ด๋ถ์ ์ปดํฌ๋ํธ๋ค์ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์, ๋์ด์ ๋ธ๋ผ์ฐ์ api๋ฅผ ๋ชจํนํ์ง ์์๋ ๋๋ฉฐ ์ค์ ๋ธ๋ผ์ฐ์ ๋์์ ํ ์คํธํ ์ ์๋ค. unit tests์ E2E ํ ์คํธ ์ฌ์ด์ ๋น ๊ณต๊ฐ์ ์ฑ์์ค ์ ์์๊ฒ์ผ๋ก ๊ธฐ๋๋๋ค.
Rspack

Rspack 1.0 alpha๊ฐ ๋ฆด๋ฆฌ์ค๋์๋ค. 1.0 stable ๋ฒ์ ์ 8์์ ์ถ์๋ ์์ ์ด๋ฉฐ, ์ด๋ webpack์ ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ API์ด ๊ตฌํ๋จ์ ์๋ฏธํ๋ ์ค์ํ ๋ง์ผ์คํค์ด๋ค.
webpack์ ๊ฐ์ ํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ผ๋ก turbopack, esbuild ๋ฑ ์๋ง์ ๋ฒ๋ค๋ฌ๋ค์ด ์กด์ฌํ์ง๋ง, rspack์ webpack๊ณผ์ ํธํ์ฑ์ ํตํด webpack์ ๊ธฐ์กด ์ํ๊ณ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ๊ฐ์ ์ผ๋ก ๋ด์ธ์ด๋ค.
es-toolkit

๋์ ์ฑ๋ฅ๊ณผ ์์ ๋ฒ๋ค ์ฌ์ด์ฆ, ๊ฐ๋ ฅํ ํ์ ์ ์๋ํ๋ ํ๋์ ์ธ JavaScript ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ ์ค์์ ๊ฐ๋ฐํ๋ค.
WebVM

WebVM์ HTML5/WebAssembly์์ ์์ ํ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์คํ๋๋ ์๋ฒ ์๋ ๊ฐ์ ํ๊ฒฝ์ด๋ค. Linux ABI์ ํธํ๋๋๋ก ์ค๊ณ๋์๊ณ , ๋ง์ ๊ธฐ๋ณธ ๊ฐ๋ฐ ๋๊ตฌ ์ฒด์ธ์ ํฌํจํ์ฌ ์์ ๋์ง ์์ Debian ๋ฐฐํฌ๋ฅผ ์คํํ๋ค.