Framework-agnostic ์ค๊ณ์ Tree-shakeable ์์ฐ ์ต์ ํ๋ฅผ ํตํ ๊ณ ๊ฐ์ฑ Toast ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ถ
I Built a Toast Library Where a Robot Delivers Your Notifications ๐ค
AI ์์ฝ
Context
๊ธฐ์กด React ๊ธฐ๋ฐ Toast ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ํํ๋ UI ํจํด๊ณผ ํ๋ ์์ํฌ ์ข ์์ฑ์ผ๋ก ์ธํ ํ์ฅ์ฑ ํ๊ณ ์กด์ฌ. ๋จ์ ์๋ฆผ ์ ๋ฌ์ ๋์ด ์ ํ์ ํ๋ฅด์๋๋ฅผ ๋ฐ์ํ ์ ์๋ ์๊ฐ์ ์ฐจ๋ณํ์ ์ ์ฐํ ์ธํฐํ์ด์ค ์ค๊ณ ํ์์ฑ ๋๋.
Technical Solution
- Framework-agnostic Core ์ค๊ณ๋ฅผ ํตํ React, Vue, Svelte ๋ฑ ๋ค์ํ ํ๊ฒฝ ์ง์ ๋ฐ ์์กด์ฑ ์ต์ํ
- Subpath export ๋ฐฉ์์ ์ ์ฉํ 16์ข Robot Variant์ Tree-shaking ๊ตฌํ์ผ๋ก ๋ฒ๋ค ํฌ๊ธฐ ์ต์ ํ
- Promise ๊ธฐ๋ฐ ์ํ ๊ด๋ฆฌ ๋ก์ง์
toast.promise()API๋ก ์บก์ํํ์ฌ ํด๋ผ์ด์ธํธ ์ํ ๊ด๋ฆฌ ๋ถ๋ด ์ ๊ฑฐ role="alert"๋ฐaria-live์์ฑ์ ์ธ๋ถํํ์ฌ ์ ๊ทผ์ฑ(a11y) ํ์ค์ ์ค์ํ๋ ์๋ฆผ ์์คํ ๊ตฌ์ถ- Typewriter Effect ๋ฐ ๋ค์ค Action Button ์ธํฐํ์ด์ค๋ฅผ ํตํ UX ์ธํฐ๋์ ํ์ฅ์ฑ ํ๋ณด
- zero production dependencies ์ ๋ต์ ํตํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ํ ๋ฐ ์ค์น ์์ ์ฑ ๊ฐํ
์ค์ฒ ํฌ์ธํธ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๊ณ ์ Core ๋ก์ง์ ํ๋ ์์ํฌ์ ๋ถ๋ฆฌํ์ฌ ๋ฒ์ฉ์ฑ ํ๋ณด ์ฌ๋ถ ๊ฒํ - ๋๊ท๋ชจ ์์ ํฌํจ ์ Subpath export๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ํ์ํ ๋ชจ๋๋ง Import ํ๋๋ก ์ค๊ณ - UX ๊ณ ๋ํ ์ ๋จ์ํ ์๊ฐ์ ์์๊ฐ ์๋ Accessibility ํ์ค ์ค์ ์ฌ๋ถ๋ฅผ ์ฒดํฌ๋ฆฌ์คํธ์ ํฌํจ - ๋น๋๊ธฐ ์์ ์ Loading/Success/Error ์ํ๋ฅผ ๋จ์ผ API๋ก ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค ์ค๊ณ ๊ณ ๋ ค