React Compiler는 코드에서 안전한 메모이제이션 지점을 찾아 자동으로 적용해. 습관적으로 useMemo와 useCallback을 뿌리던 방식을 다시 생각해 보자.
빌드할 때 안전한 캐시 경계를 찾아
React Compiler는 JSX와 값의 사용 관계를 분석하는 빌드 플러그인이야. 다시 계산할 필요가 없는 값과 안정적으로 유지할 수 있는 콜백을 찾아 useMemo와 useCallback에 해당하는 최적화를 생성해. 작성자는 자연스러운 컴포넌트 코드를 유지할 수 있어.
컴포넌트의 의미는 바꾸지 않아
Compiler는 useState, useEffect, useContext를 대신하지 않아. 상태와 부수 효과의 계약은 그대로야. 아주 비싼 계산 자체를 없애지도 않으므로 query가 바뀔 때마다 큰 데이터를 거르는 작업은 여전히 실행될 수 있어. 그런 체감 성능 문제에는 useTransition이나 useDeferredValue가 함께 필요할 수 있어.
Vite 빌드에 연결해
babel-plugin-react-compiler를 설치하고 @vitejs/plugin-react의 Babel plugin 목록에 추가해. 개발 서버를 다시 시작한 뒤 빌드 로그와 DevTools Profiler로 실제 적용 여부를 확인해.
예외는 좁게 표시해
외부에서 관찰되는 참조 동일성 때문에 최적화를 적용하면 안 되는 드문 컴포넌트에는 'use no memo' 지시어를 둘 수 있어. 여러 곳에서 반복된다면 지시어보다 설계를 먼저 의심해.
Compiler와 ESLint를 함께 사용해
eslint-plugin-react-compiler는 prop을 수정하거나 렌더링 중 값을 불안정하게 바꾸는 등 안전한 최적화를 막는 패턴을 알려 줘. 경고를 무조건 끄기보다 컴포넌트가 React의 순수성 계약을 어기는지 확인해.
Compiler가 켜졌는지는 package 설치만으로 판단하지 마. Vite의 React plugin에 Babel plugin이 실제로 등록됐는지, 개발 서버를 재시작했는지, 빌드 결과와 Profiler에서 다시 렌더링이 줄었는지 확인해.