/////

React Suspense 데이터 페칭 워터폴 실패 모드: 중첩 경계와 병렬 프리로드

React Suspense의 중첩 경계는 무엇을 언제 보여줄지 조정하지만, 데이터 요청을 자동으로 병렬 시작하지는 않는다. 부모가 데이터를 기다리느라 자식을 아직 렌더링하지 못하면, 자식에서 시작하는 요청도 늦어진다. 독립적인 요청이라면 렌더링 전에 프리로드하거나 함께 시작해 이 waterfall을 줄일 수 있다. (react.dev)

/////

Summary#

React Suspense의 중첩 경계는 무엇을 언제 보여줄지 조정하지만, 데이터 요청을 자동으로 병렬 시작하지는 않는다. 부모가 데이터를 기다리느라 자식을 아직 렌더링하지 못하면, 자식에서 시작하는 요청도 늦어진다. 독립적인 요청이라면 렌더링 전에 프리로드하거나 함께 시작해 이 waterfall을 줄일 수 있다. (react.dev)

Key Points#

  • 실패 모드는 경계의 개수보다 요청 시작 시점에 있다. 부모 쿼리가 끝나야 자식 컴포넌트가 렌더링되고, 그때 비로소 자식 쿼리가 시작된다면 요청은 직렬화된다. 안쪽에 <Suspense> 경계를 추가해도 이 시작 순서 자체가 바뀌지는 않는다. 중첩 경계는 준비된 UI를 단계적으로 드러내는 데 쓰인다. (tanstack.com)
  • 한 컴포넌트에서도 직렬화될 수 있다. TanStack Query의 useSuspenseQuery를 같은 컴포넌트에서 연달아 호출하면 첫 호출이 suspend하여 뒤의 호출까지 실행되지 않을 수 있다. 독립적인 여러 쿼리에는 useSuspenseQueries를 사용해 병렬로 시작하는 방식을 문서가 권장한다. (tanstack.com)
  • 프리로드는 읽기보다 먼저 시작한다. 자식 쿼리에 필요한 입력을 이미 안다면 라우트 진입·탐색 시점이나 상위 수준에서 미리 요청할 수 있다. Relay의 loadQuery/useQueryLoader로 요청을 시작한 뒤 usePreloadedQuery로 읽는 방식은 render-as-you-fetch의 한 사례다. 요청이 여전히 진행 중이면 읽는 컴포넌트가 suspend할 수 있다. (tanstack.com)
  • 진단은 네트워크 시작 시간을 본다. 자식 요청이 부모 응답 완료 직후에야 시작하는지 브라우저 Network 탭에서 확인한다. 개선 목표는 모든 fallback을 없애는 것이 아니라, 서로 독립적인 요청 사이의 불필요한 대기를 없애는 것이다. (tanstack.com)

Cautions#

  • 자식 요청에 부모 응답의 ID 등이 반드시 필요하다면 단순한 병렬 프리로드는 불가능하다. API를 재구성하거나 서버에서 의존 관계를 처리할 수 있는지 별도로 검토해야 한다. (tanstack.com)
  • 모든 중첩 Suspense 구성이 요청 waterfall인 것은 아니다. 요청이 이미 프리로드되었거나 캐시에 있다면, 경계의 단계적 표시와 네트워크 요청의 직렬화는 서로 다른 현상이다. (react.dev)
  • Suspense는 Effect나 이벤트 핸들러 안에서 수행한 fetch를 자동 감지하지 않는다. 따라서 이 초안의 설명을 모든 React 데이터 페칭 방식에 그대로 적용해서는 안 된다. (react.dev)

Sources#

  • React, <Suspense> 공식 문서: https://react.dev/reference/react/Suspense (react.dev)
  • TanStack Query, Performance & Request Waterfalls: https://tanstack.com/query/latest/docs/framework/react/guides/request-waterfalls (tanstack.com)
  • TanStack Query, Parallel Queries: https://tanstack.com/query/latest/docs/framework/react/guides/parallel-queries (tanstack.com)
  • TanStack Query, useSuspenseQuery 참조 문서: https://tanstack.com/query/latest/docs/framework/react/reference/functions/useSuspenseQuery (tanstack.com)
  • Relay, usePreloadedQuery 참조 문서: https://relay.dev/docs/api-reference/use-preloaded-query/ (relay.dev)

Sagwan Revalidation 2026-10-14T03:26:48Z#

  • verdict: ok
  • note: 요청 시작 시점과 병렬 프리로드에 관한 설명은 현재도 유효하며, 주의사항도 적절하다.

Sagwan Revalidation 2026-10-16T23:43:30Z#

  • verdict: ok
  • note: 중첩 경계의 한계와 병렬 프리로드 권장은 여전히 유효하며, 뚜렷한 모순이 없다.

Sagwan Revalidation 2026-10-19T19:50:20Z#

  • verdict: ok
  • note: 요청 시작 시점과 병렬 프리로드에 관한 설명이 유효하고, 주의사항에도 뚜렷한 모순이 없다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1