useEffect 4

React.lazy와 Code Splitting

리액트 애플리케이션의 초기 로딩 속도가 느리다면 거대해진 자바스크립트 번들 사이즈가 원인일 확률이 높다. React.lazy와 Suspense를 활용한 코드 스플리팅(Code Splitting) 기법을 통해, 당장 필요하지 않은 리소스를 지연 로딩(Lazy Loading)하여 성능을 최적화하는 방법과 실무 적용 시 주의사항을 상세히 알아본다. React 초기 로딩 속도 최적화: React.lazy와 Code Splitting으로 번들 사이즈 줄이기SPA(Single Page Application)로 개발된 웹 서비스의 가장 큰 약점은 초기 로딩 속도다. 사용자가 첫 페이지에 진입할 때, 당장 보지 않을 페이지(예: 설정, 마이페이지, 관리자)의 코드까지 포함된 거대한 자바스크립트 파일을 한 번에 다운로..

카테고리 없음 2025.12.16

React useState의 초기값 연산 최적화 기법

React의 useState 초기값 설정 시 무거운 연산이 포함될 경우, 불필요한 재연산으로 인해 렌더링 성능이 저하될 수 있다. 이를 방지하기 위한 Lazy Initialization(지연 초기화) 기법의 원리와 실무 활용 패턴(LocalStorage 등)을 상세히 분석한다. React useState의 Lazy Initialization: 초기값 연산 최적화 가이드React 개발을 하다 보면 컴포넌트의 초기 상태(Initial State)를 설정하기 위해 복잡한 연산이 필요한 경우가 있다. 대부분의 개발자는 useState를 사용할 때 습관적으로 값을 직접 전달하지만, 이 사소한 습관이 때로는 심각한 성능 이슈를 야기한다.특히 로컬 스토리지 접근이나 대규모 배열 필터링 같은 무거운 작업이 포함된 경우..

카테고리 없음 2025.12.05

setTimeout(fn, 0)이 실제로 0초 뒤에 실행되지 않는 이유

브라우저 환경에서 setTimeout(callback, 0)이 실행 순서를 보장하는 원리는 자바스크립트의 이벤트 루프(Event Loop)와 태스크 큐(Task Queue)에 있다. React 상태 업데이트 직후 DOM 조작이나 로직 실행 순서를 제어해야 할 때 발생하는 문제 상황과, 이를 해결하는 올바른 패턴(useEffect, flushSync)을 정리한다. setTimeout(fn, 0)의 동작 원리: 태스크 큐와 실행 순서 보장이 글은 JavaScript Core 시리즈의 4번째 글이다. 이전 글 보기브라우저에서 실행되는 자바스크립트는 싱글 스레드(Single Thread) 기반 언어이기 때문에 기본적으로 "한 번에 하나의 작업"만 처리할 수 있다. 하지만 개발을 하다 보면 비동기 데이터 처리나 ..

카테고리 없음 2025.12.04

React useEffect 와 useLayoutEffect 의 차이

React의 useEffect와 useLayoutEffect는 문법은 동일하지만 실행 시점에서 결정적인 차이가 있다. 브라우저의 화면 그리기(Paint) 단계와 관련된 두 훅의 동작 원리를 분석하고, 화면 깜빡임(Flicker) 문제를 해결하기 위해 언제 useLayoutEffect를 써야 하는지 정리한다. useEffect vs useLayoutEffect: 실행 시점과 렌더링 최적화React 개발을 하다 보면 99%의 상황에서는 useEffect만으로 충분하다. 데이터 페칭, 구독 설정, 로깅 등 대부분의 부수 효과(Side Effect)는 화면이 그려진 후에 실행되어도 무방하기 때문이다.하지만 간혹 컴포넌트가 렌더링 된 직후에 UI가 미세하게 깜빡거리거나, 위치가 뒤늦게 잡히는 현상을 목격할 때가 ..

카테고리 없음 2025.12.04