TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
888786858483828180797877
Frontend
얕은 복사 vs 깊은 복사 — JavaScript 객체가 꼬이는 이유
스프레드로 복사했는데 원본이 같이 바뀐다면 얕은 복사 함정이다. 참조와 값, 중첩 객체, structuredClone까지 실무 기준으로 정리한다.
Frontend
React 리스트의 key 경고, index를 key로 쓰면 안 되는 이유
"each child should have a unique key" 경고와, 배열 index를 key로 쓸 때 생기는 입력값 꼬임·잘못된 재사용 버그.
Frontend
React 상태관리, Context·Zustand·Redux 언제 무엇을
전역 상태가 필요하다고 무조건 Redux는 아니다. 규모·갱신 빈도·팀 규약 기준으로 Context, Zustand, Redux를 가른다.
Frontend
무한 스크롤, IntersectionObserver로 깔끔하게 구현
scroll 이벤트 + offset 계산은 성능도 나쁘고 버그도 많다. IntersectionObserver로 sentinel을 감시하는 방식이 표준이다.
Frontend
React.memo, useMemo, useCallback 언제 쓰고 언제 안 쓰나
세 가지 메모이제이션은 "비싼 계산"이나 "memo된 자식에 넘기는 참조"에만 의미가 있다. 무지성 남발은 오히려 느려진다. 판단 기준 정리.
Frontend
Next.js App Router에서 "use client" 경계 제대로 긋기
서버 컴포넌트가 기본, 상호작용이 필요한 잎 컴포넌트만 클라이언트로. use client를 트리 위쪽에 박으면 번들이 통째로 커진다.
Frontend
Next.js Hydration mismatch 에러, 원인별 해결 총정리
Hydration failed 에러는 서버 HTML과 클라이언트 첫 렌더가 다를 때 난다. Date·random·typeof window·잘못된 HTML 중첩 등 원인별 처방.
Frontend
React useEffect 무한 루프, 왜 생기고 어떻게 끊나
useEffect 무한 루프의 99%는 의존성 배열 안에 매 렌더마다 새로 만들어지는 객체·함수가 들어가서다. 원인 3가지와 해결법.
Frontend
TanStack Start 1.0 — Remix·Next 대비 production 도입 평가
TanStack Start 1.0 GA. SaaS 1개 production 전환 사후 — 라우팅, 데이터 로딩, SSR 패턴, Remix·Next 대비 강약점.
Frontend
React Server Components — cache() API 1년 실전, 6가지 패턴
RSC cache()를 1년 운영하며 정착한 6가지 패턴. request memoization 오해, 직렬화 함정, 동등성 키 설계까지.
Frontend
Remix 3 + React Router 8 통합 — 라우팅의 미래는 어디로?
Remix와 React Router의 통합 발표 이후 1년. 무엇이 합쳐졌고, Next.js와 어떻게 다르며, 누가 어느 쪽을 선택해야 하나.
Frontend
Million.js v4 은퇴 — React Compiler 1.0 이후 재평가
React Compiler 1.0 출시 후 Million.js가 v4를 끝으로 메인 개발 종료. 우리 코드베이스에 미친 영향과 마이그레이션 실측.