
๐ ๋ค์ด๊ฐ๋ฉฐ์ด๋ฒ ๊ธ์์๋ ํ๋ก ํธ์๋์์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํ๊ธฐ ์ํด์๋ ์ด๋ค ๋ฐฉ๋ฒ์ด ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.์ฝ๋ ์์๋ React ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ฌ๋๋ฆฌ์ง๋ง, VanilaJS, ๋ค๋ฅธ ํ๋ ์์ํฌ์์๋ ํ์ฉํ ์ ์๋ ๊ธฐ๋ฒ๋ค์ ๋๋ค.ํด๋น ๊ธ์์๋ ๊ฐ ๋ฐฉ๋ฒ์ ๋ํด์ ๋์์๋ฆฌ์ ๊ฐ์ ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ๋ํด์๋ ๊น๊ฒ ์ค๋ช ํ์ง ์์ต๋๋ค!ํฌ๊ฒ ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์๋์ง, ์ด๋ค ๊ฐ๋ ์ธ์ง, ์ด๋ป๊ฒ ํ๋ ๊ฑด์ง, ๊ทธ๋์ ์ด๋ค ์ด์ ์ด ์๋์ง ์ด ์ด 4๊ฐ์ง์ ์ง์คํ์ฌ ์ค๋ช ํฉ๋๋ค.๊ทธ๋์ ์ฒ์ ์๊ฒ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ "์ด๋ฐ ๊ฒ๋ ์๊ตฌ๋! ๋ฐ๋ก ํ๋ฒ ์ ์ฉํด๋ณผ๊น?"๋ผ๋ ์๊ฐ์ด ๋ค์์ผ๋ฉด ์ข๊ฒ ์ด์.๐คฃ์ต์ ํ๋ฅผ ์งํํ๊ธฐ ์ ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ > ์ฑ๋ฅ ํญ ๋๋ ๋คํธ์ํฌ ํญ, Lighthouse, React-Dev-Tools์ ๊ฐ์ ์ฑ๋ฅ ์ธก์ ์ ํต..

๐ ๋ค์ด๊ฐ๋ฉฐ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปค์ง์๋ก ๋ฒ๋ค ํฌ๊ธฐ๋ ํจ๊ป ์ปค์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ฃ .Vite์์ ์ ๊ณตํ๋ Code Splitting ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ํด๋น ๊ธ์์๋ manualChunks์ ๋ํด์๋ง ๋ค๋ฃน๋๋ค.์ Code Splitting์ด ํ์ํ ๊น?์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ฉด ๋ชจ๋ Javascript ์ฝ๋๊ฐ ํ๋์ ํฐ ํ์ผ๋ก ๋ฒ๋ค๋ง ๋ฉ๋๋ค.ํ์ง๋ง ์ด ์ํฉ์ ์๋ ๋ฌธ์ ๋ค์ ์ผ์ผํฌ ์ ์์ต๋๋ค.๊ธด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ: ์ฌ์ฉ์๊ฐ ์ฒซ ํ์ด์ง๋ฅผ ๋ณด๊ธฐ ์ ์ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค.๋ถํ์ํ ๋ฆฌ์์ค ๋ญ๋น: ๋น์ฅ ํ์ํ์ง ์์ ์ฝ๋๋ ํจ๊ป ๋ถ๋ฌ์ต๋๋ค.๋นํจ์จ์ ์ธ ์บ์ฑ: ์์ ์ฝ๋ ๋ณ๊ฒฝ์๋ ์ ์ฒด ๋ฒ๋ค์ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค.๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ..

