naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2024-08

    ๐Ÿ“š ๋งํฌ & ์ฝ์„ ๊ฑฐ๋ฆฌ

    State Of React 2023

    2023๋…„ React ์ƒํƒœ๊ณ„์˜ ๋ณ€ํ™”, ๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ์˜ ๋ฐฉํ–ฅ์„ฑ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” State of React 2023์ด ๋ฐœํ‘œ๋˜์—ˆ๋‹ค.

    ๋ˆˆ์—ฌ๊ฒจ๋ณผ ๋งŒํ•œ ์กฐ์‚ฌ ๊ฒฐ๊ณผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • React Aria, Radix ๋“ฑ์˜ headless ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋†’์€ ์„ ํ˜ธ๋„๋ฅผ ๊ธฐ๋กํ•˜์˜€์œผ๋ฉฐ, style์„ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” MUI, Bootstrap, Ant Design ๋“ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๋Š” ๋งŽ์œผ๋‚˜ ๋ถ€์ • ๊ฒฝํ—˜์ด ๋†’์€ ๊ฒƒ์œผ๋กœ ์กฐ์‚ฌ๋˜์—ˆ๋‹ค.
      • shadcn/ui์™€ ๊ฐ™์€ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹๋„ ๋ˆˆ์—ฌ๊ฒจ๋ณผ๋ฒ•ํ•˜๋‹ค.
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • useState๋ฅผ ๋„˜์–ด์„œ ๊ธ์ •์  ๊ฒฝํ—˜์„ ์„ ์‚ฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Zustand์˜€๋‹ค. Redux๋Š” ์—ฌ์ „ํžˆ ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์‚ฌ๋ž‘๋ฐ›์ง€๋Š” ๋ชปํ•˜๊ณ  ์žˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ
      • Tanstack Query๊ฐ€ ์—ฌ์ „ํžˆ ์ธ๊ธฐ๋ฅผ ์ด์–ด๊ฐ€๊ณ  ์žˆ์œผ๋ฉฐ, ์œ ์‚ฌํ•œ SWR์— ๋น„ํ•ด์„œ ๊ธ์ •์  ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ํ›จ์”ฌ ๋†’๊ฒŒ ์กฐ์‚ฌ๋˜์—ˆ๋‹ค.
      • GraphQL์ชฝ์—์„œ๋Š” Apollo Client๊ฐ€ Relay๋ณด๋‹ค ๋†’์€ ๊ธ์ ์  ์‚ฌ์šฉ ๊ฒฝํ—˜์˜ ๋น„์œจ์„ ๋ณด์˜€๋‹ค.
    • ๋ฉ”ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ
      • Next.js์— ๋Œ€ํ•ด์„œ ๋ถˆํ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋†’์€ ์‹œ์žฅ ์ง€๋ฐฐ๋ ฅ์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋‹ค. Astro์™€ Remix๊ฐ€ ๊ทธ ๋’ค๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค.
    • ์‚ฌ์šฉ
      • 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๋ฅผ ์ž์ฃผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋„๋ก ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œ์ผฐ๋‹ค.

    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()
    • ์ƒˆ๋กœ์šด ์ •๊ทœ ํ‘œํ˜„์‹ ํ”Œ๋ž˜๊ทธ /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 ๋ฐฐํฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.