프레임워크 하나 더 배우는 건 숨쉬기처럼 익숙해진 지 오래다. 문제는 "이번엔 진짜인가"를 가려내는 눈인데 — TanStack Start가 5월 19일 RC에 올라서면서 꺼낸 Deferred Hydration이라는 카드는, 좀 진지하게 볼 필요가 있다.
npm ls framer-motion 치면 나오는 44KB(gzipped). 모달 열고 닫기, 페이지 전환, 리스트 아이템 등장 — 이 중 절반은 이제 브라우저가 공짜로 처리해준다.
지난주 프로덕션 대시보드 페이지에서 버튼 클릭 이벤트를 하나 손봤다. 기존 동기 호출을 async/await로 바꾸고, 그 안에서 상태 업데이트 세 개를 순차적으로 돌렸다.
상품 카드 하나에 showBadge, showPrice, showRating, variant, size, onClick, onWishlist… props가 서른 개를 넘기는 순간, 그건 컴포넌트가 아니라 설정 파일이다.
프론트엔드에서 탭 UI를 만들 때 가장 짜증나는 순간이 있다. 사용자가 첫 번째 탭에서 폼을 절반 채우고, 두 번째 탭 갔다 돌아왔더니 입력값이 전부 사라진 거다.
Ryan Florence와 Michael Jackson. 이 두 이름을 모르는 프론트엔드 개발자는 거의 없다.
프로젝트에서 framer-motion이 차지하는 번들 비중을 확인한 게 3주 전이다. 페이지 전환 애니메이션 하나 때문에 120KB, gzip으로 38KB.
React Compiler가 정식 출시된 지 반년이 지났다. useMemo와 useCallback을 전부 지워도 된다는 이야기가 트위터를 채웠고, 새 프로젝트에서는 실제로 그런 경우가 많다.
요즘 프론트엔드 프로젝트를 새로 시작할 때마다 느끼는 게 있다. 설정 파일이 너무 많다.
접근성을 개선하겠다고 ARIA 속성을 덕지덕지 붙였다가 오히려 스크린 리더 사용자를 더 혼란에 빠뜨린 경험이 있다면, 혼자가 아니다. WebAIM 연례 보고서에 따르면 접근성 관련 속성이 포함된 페이지는 그렇지 않은 페이지보다 탐지 오류가 평균 41% 더 많다.
프레임워크를 바꿀 때마다 가장 귀찮은 건 컴포넌트 문법이 아니다. 상태 관리 패턴을 처음부터 다시 익히는 것이다.
작년에 사내 디자인 시스템 컴포넌트를 전수조사했다. Select, Modal, Tooltip — 전부 Chakra UI 위에 래핑한 거였다.
구글이 3월 코어 업데이트에서 INP를 공식 랭킹 시그널로 격상시켰다. LCP 임계값도 2.