State of HTML 2023
2024. 5. 22.
State of HTML 2023
https://2023.stateofhtml.com/en-US/์ฌ์ค์ญ: HTML์๋ ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง์ HTML์ ๋ํด ๋ค๋ฅธ ์ฌ๋์ ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์ฟ๋ณผ ์ ์๋ ์ค๋ฌธ์กฐ์ฌ ๊ฒฐ๊ณผ์ ๋๋ค. HTML์ ํตํด ๊ตฌ์กฐ๋ฅผ ์ค๊ณํด์ผ ํ๊ณ , HTML์ ๊ด๋ จ๋ JS API์ ๋ํ ์ค๋ฌธ๋ ์์ผ๋ฏ๋ก ๋๋ฌ๋ณด๋ฉด ์ข์ ์ค๋ฌธ์กฐ์ฌ์ ๋๋ค.
Rate Limit ์๊ณ ๋ฆฌ์ฆ ์๊ฐํ
https://smudge.ai/blog/ratelimit-algorithms์ฌ์ค์ญ: Rate limit๋ ์๋น์ค์ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ ์ค์ํ ๋ก์ง์ ๋๋ค. ์ํํ ๊ณต๊ฒฉ์ธ Brute force์ ๋ํด ๋ง์ ์๋ ์์ฃ . ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํ๋ ๊ฒ๊ณผ ๋์์ ์๊ฐํ๋ฅผ ํด์ฃผ๋ ์ข์ ๊ธ์ ๋๋ค.
ESLint 9.0 ์์ ํ
https://eslint.org/blog/2024/05/eslint-compatibility-utilities/ESLint๋ ๋ง์ ์ปค๋ฎค๋ํฐ์ ์ํด ๊ตด๋ฌ๊ฐ๋๋ค. ๊ทธ๋์ ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ๋ค์ ๋ฒ์ ์ง์์ ๊ณ์ ํด์ฃผ๋ ๊ฒ์ด ์ค์ ํฌ์ธํธ๊ฐ ๋ฉ๋๋ค. ESLint๊ฐ 9.0์ ์ง์ํ๋ฉด์ ๋ด๋ถ ๋์ ๋ฐฉ์๊ณผ Flat Config๋ฅผ ์ถ์ํด์ ์ด์ ๋ฒ์ ๊ณผ ํธํ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋๋ฐ ESLint ํ์์ ์ด๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํด์ํ์ต๋๋ค. ๊ทธ๋์ ESLint 9๋ฒ์ ์ง์๊ณผ Flat Config ์ง์์ ๋ณด๊ณ @eslint/eslintrc
์ @eslint/compat
์ ์ ์จ์ 9๋ฒ์ ์ผ๋ก ๋ฒ์ ์
ํด์ผ๊ฒ ๋ค์.
React ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ์๊ฐํ ๊ฒ
https://github.com/alan2207/bulletproof-react/์ฌ์ค์ญ: React ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํํ๊ฑฐ๋ ์ฝ๋ ๋ฐ์์ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ ๊ณต์๋ฌธ์์์ ์๋ ค์ฃผ์ง ์์ต๋๋ค. ์ด ๊ธ์ ์์ ์ ์ฃผ๊ด๊ณผ ํจ๊ป ๊ณ ๋ คํ ์ ์ ์ถ๋ ค์ ์๋ ค์ฃผ๊ณ ์์ต๋๋ค. ์ด์ธ์๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๊ณ ๋ คํ ๊ฒ์ ๋ง์ง๋ง ์ฃผ์ ๋ถ๋ถ์ ๋ชจ๋ ์ค๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
React ๋ด๋ถ ๋ฅ ๋ค์ด๋ธ
https://jser.dev/series/react-source-code-walkthrough์ฌ์ค์ญ: React์ ๋์๋ชจ๋ ์๋ ์๋ฆฌ์์ ๊ฐ์ ธ์๋ฏ์ด React์์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ ๊ธ์ ๋งค์ฐ ๋ง์ง๋ง ์ด ๊ธ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉด์ ์น์ ํ๊ฒ ์ค๋ช ํ๋ ๊ธ์ด๋ผ๊ณ ์๊ฐํด์ ๊ฐ์ ธ์์ต๋๋ค. ๊ธ์ด์ด๋ ๋งํ๋ฏ์ด React์ ์ฝ๋๋ ๊ฑฐ๋ํ๊ณ ๋ชจ๋ ํ๋ฒ์ ์ดํดํ ์ ์์ต๋๋ค(๋ํ ์ ๋ฐ์ดํธ๋๋ฉด์ ๋ฐ๋ ์๋ ์์ต๋๋ค). ์ฒ์ฒํ ์ดํดํ๋ฉด์ ๋ณด์ธ์!
Tanstack Query๋ฅผ ์ ์จ์ผ ํ์ฃ ?
Why React Query? ๐์ฌ์ค์ญ: Redux saga๋ก ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ์ฌ๋๋ค์๊ฒ๋ React Query๋ฅผ ์ฐ๋ ์ด์ ์ ๋ํด ์ถฉ๋ถํ ์ดํด๋ฅผ ๊ฐ๊ณ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง ์ฒ์ ์์ํ๋ ์ฌ๋์๊ฒ๋ ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด ๊ธ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉด์ ์น์ ํ๊ฒ ์ค๋ช ํด์ค๋๋ค. Redux ๊ฐ๋ฐ์๋ ๋งํ๋ฏ์ด, Tanstack Query๋ ์๋ฒ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ๋ฌธ์ ์ํฉ๊ณผ ์ผ์นํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋ผ๊ณ ์์ต๋๋ค.
๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ๋ค๋ค
https://tonsky.me/blog/centering/์ฌ์ค์ญ: ๋ณดํต Flex ๋ ์ด์์์ ์ฌ์ฉํด์ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ๊ธฐ ๋ง๋ จ์ธ๋ฐ, ์ ์๋ ๊ทธ๋๋ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์น ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ๊ฐ์ง ํด๊ฒฐ์ฑ ์ ์๊ฐํฉ๋๋ค. ๋ฌผ๋ก ์ค์ ๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ์ธ๋ฐ ๋ณด๊ธฐ์๋ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด ์๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก ์์ ํ ํด๊ฒฐ์ฑ ์ ์๋๋๋ค.. ๊ฐ์ด๋ฐ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ How To Center a Div์ ์ฐธ๊ณ ํ์ ๋ ์ข์ต๋๋ค.
CSS๋ก ๋ํ ๋ง๋ค๊ธฐ
https://www.smashingmagazine.com/2024/05/modern-guide-making-css-shapes/ํํ์ด์ง์ ๋ํ์ด ๋ค์ด๊ฐ๊ฒ๋๋ฉด ์ด๋ฏธ์ง๋ก ๋์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด์ง๋ง ์ด๋ ต์ง ์์ ๊ฒฝ์ฐ๋ CSS๋ก๋ง ๋ํ์ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ธ์ธ ํ์๋ ์์ง๋ง ์ด๋ฐ ๋ํ๋ CSS๋ก ๋ง๋ค ์ ์๋ค๋ ๊ฒ๋ง ์๊ณ ๋ค์ ์ด ๊ธ์ ๋ฐฉ๋ฌธํด๋ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
Grid masonry์ ๋ํ ์๊ฐ
https://piccalil.li/blog/masonry-and-tabbing/CSS Grid masonry๊ฐ ์์ง ์คํ์ ์ธ ๋จ๊ณ์ด์ง๋ง Firefox์์ ์์์ ์์๊ฐ ๋งค์ฐ ์ด์ํ๊ฒ ๋ฐฐ์นํ๋ ๊ฒ์ ์ง์ ํ๋ ๊ธ์ ๋๋ค. ์คํ์ ์ธ ๋จ๊ณ์ด๊ณ , ๋ค๋ฅธ ๊ณณ์์ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ ์์ง๋ง masonry layout์ ๋ํด ๋ชจ๋ฅด๋ ์ฌ๋์ด ๋ง์ ๊ฒ์ด๋ผ ์๊ฐํด์ ๊ฐ์ ธ์์ต๋๋ค. JS๋ก ๊ตฌํํ๋ ค๋ฉด ๋๋น์ ๋์ด๋ฅผ ๊ณ์ฐํด์ ๋ฐฐ์นํด์ผํฉ๋๋ค(์์).
Phoenix LiveView๋ Next.js์ ๊ฟ์ ๊พธ๋๊ฐ
https://www.phoenixframework.org/blog/phoenix-liveview-1.0-releasedLiveView์ 1.0 ๋ฐฐํฌ๊ฐ ๋ค๊ฐ์๋ค๊ณ ํด์ ๊ฐ์ ธ์์ต๋๋ค. ์ด๊ทธ๋ก ๋๋ ค์ ๊ฐ์ ธ์จ ๊ฒ๋ ๋ง๊ตฌ์. Blazor์ ๋น์ทํ ๋ฐฉ์(์์ผ์ผ๋ก UI ๋ณ๊ฒฝ์ ํต์ ) ๋ง๋ SSR ํ๋ ์์ํฌ์ ๋๋ค. ๋งค์ฐ ์ข์ ํ๋ ์์ํฌ๋ผ๊ณ ๋ณด๊ธฐ๋ ํ๋ค์ง๋ง ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์๋ ์๋ค๋ผ๋ ๊ฒ์ ์์๋์ จ์ผ๋ฉด ํฉ๋๋ค.
Google I/O 2024
Google I/O์์๋ Web์ ๋ํ ๋ฐํ๋ฅผ ์งํํ์ต๋๋ค. ์์ฝ์ Google I/O 2024์์ ๋ฐํํ 10๊ฐ์ง ์ ๋ฐ์ดํธ: ๋ชจ๋ ์น ๊ฐ๋ฐ์๋ฅผ ์ํ AI ๊ธฐ๋ฅ ํ์ฉ์ ์ฐธ๊ณ ํ์ธ์. ์ด์ ์ ์๊ฐํ๋ Chrome ์ฌ์ ๋ ๋๋ง API๋ ์๋ค์.
Web Feature Status
https://web.dev/blog/web-platform-dashboard?hl=ko4๊ฐ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ฅ ์ง์ ํํฉ์ ํ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋์๋ณด๋๋ฅผ ๋ง๋ค์์ต๋๋ค. CanIuse์ ๋ฐ์ดํฐ๋ฅผ ๋์ฒดํ ์๋ ์์ ๊ฒ ๊ฐ์ง๋ง ์ ๊ท ๊ธฐ๋ฅ์ด ๋ฌด์์ด ์๋์ง๋ ๋ ์ ๋ณผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ฌ JavaScript ํ๋ ์์ํฌ์ ์ํ
https://developer.chrome.com/blog/frameworks-may-20242024๋ 5์ ํ์ฌ JavaScript ํ๋ ์์ํฌ์ ๊ธฐ๋ฅ๊ณผ ์ํคํ ์ฒ๊ฐ ๋ฎ์๊ฐ๊ณ ์์ผ๋ฉฐ, ๊ฐ ํ๋ ์์ํฌ๋ง๋ค ์ด๋ค ๊ธฐ๋ฅ์ผ๋ก ์ฐจ๋ณํ๋ฅผ ์ด๋ฃจ๊ณ ์๋์ง ๋ถ์ํ ์๋ฃ์ ๋๋ค. ๋ฌผ๋ก ๋ด๋ถ ๊ตฌ์ฑ์ด๋ ์งํฅ์ ์ผ๋ก ์ผ๊ณ ์๋ ๋ชฉํ๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ๋ง๋ก ๋ถ์ํ๋ค๋ฉด ๊ฐ ํ๋ ์์ํฌ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ด์ผ๊ฒ ๋ค์(Angular, React, Remix, Nuxt).
View Transition API
https://developer.chrome.com/docs/web-platform/view-transitions?hl=ko์ฌ๋ฌ ํ๋ ์์ํฌ์์ View Transition API๊ฐ ์ง์ํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ด ๋์์ผ๋ฉฐ, ๋ค์ํ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์๊ฒ ๋์์ต๋๋ค(ex. FLIP ์ ๋๋ฉ์ด์ ).
Baseline to DX
https://web.dev/blog/baseline-rum?hl=koRUM ๋ฐ์ดํฐ(์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ)๋ฅผ ์ ๋ณด์ด๊ธฐ ์ํด RUM ํต๊ณ๋ฅผ ๊ณต๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐ ๋์ค์ ๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ๊ธฐ๋ฅ์ ์ง์ํ๋์ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋๊ตฌ์ ํตํฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์๋ค๊ณ ํฉ๋๋ค.
React Conf 2024
Meta์์ 2๋ ๋ง์ React ์ปจํผ๋ฐ์ค๋ฅผ ๊ฐ์ตํ์ต๋๋ค. ๊ทธ ์ค์์ ์ข์ ๊ธ๊ณผ ํจ๊ป ์๊ฐํ ์ ์๋ ๊ฒ๋ค์ ๋ชจ์์ต๋๋ค(React 19์ ์ ๊ธฐ๋ฅ์ ์ฌ๋ฌ๊ฐ์ง ์ถ์ ์์์ ๋ฃ์ด๋จ๋ React 19 beta ๊ธ์ ์ฐธ๊ณ ํ์ธ์).
Remix์์ ๋ค์ React-Router๋ก
https://remix.run/blog/merging-remix-and-react-routerRemix๋ React Router๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง SSR ํ๋ ์์ํฌ์ ๋๋ค. React ๊ณต์๋ฌธ์์์ CRA๋ฅผ ์ถ์ฒํ์ง ์๊ณ , Remix์์ ๋ฒ๋ค๋ง ํด์ Vite๋ก ๋ฐ๊พธ๊ฒ ๋๋ฉด์(์ด ๊ณผ์ ์์ Remix์์ SPA๋ชจ๋๋ฅผ ์ง์ํ๊ฒ ๋ค๊ณ ๋ ํ์ต๋๋ค), Remix์ React Router๋ ๋ค๋ฅผ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํ๊ฒ ๋๊ณ , Remix ํจํค์ง๋ฅผ React Router๋ก ๋ณ๊ฒฝํ๋ ๊ณผ์ ์ ๊ฑฐ์น ๊ฒ์ด๋ผ๋ ๋ฐํ์ ๋๋ค.
RSC React์ Node.js๋ง์ผ๋ก๋ง ๊ตฌํํ๊ธฐ
404: NOT_FOUND ๐์ปจํผ๋ฐ์ค์์๋ ์๋ฒ ์ปดํฌ๋ํธ ์ง์์ ์ผ๋ถ๋ฅผ ๊ตฌํํ๋ ๊ฒ๋ง ๋์์ง๋ง, RSC์ ๋ง์ ๋ถ๋ถ์ ๊ตฌํํ๋ ์ํฌ์ต์ ๋ง๋ค์๊ธธ๋ ์ด ์ํฌ์ต์ผ๋ก ๊ฐ์ ธ์์ต๋๋ค. RSC๋ฅผ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ค์ด ์ด๋ป๊ฒ ๊ตฌํํ๋์ง๋ฅผ RSC์ payload๋ถํฐ server action๊น์ง ๋ชจ๋ ํ์ ํฉ๋๋ค.
React Compiler
https://github.com/reactwg/react-compiler/discussions/5https://www.youtube.com/watch?v=qOQClO3g8-YReact Compiler์ ๋ฒ ํ๋ฒ์ ์ ์ถ์ํ๋ฉด์ ์ด๋ป๊ฒ ์ธ ๊ฒ์ธ์ง์ ๋ด๋ถ๋ ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ฐ๋ตํ๊ฒ ์๊ฐํ์ต๋๋ค. ์ด์ ์ ์๊ฐํ๋ React ์ปดํ์ผ๋ฌ์ ํ์ ์์คํ ์ ์ ์๊ฐ Deep dive๋ฅผ ๋ฐํํ์ต๋๋ค. ๋ธ๋ก๊ทธ ๊ธ์ ์ฝ์ผ๋ฉด ๋ ์ ์ดํดํ ์ ์์ต๋๋ค.