노트
실무에서 막혔거나, 틀렸거나, "왜?"를 따로 설명해야 했던 개념들. 대화 → Q&A → 내 말로 설명 순서로 정리한 기록.
- 함수 컴포넌트가 옛날 값을 보는 이유 fiber(유지) vs 클로저(스냅샷), 그리고 stale closure
- 조건부로 훅은 못 부르는데, 왜 조건부 렌더는 되나 Rules of Hooks & fiber 슬롯 순서 매칭
- DB에 JOIN을 맡기면 '일을 떠넘기는' 걸까? N+1 쿼리와 데이터 지역성
- URL의 식별자를 '복호화'한다는 착각 평문 합성 식별자 — 역파싱 대신 정방향 매칭
- 단축 URL 뒤에 붙인 파라미터는 어디로 갔나? 리다이렉트 쿼리 포워딩
- '쓰기도 하고 읽기도 하는데' 죽은 코드다 단일 진실 공급원(SSOT) 이중화와 흔적 필드
- 서버와 브라우저의 '오늘'은 다르다 날짜 계산이 만드는 SSR hydration mismatch
- 섹션 사이 구분선, 컴포넌트 대신 플래그로 data-driven 렌더링 config 설계
- 새로고침해도 안 바뀌는 '랜덤'이 필요할 때 Math.sin 해시 기반 seeded pseudo-random
- SPA에서 라우터와 브라우저 히스토리가 desync되는 이유 window.history.pushState — URL 교체 없이 주소창을 바꾸는 법
- pages/ 안에 컴포넌트를 두면 안 되는 이유 Pages Router File Convention vs App Router Colocation
- 대규모 트래픽에서 프론트엔드 설계는 진짜 달라지나? Frontend Architecture at Scale
- SSG에서 ?page=2가 동작하지 않는 이유 SSG 파일 기반 라우팅과 Astro paginate() 설계 철학
- Claude Code가 다른 프로젝트 폴더 파일을 읽고 쓸 수 있는 이유 CLI 툴의 파일시스템 접근 범위 — 작업 디렉토리 ≠ 접근 범위
- 크롤러가 CSR 페이지를 못 읽는 이유 CSR·SSR·SSG 렌더링 방식과 브라우저 파이프라인
- A/B 실험 노출이 클릭 전에 발화되는 이유 A/B 실험 SDK 렌더 타임 vs 클릭 타임
- 링크 hover가 클릭 전에 URL을 보여줄 수 있는 이유 React render-time href evaluation
- 모듈 상단 상수에 쿠키를 읽으면 왜 안 되는가 JS Module Evaluation Timing
- router를 deps에 넣어도 useMemo가 재계산되지 않는 이유 Next.js Pages Router 싱글턴 in-place mutation & Object.is 비교
- 광고 픽셀은 UTM이 사라져도 어떻게 전환을 잡는가 Cookie-based Click Attribution & SPA Pageview Tracking
- 쿼리파라미터가 붙은 URL에서 탭 active가 깨지는 이유 router.asPath vs router.pathname — 경로 비교 전략
- 함수명과 const가 겹칠 때 ReferenceError가 나는 이유 TDZ (Temporal Dead Zone) — function hoisting과 const 블록 스코프 충돌
- useLayoutEffect가 SSR에서 경고를 내는 이유 React commit phase · browser paint timing · Rules of Hooks · layout thrashing
- useCallback 안에서 sessionStorage 값이 갱신되지 않는 이유 useCallback stale closure — 외부 store 파생값이 deps에 없을 때
- WebView에서 인증 팝업이 조용히 차단되는 이유 (2): 팝업 대신 리다이렉트로 우회하기 SDK popup vs redirect 패턴 / UA 기반 환경 분기
- WebView에서 인증 팝업이 조용히 차단되는 이유 (1): window.open() 차단 메커니즘 WebView의 window.open() silent blocking
- nuqs — URL Query를 React State처럼
- sessionStorage 대신 URL에 상태를 담는 이유 URL as Source of Truth + Browser History API + router.query Hydration
- 왜 서버는 이전 요청을 기억하지 않는가 Stateless 설계 — 상태는 앱이 아닌 데이터 소스가 들고 있다
- 입력창이 사라질 때 값이 멋대로 저장되는 이유 controlled input unmount 시 blur가 발생하는 이유
- 비동기 반복문에서 React 상태가 꼬이는 이유