로고로고

React Query 캐싱

2025년 10월 22일

React Query를 써보면 제일 먼저 느끼는 게 있다.

“어, 이거 다시 안 불러오네?”

그게 바로 캐싱이다.

 

캐시가 하는 일

React Query는 서버에서 받아온 데이터를 메모리에 저장한다.

같은 queryKey로 다시 요청하면, 서버에 가지 않고 캐시 데이터를 바로 보여준다.

그 사이 백그라운드에서 새 데이터를 살짝 받아와 최신 상태로 유지한다.

즉, 화면은 빠르고 데이터는 최신이다.

 

 

두 개만 기억하면 된다

  • staleTime: 데이터가 "stale" 상태로 간주되는 기간을 지정
    • 데이터가 "stale" 상태란, 이전 쿼리 결과가 캐시되어 있지만, 그 결과가 일정 시간 동안 업데이트되지 않은 상태
  • cacheTime: 캐시가 메모리에 남아있는 기간

staleTime이 지나면 데이터는 오래된(stale) 상태가 되고,

다시 쿼리가 실행될 때 새로 요청한다.

cacheTime이 지나면 캐시 자체가 메모리에서 사라진다.

 

 

실무에서 자주 쓰는 패턴

  • 자주 안 바뀌는 데이터 → staleTime: Infinity
  • 액션 후 바로 새로고침 필요할 때 → invalidateQueries
  • 탭 이동 후에도 데이터 유지하고 싶을 때 → cacheTime 늘리기

 

 

React Query 캐싱은 단순히 ‘데이터 저장’이 아니라

사용자 경험을 부드럽게 만들어주는 핵심 기능이다.

staleTime이랑 cacheTime만 이해해도 절반은 끝난다.