Skip to content
Intent
Libraries
Framework
Start
Router
Data & State
Query
DB
Store
AI
UI
Table
Charts
Form
Markdown
Highlight
UX
Virtual
Pacer
Hotkeys
Tooling
Devtools
Config
CLI
Intent
Browse all libraries
Blog
Blog & Release Notes
About
YouTube
The official TanStack channel.
Workshops
Live sessions from the maintainers.
Release Notes
The latest releases and changelog.
Community
Channels
Discord
Real-time community support.
GitHub
Source, issues, discussions, and releases.
People & Work
Maintainers
Meet the people maintaining the stack.
Showcase
Projects selected by the TanStack team.
Community projects
TanChat
NEW
Tools
Tools
Application Starter
Alpha
Generate TanStack app starters.
Stats
NPM and ecosystem usage data.
Merch
Support
Support
Support Overview
Find the right support path.
Partners
Companies supporting TanStack.
OSS Sponsors
Sponsors keeping TanStack open source.
Enterprise Support
Private consulting and expert support.
Contact
Get in touch with the TanStack team.
About
Ethos
How we approach open source.
Tenets
The values that shape TanStack libraries.
Design System
Logos, tokens, and UI components.
Search
Ask AI
Libraries
Blog
Community
TanChat
NEW
Tools
Merch
Support
Search
Ask AI
Sign In
Back
TanStack Intent
/
Registry
/
@suspensive/react
Fetching package from npm...
TanStack Intent
/
Registry
/
@suspensive/react
@suspensive/react
3.21.4 (latest) — 6 skills
3.21.3 — 6 skills
Copy install prompt
Suspensive interfaces for react
Skills
(6)
Skills
All Skills
6
migrate-to-v3
code-splitting
error-handling
loading-ux
react
ssr-client-only
Skills
6
History
migrate-to-v3
Migrate @suspensive/react v1/v2 code to v3: wrap builder → Component.with(), AsyncBoundary and withSuspense/withDelay/withErrorBoundary/withErrorBoundaryGroup removal, Suspense.CSROnly → clientOnly prop, ErrorBoundaryGroup.Reset → ErrorBoundaryGroup.Consumer, fallback error propagation change, React >= 18 requirement, npx @suspensive/codemods. Load when upgrading @suspensive/react or when encountering wrap/AsyncBoundary/CSROnly in code or generated output.
180 lines
code-splitting
Safe code splitting with @suspensive/react lazy (experimental): .load() preloading, onSuccess/onError callbacks, createLazy for shared defaults, reloadOnError({ retry, retryDelay, storage, reload }) to recover from chunk-load failures caused by deploy version skew. Load when code-splitting routes/components, preloading on hover, or handling "Loading chunk failed" errors.
199 lines
error-handling
Layered error handling with @suspensive/react: ErrorBoundary (fallback, shouldCatch, resetKeys, onReset, onError), ErrorBoundary.Consumer, useErrorBoundary().setError, useErrorBoundaryFallbackProps, ErrorBoundaryGroup, ErrorBoundaryGroup.Consumer, blockOutside, useErrorBoundaryGroup, ErrorBoundaryFallbackProps type. Load when catching, filtering, resetting, or propagating render errors.
397 lines
loading-ux
Loading UX without flash-of-loading in @suspensive/react: Suspense fallback, Delay (ms, fallback, isDelayed render prop) to hold back spinners and fade skeletons in, DefaultPropsProvider + new DefaultProps for app-wide default fallbacks. Load when writing Suspense fallbacks, skeletons, spinners, or global loading defaults.
259 lines
react
Core skill for @suspensive/react: Suspense (clientOnly prop), ErrorBoundary (fallback, shouldCatch, resetKeys, onError, onReset), ErrorBoundaryGroup, Delay, ClientOnly, useIsClient, useErrorBoundary, useErrorBoundaryFallbackProps, DefaultPropsProvider/DefaultProps, lazy/createLazy/reloadOnError, and the shared .with() HOC pattern. Load when code imports '@suspensive/react' or needs declarative Suspense boundaries, error boundaries, loading fallbacks, or client-only rendering in React 18+.
175 lines
ssr-client-only
SSR control and client-only rendering in @suspensive/react: Suspense clientOnly prop to skip SSR per boundary, ClientOnly component, useIsClient hook — all useSyncExternalStore-based and hydration-mismatch-safe. Load when skipping SSR for a subtree, accessing browser APIs (window, localStorage), fixing hydration mismatches, or replacing next/dynamic ssr:false or useEffect mounted flags.
273 lines