# toss/suspensive

All-in-one for React Suspense — ErrorBoundary with shouldCatch, clientOnly to skip SSR for a boundary, Delay, and more

Repository: https://github.com/toss/suspensive
Canonical: https://ross.abutalabs.com/products/suspensive
Homepage: https://suspensive.org
Language: TypeScript
License: MIT
License Family: permissive
Topics: react, suspense, errorboundary, ssr, suspensive, react-query, async
Last push: 2026-07-04T08:26:37+00:00

## Health v2 (maintenance only)
Score: 88/100 (v2, computed 2026-09-03T02:39:23.370411+00:00)
- activity 90, release rhythm 79, longevity 99
- inputs: {"age_days": 1386, "days_push": 60, "days_rel": 60, "gap_med": 0, "n_releases_24m": 480}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1043, forks 96 (observed 2026-08-28T04:03:21.100590+00:00)

## What it is
Suspensive is a TypeScript library of declarative React components and hooks that fill gaps in React's Suspense and Error Boundary APIs, including ErrorBoundary with shouldCatch, ErrorBoundaryGroup, Delay, and clientOnly Suspense. It also ships packages integrating Suspense patterns with TanStack Query and Jotai.

## Use cases
- handle async loading and errors declaratively in React
- catch only specific error types in an error boundary
- reset multiple error boundaries at once
- prevent loading spinner flash with a delay
- skip SSR for a Suspense boundary and render fallback on server
- use React Query with Suspense-based components
- migrate legacy error boundary libraries to a modern API

## When to choose
- you build React apps with Suspense and want declarative error/loading handling
- you use TanStack Query or Jotai and want Suspense-integrated wrappers
- you need selective error catching, grouped resets, or client-only Suspense without hacks

## When to avoid
- you don't use React or rely on server components exclusively
- you need a full state management or data fetching solution rather than Suspense utilities
- your project is locked to very old React versions without Suspense support

## Facets
- artifact type: library
- maturity: active
- function: ui-components, state-management, error-handling, middleware
- domain: frontend, web-development
- platform: cross-platform
- tags: react-suspense, error-boundary, react-query, ssr, async-components, typescript, declarative-ui, nodejs, web-server

## Member repositories
- toss/suspensive (main) score 88

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:03:21.100590+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T07:02:32.776943+00:00, confidence not recorded.
  - readme: https://github.com/toss/suspensive (fetched 2026-08-28T04:03:21.100590+00:00, sha f66a6cf099aa)
  - homepage: https://suspensive.org (fetched 2026-08-29T13:03:45.504839+00:00, sha 1656b1f6c928)
  - site_page: https://suspensive.org/docs/introduction (fetched 2026-08-29T13:03:45.514384+00:00, sha f9762d662f62)
  - site_page: https://suspensive.org/docs/react/getting-started (fetched 2026-08-29T13:03:45.516204+00:00, sha 29987ce64f42)
  - site_page: https://suspensive.org/docs/react/comparison (fetched 2026-08-29T13:03:45.517788+00:00, sha b624a8f32982)
  - site_page: https://suspensive.org/docs/react/motivation (fetched 2026-08-29T13:03:45.519377+00:00, sha 0ae2ed3efbac)
  - site_page: https://suspensive.org/docs/react/installation (fetched 2026-08-29T13:03:45.520885+00:00, sha 7767cddef7be)
  - site_page: https://suspensive.org/docs/react/Suspense (fetched 2026-08-29T13:03:45.522696+00:00, sha b44be543997f)
  - site_page: https://suspensive.org/docs/react/ErrorBoundary (fetched 2026-08-29T13:03:45.524537+00:00, sha 56ef3f33de4c)
  - site_page: https://suspensive.org/docs/react/ErrorBoundaryGroup (fetched 2026-08-29T13:03:45.526444+00:00, sha 01dce2d3df75)
- Data as of 2026-08-30T08:39:29.467469+00:00.
