no-cdn-configured
App Runner service detected without a CloudFront distribution — static assets are not edge-cached and clients are limited to HTTP/1.1.
Applies to: Project-level
Why this matters
AWS App Runner only serves HTTP/1.1. Browsers limit HTTP/1.1 to 6 concurrent connections per origin, so a page with 20+ JS chunks needs 3-4 serial download rounds. Adding a CloudFront distribution in front of App Runner enables HTTP/2 (unlimited multiplexing), edge caching for static assets, and global low-latency delivery.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, PERF007 includedstablestack explain PERF007PERF007 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: PERF007
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.
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.