---
type: snippet
kind: Explainer
tags: ['react', 'suspense']
status: release
ctime: 2024-06-24
mtime: 2026-08-19
generated: { by: claude/opus-5, at: 2026-08-19T00:00:00Z }
verified: { by: claude/opus-5, at: 2026-08-19T00:00:00Z }
sources:
  - id: github-facebook-react
    resource: https://github.com/facebook/react/blob/eb8feb71096eec5c885b2a4c7d8d030d3622f265/packages/react/src/ReactLazy.js#L222
  - id: github-tanstack-query
    resource: https://github.com/TanStack/query/blob/b8e35598ef24855a2792414faea5721d833fa61e/packages/react-query/src/suspense.ts#L61
  - id: developer-mozilla-ko-docs
    resource: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/throw
  - id: jser-ddir-rie
    resource: https://jser.pro/ddir/rie?reactVersion=18.3.1&codeKey=ud62nsxll29yy0dzba8
---

```ts
if (!data) {
  throw fetch()
}
```

Suspense는 던져진 promise를 캐치해서 resolve될 때까지 fallback을 렌더하고, resolve되면 다시 렌더한다. 던지는 건 예외와 같은 메커니즘이다.

---

- https://github.com/facebook/react/blob/eb8feb71096eec5c885b2a4c7d8d030d3622f265/packages/react/src/ReactLazy.js#L222
- https://github.com/TanStack/query/blob/b8e35598ef24855a2792414faea5721d833fa61e/packages/react-query/src/suspense.ts#L61
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/throw
- https://jser.pro/ddir/rie?reactVersion=18.3.1&codeKey=ud62nsxll29yy0dzba8
