인기 글
글 7개
Next.js View Transition을 적용했다가 걷어낸 이유
App Router에 페이지 전환을 넣으려고 Next 16의 ViewTransition을 켰다가 다시 뺐습니다. 스냅샷이 뷰포트가 아니라 요소 전체 높이로 잡히고, 전환 중에는 스크롤이 막힙니다. 결국 key 재마운트와 CSS 애니메이션으로 돌아왔습니다.
다크모드 깜빡임, useSyncExternalStore가 정말 해결했을까?
localStorage 읽기를 useState + useEffect에서 useSyncExternalStore로 바꾸며 깜빡임을 고쳤다고 커밋에 적었습니다. headless Chrome으로 재보니 두 구현의 DOM 변화는 같았습니다. 측정 방법과, 이 훅을 쓸 진짜 이유.
ChatGPT처럼 내 메시지를 화면 위에 고정하는 방법
ChatGPT·Claude처럼 보낸 메시지를 뷰포트 상단에 붙이는 훅입니다. id 트리거, rAF, min-h-full 세 가지가 맞물려야 동작합니다.
React.lazy를 썼는데 왜 다른 페이지까지 로딩될까?
배럴 index.ts의 page re-export, manualChunks의 의미별 묶음, 한국어 웹폰트 dynamic-subset. lazy가 안 먹는 세 가지를 직접 측정하며 걷어낸 기록입니다.
git pull이 안 될 때 — fetch/pull 차이와 divergent branches 해결
fetch와 pull이 무엇을 다르게 하는지, fast-forward가 무슨 뜻인지, 브랜치가 갈라졌을 때 merge와 rebase 중 무엇을 고르는지 정리했습니다.
블로그 조회수 하나 넣는데 DB까지 필요할까?
Hits, Upstash Redis, Supabase를 놓고 비교했습니다. 카운터 하나만 보면 Upstash가 맞지만, 댓글과 글별 조회수까지 붙일 계획이라 Supabase를 골랐습니다.
Next.js MDX 블로그를 만들면서 버린 것과 고른 것들
Contentlayer가 유지보수 중단이라 Velite로 갈아탔습니다. MDX 파이프라인 구성, FSD 폴더 구조, 테마 첫 페인트까지 만들면서 결정한 것들을 정리했습니다.