redundant-trpc-calls
3+ tRPC calls to the same router suggest data should be fetched once.
Applies to: JavaScript, TypeScript
Why this matters
When multiple components in one file each call the same tRPC router (e.g. trpc.team.getMembers, trpc.team.getSettings, trpc.team.getRoles), each call creates a separate network request. Consider fetching once at a parent level and passing data down, or combining into a single procedure.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, PERF003 includedstablestack explain PERF003PERF003 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: PERF003
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
PERF004subscription-waterfall
2+ child queries gated by the same parent query create a sequential waterfall.
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.