React 18 useDeferredValue 심화: 검색 자동완성에서 디바운싱을 제거하는 이유

React 18 useDeferredValue 심화: 검색 자동완성에서 디바운싱을 제거하는 이유

React Query v5: 무엇이 달라졌고 어떻게 대처해야 할까요?

TanStack Query v5 업데이트의 핵심 변경 사항과 안전한 마이그레이션을 위한 실전 가이드

"라이브러리 업데이트, 또 해야 해?"라고 생각하시나요?
프론트엔드 개발자에게 버전 업데이트는 숙명과도 같습니다.
하지만 이번 React Query v5는 단순한 기능 추가를 넘어, 라이브러리의 사이즈를 줄이고 사용성을 대폭 개선하는 '다이어트'와 '체질 개선'에 성공했습니다.
기존 사용자라면 반드시 알아야 할 핵심 변경점 3가지마이그레이션 전략을 아주 쉽게 정리해 드립니다.


📦 포인트 1: 이제는 '하나의 객체'로 통일됩니다

v5에서 가장 눈에 띄는 변화는 useQuery 훅의 사용법 통일입니다.
기존 v4까지는 인자를 넘기는 방식이 여러 가지여서 혼란스러웠지만, 이제는 단일 객체 형태만 지원합니다.

❌ v4 (더 이상 지원 안 함)

useQuery(key, fn, options)
useQuery(key, options)
// 인자 순서를 외워야 했습니다.

✅ v5 (권장 방식)

useQuery({
  queryKey: key,
  queryFn: fn,
  ...options
})
// 객체 하나로 깔끔해졌습니다!

💡 Tip: 이 변화 덕분에 타입 추론이 훨씬 강력해졌으며, 코드의 가독성이 크게 향상되었습니다.


🚫 포인트 2: useQuery에서 콜백이 사라졌습니다

아마 가장 충격적인 변화일 수 있습니다.
onSuccess, onError, onSettled 콜백이 useQuery 옵션에서 삭제되었습니다.

⚠️ 왜 삭제되었나요?
이 콜백들은 상태 동기화 버그를 자주 일으켰으며, React의 선언적 패턴과 맞지 않았기 때문입니다.
예를 들어, 컴포넌트가 리렌더링될 때 콜백 실행 예측이 어려웠던 문제를 해결하기 위함입니다.

🔄 어떻게 대체하나요?

상황 대체 방법
데이터 패칭 성공 후 Toast 띄우기 useEffect 활용 또는 상태(status) 확인
에러 발생 시 처리 Error Boundaries 사용 권장


✨ 포인트 3: 더욱 강력해진 Suspense와 InfiniteQuery

v5에서는 React 18의 기능인 Suspense를 완벽하게 지원하기 위해 전용 훅이 등장했습니다.
또한 무한 스크롤 구현이 획기적으로 간소화되었습니다.

  • 1. useSuspenseQuery
    데이터가 로딩 중일 때는 컴포넌트를 렌더링하지 않고 상위 Suspense로 위임합니다.
    isLoading 상태를 따로 관리할 필요가 없어 코드가 매우 깔끔해집니다.
  • 2. Simplified InfiniteQuery
    이제 initialPageParam 값을 필수로 명시해야 합니다.
    이로 인해 `undefined`로 인한 예기치 않은 오류를 방지할 수 있습니다.

🛠️ 마이그레이션 실전 가이드

v5로 넘어갈 준비가 되셨나요? 수동으로 모든 코드를 고치는 것은 너무 힘든 일입니다.
TanStack 팀에서 제공하는 Codemod를 활용하면 작업 시간을 획기적으로 줄일 수 있습니다.

💻 터미널 명령어 (Codemod)

npx jscodeshift ./path/to/src/ \
   -t ./node_modules/@tanstack/react-query/codemods/v5/remove-overloads/remove-overloads.js

위 명령어를 실행하면 객체 인자 형태로 자동 변환해 줍니다.
반드시 Git 커밋을 한 후 실행하세요!


🚀 요약 및 다음 단계

React Query v5는 개발자의 실수를 줄이고, React 최신 스펙에 맞춘 더 단단한 라이브러리로 진화했습니다.
초기 마이그레이션 비용은 들지만, 장기적으로 유지보수하기 훨씬 좋은 코드가 될 것입니다.

  • 객체형 인자 사용 습관화하기.
  • onSuccess 대신 useEffectAction 활용하기.
  • Codemod로 빠르게 문법 변환하기.

지금 바로 여러분의 프로젝트에서 npm install @tanstack/react-query@latest를 실행해 보세요!

댓글 쓰기