โจ WebRTC๋ ๋ญ๊น?์ค์๊ฐ ํต์ ์ ์์ด ์์ฃผ ์ฌ๋ฐ๋ ๊ธฐ์ ์ด ์์ต๋๋ค. ๋ฐ๋ก webRTC(Web Real-Time Communication)์ธ๋ฐ์. 2011๋ , Google์ ๊ฐ๋ฐ์๋ค์ ์ํด์ ํ์ํ ๊ธฐ์ ์ ๋๋ค.WebRTC๋ฅผ ์ฌ์ฉํ๋ ์ ๋ช ํ ์๋น์ค๋ค ์ค Google Meet, Discord, Zoom ๋ฑ ์กด์ฌํฉ๋๋ค. ์ฝ๊ฒ ๋งํด์ "๋ค์ํ ํ๋ซํผ์์ ๊ฐ๋ฅํ ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ธฐ์ "์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.ํ์ ์ฑํ , ์์ฑ ํตํ, ํ์ผ ๊ณต์ ๋ฑ๋ฑ ์ด ๋ชจ๋ ๊ฑธ ๋ณ๋์ ํ๋ก๊ทธ๋จ ์์ด ์น ๋ธ๋ผ์ฐ์ ๋ ๋ฌผ๋ก ์ด๊ณ , ๋ชจ๋ฐ์ผ ์ฑ, ๋ฐ์คํฌํ ์ฑ์์๋ ์ฌ์ฉํ ์ ์๋ ์คํ์์ค ํ๋ก์ ํธ์ด๋ฉฐ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ๋์ฑ ์ ๊ธฐํ ์ ์ ์๋ฒ ์์ด P2P(Peer To Peer)๋ก ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค๋ ์ ์ ๋๋ค.(P2..

๐ ๋ค์ด๊ฐ๋ฉฐ์ต๊ทผ ํ์ฌ์์ ๋ด๋นํ๋ ์๋น์ค์ ๋ํด์ CRA์์ Vite๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด์ ์ฝ๊ฐ์ ์ฝ๋ ๊ฐ์ ๊น์ง ์งํ์ ํ๋ ๊ฒฝํ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์์ ํธ์ด ์๋์๊ธฐ ๋๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด์ webpack์ ์์กดํ๊ณ ์๋ ๋ฑ์ ์ฌ์ด๋์ดํํธ๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์์ ์ ์ผ ๊ฑฑ์ ์ ๋ง์ด ํ๋๋ฐ์. ์ด๋ฒ ๊ธ์์๋ ํฌ๊ฒ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋์ง, CRA์ Vite๋ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์ด๋ป๊ฒ ์งํํ๋์ง, ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ์์๋์ง ๊ธฐ๋กํ๋ ค ํฉ๋๋ค.โ๏ธ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์์ฑํ์ฌ ๋ด๋นํ ์๋น์ค๋ webpack ๊ธฐ๋ฐ์ CRA๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ, ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฐ๋ฐ ์๋ฒ ๊ตฌ๋์๊ฐ์ด์์ต๋๋ค.๊ตฌ๋๋๋ ์๊ฐ๊น์ง ํ๊ท ์ฝ 20์ด๊ฐ ์์๋๊ณ ์ต๋ ์ฝ 30์ด๊น์ง ์์๋๋ ์ํฉ์ด์์ต๋๋ค. ๋ ๋ฒ..

๐ ๋ค์ด๊ฐ๋ฉฐํ์ฌ React 19 ๋ฒ์ ์ ์ ๋ฐ์ดํธ์ ๋ํด์ ๋ง์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ๋ฌ ๋ณ๊ฒฝ์ฌํญ๋ค์ด ๋ง์ง๋ง ์ด๋ฒ ํฌ์คํ ์์๋ ํต์ฌ ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ ๋ถ๋ถ์ ํฌ์คํ ํ๋ ค ํฉ๋๋ค. ์ฆ, ๊ธฐ์กด์๋ ํ์ํ๊ณ ์ฌ์ฉํด์ผ ํ์ง๋ง 19 ๋ฒ์ ์ด ๋์ ๋๋ฉด์ ์ฌ์ฉํ์ง ์์๋ ๋๋ ๊ฒ๋ค๊ณผ ์ถ๊ฐ๋ก ๋ช ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ๋ค์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค. ํ์ฌ 2024๋ 5์ 15์ผ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์กํธ 19๋ฒ์ ์ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด ์นด๋๋ฆฌ ๋ฒ์ ์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.npm i react@canary react-dom@canaryoryarn add react@canary react-dom@canaryReact Compoiler19 ๋ฒ์ ์ ๊ฐ์ฅ ํฐ ๋ถ๋ถ์ ๋ฆฌ์กํธ ์ปดํ์ผ๋ฌ์ ๋๋ค. ๋ฆฌ์กํธ ์ปดํ์ผ๋ฌ๋ ๋ฆฌ์กํธ ์ฝ๋๋ฅผ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก..

๐ ๋ค์ด๊ฐ๋ฉฐ ์ด๋ฒ ํฌ์คํ ์์๋ React์์ ์ฌ์ฉ๋๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด์ ๊ฐ๊ฐ์ ํน์ง๊ณผ ๊ฐ์ธ์ ์ธ ๊ฒฌํด๊ฐ ๋ค์ด๊ฐ ์์ต๋๋ค. ํ์ฌ ํฌ์คํ ์์ ๋ค๋ฃฐ ์ฃผ์ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. react-redux & redux-toolkit recoil zustand jotai React์์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์์์ ์ธ๊ธํ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ฏค์ ๋ถ๋ช ์๊ณ ๊ณ์๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค. ์ ์ด๋ฏธ์ง๋ ์ต๊ทผ 1๋ ๊ฐ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ NPM ๋ํฅ์ ๋๋ค. ํ์ฌ ์ถ์ธ๋ก ๋ดค์ ๋ 1์: redux (react-redux & redux-tookit) 2์: zustand 3์: jotai 4์: recoil ์ ์์๋ก ๋ณด์ ๋๋ค. ๊ทธ๋ผ ๊ฐ๋จํ ์ฝ๋ ์์ ์ ํจ๊ป ํน์ง์ ์์๋ณด๊ฒ ์ต๋๋ค. Redux..

๐ ๋ค์ด๊ฐ๋ฉฐ Next.js 14๋ฒ์ app router ํ๋ก์ ํธ์ styled-comoponents์์ vanilla-extarct๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํจ์ ์์ด์ ๋คํฌ๋ชจ๋ ๊ธฐ๋ฅ๋ ๊ฐ์ด ์งํํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ ๋คํฌ๋ชจ๋๋ฅผ ์ ์ฉํ๋ฉด์ next-themes๋ฅผ ํ์ฉํด ๋ดค๋ ๋ฐ ์ฌ์ฉ ๊ฒฝํ์ด ๋งค์ฐ ์ข์์ต๋๋ค. ๋ํ, app router์์ vanilla-extract๋ก ๋คํฌ๋ชจ๋๋ฅผ ๊ตฌํํจ์ ์์ด์ ์ฐธ๊ณ ์๋ฃ๊ฐ ๋ง์ง ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๊ธฐ ๋๋ฌธ์ ๊ธ์ ์์ฑํ๋ ค ํฉ๋๋ค. ๊ทธ๋ผ ์ด์ Next.js app router์์ vanilla-extract + next-themes๋ฅผ ํ์ฉํ ๋คํฌ๋ชจ๋๋ฅผ ํ๋ฒ ๊ตฌํํด ๋ด ์๋ค. ๐ง next-themes ์๊ฐ https://github.com/pacocoursey/next-them..

๐ ๋ค์ด๊ฐ๋ฉฐ ๊ธฐ์กด ํ๋ก์ ํธ์์ Next.js 14๋ฒ์ ์ ์ฑ ๋ผ์ฐํฐ์์ styled-components๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ด์ ์ Next.js 11๋ฒ์ ์์ 14๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋ฉด์ ๋จ์์๋ ๋ถ๋ถ์ด์์ต๋๋ค. ์ฑ ๋ผ์ฐํฐ์์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ๊ธฐ ์์ํ๋ฉด์, ์๋ฒ ์ปดํฌ๋ํธ ํ์ฉ ํด๋ณด๊ณ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ์ต๋๋ค. ๊ทธ๋ผ ๋จผ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๊ณ , ์ vanilla-extract๋ฅผ ์ ํํ๋์ง ๊ฐ๋ตํ ์ค๋ช ํด ๋ณผ๊ฒ์. ๐ ์ฑ ๋ผ์ฐํฐ(app router)์์ styled-components์ ๋ฌธ์ ์ styled-components๋ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, styled-components๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 'use client'๋ฅผ ๋ช ์ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํด..

๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ ๋ค์ํ ์น ์๋น์ค๋ฅผ ์ ํด๋ณด๋ฉด ๊ฐํธํ SNS ๋ก๊ทธ์ธ์ผ๋ก ์ฝ๊ฒ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฐํธํ SNS ๋ก๊ทธ์ธ์ด ๋ฐ๋ก OAuth2.0 ํ๋กํ ์ฝ์ ํตํด ์งํ๋ฉ๋๋ค. ๊ทธ๋ผ, OAuth๊ฐ ์ด๋ค ๋ฐฐ๊ฒฝ์์ ๋ฑ์ฅํ์๊ณ , ํ์ฌ๋ ์ด๋ป๊ฒ ํ์คํ๋์ด OAuth2.0์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋์ง, ๊ทธ ํ๋ฆ์ ๋ํ ๊ฐ๋ ์ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค. ๐ง OAuth ๋ฑ์ฅ๋ฐฐ๊ฒฝ ์น ์๋น์ค์ ๋ค์์ฑ์ด ์ฆ๊ฐํ๋ฉด์, ์์ ํ๊ฒ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์์ฑ์ด ์๊ฒผ์ต๋๋ค. ์ด๋ก ์ธํด OAuth(Open Authorization)๋ผ๋ ๊ฐ๋ ์ด ํ์ํ๊ฒ ๋์์ต๋๋ค. ์ด๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด ๋ณผ๊ฒ์. ์ฐ๋ฆฌ์ ์๋น์ค๊ฐ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์์ ๊ตฌ๊ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ฌ์ฉ์๊ฐ ๊ตฌ๊ธ์ ๋..