์ ์ฒด ๊ธ (72) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์ฑ๋ฅ ๊ฐ์ ] Next Image + blur data url vs. cloudinary 'use client';import { BlurImageOnLoad } from '@tripie-pyotato/design-system/@components';import API from 'constants/api-routes';const TripieBlurImage = ({ src }: { src: string; index: number }) => { return ;};export default TripieBlurImage;2025.02.15 - [๐ฉ๐ป๐ป dev] - Nextjs blurDataUrl dynamic ํ๊ฒ ์ ๊ณตํ๊ธฐ Nextjs blurDataUrl dynamicํ๊ฒ ์ ๊ณตํ๊ธฐ์ค๋๋ง์ ํฌ์คํ ! ์ค๋์ nextjs ์ด๋ฏธ์ง ์ปดํฌ๋ํธ์์ blurDataUrl์ ํ์ฉํด์ ์ด๋ฏธ์ง๊ฐ ์์ ํ ๋ก.. [์ฑ๋ฅ ๊ฐ์ ] Font metrics override์ผ๋ก Font ์ต์ ํํ๊ธฐ ์นํฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด font-display:swap์ผ๋ก ์ค์ ํ์ฌ ์ฝํ ์ธ ๋ฅผ fallback ํฐํธ๋ก ๋ณด์ฌ์ค์ FOIT๋ฅผ ์ ๊ฑฐํ๊ณ ,woff2๋ woff ๋ฑ ์ฉ๋์ด ์ ์ ํฐํธ format์ ์ ๊ณตํด์ ๋ก๋ ์๊ฐ์ ๋จ์ถํด ํฐํธ ์ต์ ํ๋ฅผ ํ๊ธฐ๋ ํ๋ค. ํ์ง๋ง ํด๋น ๋ฐฉ์์ layout shift๋ฅผ ์ ๊ฑฐํ๊ธฐ์๋ ๋ถ์กฑํ ์ ์ด ์๋ค.์ค๋์ Font metrics override์ size-adjust๋ฅผ ํตํด layout shift๋ฅผ ์ต์ํ(์ ๊ฑฐ)ํ์ฌ ํฐํธ ์ต์ ํ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃจ๊ณ ์ ํ๋ค. ๋ค์์ fallback ํฐํธ๋ฅผ ์ ๊ณตํด์ ํ ์คํธ ๋๋๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ด๋ค.@font-face { font-family: 'MaruBuri'; src: local('MaruBuri'), url('../static/fon.. ์ธ์ ์คํ ๋ฆฌ์ง, ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ด๋ค ๊ฑธ ์จ์ผํ ๊น? 2025.03.13 - [๐ฉ๐ป๐ป dev] - ๋ก์ปฌ ์คํ ๋ฆฌ์ง vs ์ธ์ ์คํ ๋ฆฌ์ง vs ์ฟ ํค ๋ก์ปฌ ์คํ ๋ฆฌ์ง vs ์ธ์ ์คํ ๋ฆฌ์ง vs ์ฟ ํคhttp ํ๋กํ ์ฝ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ด ์ฉ์ดํ๋๋ก ์ค์ํ ํด์ค๋ค. ๋ค๋ง http ํ๋กํ ์ฝ์ stateless ํ๋กํ ์ฝ์ด๋ผ๋ ์ ์์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด๋ ์๋ต์ ํธ๋ํน ํ์ง ์pyotato-dev.tistory.com์ด์ ๋์์ด ์ ๋งคํ๋ ๋์ useFunnel ๊ณ ์ณ๋ณด๊ธฐ๋ฅผ ์งํํ๋ฉด์ ํผ๋ ์คํญ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ๋ ์ ์ด ์๊ฐ์ด ๋์ ๋ค๋ค๋ณด๊ณ ์ ํ๋ค. ๊ทธ์ค ์ด์ ์ ์ดํด๋ดค๋ ์ธ์ /๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋ฐ ์ฟ ํค์ ๊ด๋ จํด์ ์ ํํ ์ต์ ์ ๋ํด ์ดํด๋ณด๊ณ ์ ํ๋ค.๐ค ํญ์ด๋ ํ์ด์ง๋ฅผ ๋ซ๊ณ ๋ค์ ์ง์ ํ์ ๊ฒฝ์ฐ, ํด๋น ์ ํ์ฌํญ์ด ์ ์ง๋์ด์ผํ ๊น? ์ญ.. ๋ก์ปฌ ์คํ ๋ฆฌ์ง vs ์ธ์ ์คํ ๋ฆฌ์ง vs ์ฟ ํค http ํ๋กํ ์ฝ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ด ์ฉ์ดํ๋๋ก ์ค์ํ ํด์ค๋ค. ๋ค๋ง http ํ๋กํ ์ฝ์ stateless ํ๋กํ ์ฝ์ด๋ผ๋ ์ ์์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด๋ ์๋ต์ ํธ๋ํน ํ์ง ์๋๋ค๋ ์ ์ด๋ค. ํด๋น ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ก์ปฌ/์ธ์ ์คํ ๋ฆฌ์ง ๋ฐ ์ฟ ํค๋ฅผ ์ฌ์ฉํด์ ์๋ฒ๋ค ๊ฐ์ ์์ฒญ์ ํธ๋ํน ํ ์ ์๋ค.TLDR;ํ๋์ ๋น๊ตํด๋ณด๊ธฐlocal storagesession storagecookie์ ์ฅ ์ฉ๋5MB ~ 10MB๋๋ถ๋ถ 5MB์ต๋ 4KBpersistence๋ธ๋ผ์ฐ์ /ํญ์ ๋ซ์๋ ์ ์ง, ์ง์ ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ญ์ ๋ฅผ ํด์ค์ผ ์ ๊ฑฐ๋๋ค.๋ธ๋ผ์ฐ์ /ํญ์ด ๋ซํ๋ฉด ์ ๊ฑฐ๋จ์ฟ ํค ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค (session-base ๋๋ persist)scopeorigin, ๋๋ฉ์ธ์ด๋ ํ๋กํ ์ฝ์ ์ํด ๊ฐ๊ฐ ์ ์ฅ๋จ.. [ํ์ ์คํฌ๋ฆฝํธ] Type error: Re-exporting a type when 'isolatedModules' is enabled requires using 'export type'. 2025.03.12 - [๐ฉ๐ป๐ป dev] - ๐ฌ React import ์ Wrapper ํจํด ํ์ฉํด ๋ณด๊ธฐ ๊ณผ ๊ฐ์ด importํ๋ ๊ฒฝ์ฐ" data-og-host="pyotato-dev.tistory.com" data-og-source-url="https://pyotato-dev.tistory.com/entry/%F0%9F%8D%AC-React-import-%EC%8B%9C-Wrapper-%ED%8C%A8%ED%84%B4-%ED%99%9C%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0" data-og-url="https://pyotato-dev.tistory.com/entry/%F0%9F%8D%AC-React-import-%EC%8B%9C-Wrapper-%ED%8C%A8%ED%.. ๐ฌ React import ์ Wrapper ํจํด ํ์ฉํด๋ณด๊ธฐ ์ต๊ทผ์ ๋ฆฌ์กํธ์์ import ์์ wrapper ํจํด์ ํ์ฉํ๋ค๋ ๊ธ์ ์ฝ์๋ค.lodash๋ Framer Motion๋ฅผ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์๋ก importํ๋ ์ํฉ์ด ์ข ์ข ์๋ค๊ณ ํ๋ค.์๋ฅผ ๋ค์ด, lodash๋ฅผ > ๊ณผ ๊ฐ์ด importํ๋ ๊ฒฝ์ฐ์ ๊ฐ๋ค.>import _ from 'lodash' -> imported 71.78KB>import debounce from "lodash/debounce"; -> imported 3.41KBimport merge from 'lodash/merge'; -> imported 16KB๋ฌผ๋ก ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ importํ๊ณ ์์ง๋ ์์ง๋ง, ๊ธ์ด์ด๊ฐ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด, ์ฌ๊ธฐ์ ๊ธฐ ํฉ์ด์ ธ ์๋ ํ์ผ๋ค๋ง๋ค framer-motion๋ className/bind๋ฅผ importํ๊ณ .. ๐ ๊ตฟ๋ฐ์ด CRA (Sunsetting Create React App) TLDR;๋ฆฌ์กํธ ์ฑ์ ์ค์นํ๊ธฐ ์ํด CRA๋ฅผ ์ฌ์ฉํ๊ณ ๊ณ์ จ๋์? ์ด์ ๋ CRA๊ฐ deprecate ๋ฉ๋๋ค.ํด๋น ์ด์ ๋ ํฌ๊ฒ CRA๋ ๋ผ์ฐํ , ๋ฐ์ดํฐ fetching, ์ฝ๋ ์คํ๋ฆฟ์ ์์ฒด์ ์ผ๋ก ์ง์ํ์ง ์์ ์ถ๊ฐ์ ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํด์ผํ๋ค๋ ์ , ์ต๊ทผ ๋ง์ ํ๋ ์์ํฌ๋ค์ด ํด๋น ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ณ ํด๋น ๊ธฐ๋ฅ๋ค์ ์ํด CRA๊ด๋ฆฌ๊ฐ ๋ถํ์ํด์ก๊ธฐ ๋๋ฌธ์ ๋๋ค.ํ๋ ์์ํฌ๋ ๋น๋ ํด๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ๋น๋ก CRA+๋น๋ ํด๋ ์ ํ ๊ฐ๋ฅํ ์ต์ ์ด์ง๋ง ๋ผ์ฐํ , ๋ฐ์ดํฐ fetching, ์ฝ๋ ์คํ๋ฆฟ ๊ธฐ๋ฅ์ “์” ํตํฉํด๋์ Next.js, React Router, Expo์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.์์ ํ๋ ์์ํฌ๋ค์ SSR๊ณผ CSR ์ต์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค.SSR์ด SEO๋ฟ๋ง.. ์ฑ๋ฅ - intro https://web.dev/learn/performance Learn Performance | web.devThis course is designed for those new to web performance, a vital aspect of the user experience. It covers key web performance concepts and techniques for improving performance.web.dev"์ฑ๋ฅ์ ์ฑ๊ฒจ์ผ์ง"๋ผ๊ณ ์๊ฐ์ ํ๊ณ , ์๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์์๋ณด๊ณ ์ฌ๊ธฐ์ ๊ธฐ ์ค์ฒํ์ง๋ง, ์ด๋ก ์ ์ธ ๊ฒ์ ๋ด๊ฐ ์ ์๊ณ , ์ฐ๊ฒฐ ์ง์ด ์ค์ ๋ก ์ ์ฉํ ์ ์๋๊ฐ๋ฅผ ์๊ฐํ๋ฉด 100% ์์ ์๊ฒ ๊ทธ๋ ๋ค๊ณ ํ๊ธฐ ์ด๋ ค์ ์์ฌ์ ๋ค.์ด๋ฒ์๋ web.dev๋ฅผ ํตํด ์๊ณ ์์๋ .. ์ด์ 1 2 3 4 ยทยทยท 9 ๋ค์