subscription-waterfall
2+ child queries gated by the same parent query create a sequential waterfall.
Applies to: JavaScript, TypeScript
Why this matters
When multiple child queries depend on a parent query via `enabled: !!parentData`, they can't start until the parent finishes — creating a sequential waterfall. This is especially slow when the child queries are independent of each other. Consider a server-side join, a combined procedure, or parallel fetching with Suspense.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, PERF004 includedstablestack explain PERF004PERF004 is part of the Pro rule set. See pricing — the free tier ships 24 checks with no signup.
False positive in your codebase? Suppress a single line with # noqa: PERF004
More Performance checks
n-plus-one-query
Database or API calls inside loops can cause N+1 performance issues
PERF002uninstrumented-llm-call
LLM API call without timing instrumentation hides latency bottlenecks
PERF003redundant-trpc-calls
3+ tRPC calls to the same router suggest data should be fetched once.
PERF005render-blocking-font-import
@import url() for external font CDNs blocks rendering until the font CSS is fetched
PERF006uncached-public-page
Next.js page does database queries but does not export revalidate, dynamic, or generateStaticParams — every request triggers a fresh SSR.
PERF007no-cdn-configured
App Runner service detected without a CloudFront distribution — static assets are not edge-cached and clients are limited to HTTP/1.1.