--- id: function-duration-io-and-after title: Function duration, I/O, and post-response work status: active candidateKinds: ["slow_route"] frameworks: ["next@>=15.0.0"] priority: 75 citations: ["https://nextjs.org/docs/app/api-reference/functions/after", "vercel-react-best-practices:async-parallel", "vercel-react-best-practices:server-after-nonblocking"] maxBriefChars: 850 --- ## Investigation Brief When wall-clock latency is much higher than CPU time, check critical-path awaits before blaming rendering or compute. ## Evidence To Check Compare `cpu.p95`, `ttfb.p95`, and `latency.p95`. In source, separate dependent awaits from independent awaits, and identify analytics, logging, or notification work that can run after the response. ## Do Not Recommend When Do not wrap dependent operations in `Promise.all`. Do not replace `Promise.allSettled` when partial failure handling is intentional. ## Verification Name the awaits that can move, the work that can run post-response, and the observed CPU-vs-wall-clock gap.