Picked
All posts
testing
테스트 선정과 작성
무엇을 테스트하고 무엇을 빼는가, 그리고 테스트 작성 규칙
testing
왜 테스트 코드를 작성해야 할까요?
테스트가 주는 확신의 본질과 QA와의 역할 차이
rendering
스켈레톤, 중복 코드 없이 만들기
실제 컴포넌트의 CSS 클래스를 재사용해 스켈레톤을 만드는 패턴. 디자인이 바뀌어도 한 번만 고치면 자동 동기화된다.
infinite-scroll
렌더링 전략 최종 선택: Streaming
CSR → SSR → Streaming, 각 전략의 한계를 발견하고 개선한 과정
infinite-scroll
이미지 최적화: 이미지 용량 97% 감소
srcset + CDN 리사이징으로 773kB → 20kB
infinite-scroll
무한 스크롤 구현 및 리렌더링 최적화
IntersectionObserver와 React.memo로 렌더링 80% 감소
infinite-scroll
에러 방어: 무한 재요청 방지, 빈 목록 처리
API 실패 시 무한 반복 요청 차단과 빈 목록 처리
engineering
Sentry 구축 및 이슈 98% 해결
beforeSend 훅으로 단서 자동 매핑, 86종에서 1종으로 이슈 통합
rendering
최고의 검색결과 목록이란 무엇인가
디바운싱, 캐싱, useDeferredValue로 만드는 검색 UX
validation
Zod 활용기
타입 선언과 유효성 검증을 하나의 스키마로 통합하기
error-handling
에러 처리는 왜 필요한가?
에러 예방과 대응 전략의 첫 번째 단계
error-handling
에러 피드백 UX 설계
사용자 반응 관찰에서 시작한 에러 메시지 개선
error-handling
에러 처리 원칙 세우기
throw와 catch의 기준을 정하는 6가지 원칙
error-handling
Client Side 렌더링 에러 처리
Error Boundary로 렌더링 에러 격리하기
error-handling
Server Side 렌더링 에러 처리
error.tsx의 한계와 try-catch 선택 과정
error-handling
이벤트 핸들러 시점 에러 처리
버튼 클릭 에러 처리와 로딩 상태 관리
error-handling
전역/공통/개별 에러 처리
중복 에러 처리 로직을 하나로 통합하기
communication
좋은 PR과 Commit을 작성하는 방법
작은 단위의 PR과 커밋이 가져다주는 이점과 실천법
engineering
디자인 시스템 구축기
Material Design 기반 컴포넌트 설계와 모노레포 재사용