React 성능 최적화: 모든 개발자가 알아야 할 12가지 팁
Source: Dev.to
Introduction
React 앱은 규모가 커질수록 느려지는 경우가 많습니다 — 불필요한 재렌더링, 무거운 번들, 느린 인터랙션 등이 성능 저하를 일으킵니다. 좋은 소식은? 대부분의 병목 현상은 간단한 최적화 기법으로 해결할 수 있다는 점입니다. 여기 React 개발자가 반드시 알아야 할 12가지 필수 팁을 소개합니다.
Tips
1. Use React.memo
props가 변하지 않았을 때 컴포넌트가 재렌더링되는 것을 방지합니다.
2. Use useCallback and useMemo
함수와 무거운 연산을 메모이제이션하여 매 렌더링마다 다시 생성되는 것을 피합니다.
3. Code‑split with React.lazy
필요할 때만 컴포넌트를 로드해 번들을 작게 유지하고 초기 로드를 빠르게 합니다.
4. Virtualize large lists
react-window 같은 라이브러리를 사용해 수천 개의 DOM 노드 대신 화면에 보이는 아이템만 렌더링합니다.
5. Avoid anonymous functions in JSX
JSX 안에서 익명 함수를 만들지 말고, JSX 밖에서 함수를 정의해 매 렌더링마다 새로운 참조가 생성되는 것을 방지합니다.
6. Keep state local
상태를 너무 높은 레벨으로 끌어올리지 마세요 — 전체 컴포넌트 트리가 불필요하게 재렌더링될 수 있습니다.
7. Optimize context usage
큰 컨텍스트는 큰 재렌더링 파동을 일으킵니다. 컨텍스트를 분할하거나 Zustand, Jotai, Recoil 같은 가벼운 대안을 사용하세요.
8. Memoize expensive calculations
무거운 로직을 useMemo 안에 감싸서 매 업데이트마다 다시 계산되는 것을 방지합니다.
9. Use production builds
프로덕션 모드는 경고를 제거하고 성능을 최적화합니다. 항상 npm run build 로 배포하세요.
10. Use the React Profiler
React DevTools Profiler를 사용해 느린 컴포넌트, 낭비된 렌더링, 병목 현상을 찾아냅니다.
11. Keep props stable
인라인 객체/배열은 새로운 참조를 만들게 됩니다. 이를 메모이제이션해 불필요한 재렌더링을 방지하세요.
12. Debounce or throttle high‑frequency events
입력, 스크롤, 마우스 이벤트가 상태 업데이트를 트리거하는 빈도를 제한해 DOM 업데이트를 줄입니다.
Best Practices
- 컴포넌트를 작고 집중된 형태로 유지합니다.
- Next.js, Remix 등 SSR을 활용해 로드 시간을 단축합니다.
- 번들 크기를 정기적으로 분석합니다.
- SWR 또는 React Query 로 API 요청을 캐시합니다.
- 무겁고 사용되지 않는 의존성을 제거합니다.
Conclusion
React 성능 최적화는 단일 트릭이 아니라 작은 선택들의 모음입니다. 이 12가지 팁을 적용하면 낭비되는 렌더링을 줄이고 반응성을 높이며 애플리케이션을 더욱 쾌활하게 만들 수 있습니다.