하나의 주제를 여러 편에 걸쳐 기록했습니다. 순서대로 읽으면 흐름이 이어집니다.
여러 Claude Code 세션의 상태를 한눈에 보는 macOS 데스크탑 위젯을 만들며 정리한 기록입니다.
연말에 나와 타인에게 예약 편지를 보내는 서비스를 만들며 남긴 기록입니다.
이벤트 루프부터 async/await까지, 자바스크립트 비동기를 개념 하나씩 짧게 정리한 시리즈입니다.
부트캠프 최종 프로젝트. 공통 컴포넌트 설계, 커스텀 오버레이 훅, 서버·클라이언트 호환 fetch까지 구조를 직접 설계했습니다.
카드 렌더링 최적화, MSW 기반 mock fetching, 개발 환경 분리까지 UX와 DX를 함께 끌어올린 기록입니다.
아이돌 후원 서비스를 만들며 팀 프로젝트 세팅부터 무한 스크롤, 스켈레톤 UI까지 처음 부딪힌 것들을 정리했습니다.
exhaustive-deps는 컴포넌트 안에서 만든 함수만 봅니다. 훅이 반환한 함수는 안정적이라고 가정하고 넘어갑니다. 실제로 규칙을 돌려 경계가 어디까지인지 확인했습니다.
메타 태그를 다 넣었는데도 검색 결과는 파란 링크 한 줄뿐이었습니다. 검색엔진이 페이지를 '읽는' 것과 '이해하는' 것은 다른 문제였고, 그 사이를 메우는 게 구조화된 데이터였습니다.
전역 Suspense로 감싸면 경고는 사라지지만, 페이지의 정적 마크업까지 placeholder로 대체됩니다. Next.js 소스코드를 따라가 BailoutToCSRError가 CLIENT_RENDERED 경계로 어떻게 흐르는지 살펴봅니다.
hooks 기반 이벤트 드리븐 위젯을 만들고, 그 과정에서 왜 Electron을 선택했는지, hook과 기록 파일이라는 두 신호를 어떻게 교차 검증했는지 정리했습니다.
문서에는 "queued"라고만 적혀 있습니다. 호출 단위인지 컴포넌트 단위인지 탭 전체인지 알 수 없어서, 30개 요청을 세 가지 방식으로 직접 재봤습니다.
참조형 데이터는 내용이 같아도 주소가 다르면 다른 값으로 취급됩니다. 이 특성이 useEffect 의존성 배열과 React.memo에서 왜 문제가 되는지, useCallback과 useMemo가 무엇을 해결하는지, 그리고 왜 모든 곳에 쓰면 안 되는지 정리합니다.
인앱 브라우저에서 기능이 깨지는 문제와 대용량 목록 렌더링 성능 문제, 두 가지를 실제로 부딪히고 풀어낸 기록입니다.
Promise 핸들러가 항상 비동기로 실행되는 이유인 마이크로태스크 큐를 짚고, 이를 편하게 다루는 async/await 문법과 실행 순서 종합 문제로 시리즈를 마무리합니다.