Sign inConnect your agent
infochanged

Workers, Durable Objects - Inspect Worker startup performance with Wrangler

Announced
Tags
Workers, Durable-Objects
Severity
info, set by reef/rss-rule-v1
Source
https://developers.cloudflare.com/changelog/post/2026-07-31-wrangler-startup-profile-summary/

<p><code>wrangler check startup</code> now reports your Worker's raw and compressed bundle sizes. It also summarizes local CPU activity during startup directly in your terminal.</p> <p>Large bundles and costly startup work can introduce cold-start latency, so use this command to find code and large dependencies that slow your Worker before it handles requests.</p> <p>The summary includes sampled, active, garbage collection, and idle time. Wrangler continues to save a <code>.cpuprofile</code> file for detailed flamegraph analysis in Chrome DevTools or VS Code.</p> <figure class="nb-code-figure" data-nb-lang="bash"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="bash" data-nb-lang="bash"><code><span class="line"><span class="nb-shiki-1t8gfj">⛅️</span><span class="nb-shiki-mdbnqw"> wrangler</span><span class="nb-shiki-dzsirb"> 4.116.0</span></span> <span class="line"><span class="nb-shiki-1t8gfj">───────────────────────────────────────────────</span></span> <span class="line"><span class="nb-shiki-1t8gfj">├</span><span class="nb-shiki-mdbnqw"> Building</span><span class="nb-shiki-mdbnqw"> your</span><span class="nb-shiki-mdbnqw"> Worker</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Worker</span><span class="nb-shiki-mdbnqw"> Built!</span><span class="nb-shiki-mdbnqw"> 🎉</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">├</span><span class="nb-shiki-mdbnqw"> Analysing</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Startup</span><span class="nb-shiki-mdbnqw"> phase</span><span class="nb-shiki-mdbnqw"> analysed</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Bundle:</span><span class="nb-shiki-dzsirb"> 7171.25</span><span class="nb-shiki-mdbnqw"> KiB</span><span class="nb-shiki-mdbnqw"> /</span><span class="nb-shiki-mdbnqw"> gzip:</span><span class="nb-shiki-dzsirb"> 2197.00</span><span class="nb-shiki-mdbnqw"> KiB</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Local</span><span class="nb-shiki-mdbnqw"> startup</span><span class="nb-shiki-mdbnqw"> profile:</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Profile</span><span class="nb-shiki-mdbnqw"> window:</span><span class="nb-shiki-dzsirb"> 70.3</span><span class="nb-shiki-mdbnqw"> ms</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Sampled</span><span class="nb-shiki-mdbnqw"> time:</span><span class="nb-shiki-dzsirb"> 70.3</span><span class="nb-shiki-mdbnqw"> ms</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Active:</span><span class="nb-shiki-dzsirb"> 38.5</span><span class="nb-shiki-mdbnqw"> ms</span><span class="nb-shiki-140thh"> (including </span><span class="nb-shiki-dzsirb">3.7</span><span class="nb-shiki-mdbnqw"> ms</span><span class="nb-shiki-mdbnqw"> garbage</span><span class="nb-shiki-mdbnqw"> collection</span><span class="nb-shiki-140thh">)</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Idle:</span><span class="nb-shiki-dzsirb"> 31.8</span><span class="nb-shiki-mdbnqw"> ms</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Samples:</span><span class="nb-shiki-dzsirb"> 36</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> CPU</span><span class="nb-shiki-mdbnqw"> Profile</span><span class="nb-shiki-mdbnqw"> has</span><span class="nb-shiki-mdbnqw"> been</span><span class="nb-shiki-mdbnqw"> written</span><span class="nb-shiki-mdbnqw"> to</span><span class="nb-shiki-mdbnqw"> worker-startup.cpuprofile.</span><span class="nb-shiki-mdbnqw"> Load</span><span class="nb-shiki-mdbnqw"> it</span><span class="nb-shiki-mdbnqw"> into</span><span class="nb-shiki-mdbnqw"> the</span><span class="nb-shiki-mdbnqw"> Chrome</span><span class="nb-shiki-mdbnqw"> DevTools</span><span class="nb-shiki-mdbnqw"> profiler</span><span class="nb-shiki-140thh"> (or </span><span class="nb-shiki-mdbnqw">directly</span><span class="nb-shiki-mdbnqw"> in</span><span class="nb-shiki-mdbnqw"> VSCode</span><span class="nb-shiki-140thh">) to view a flamegraph.</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> Note</span><span class="nb-shiki-mdbnqw"> that</span><span class="nb-shiki-mdbnqw"> the</span><span class="nb-shiki-mdbnqw"> CPU</span><span class="nb-shiki-mdbnqw"> Profile</span><span class="nb-shiki-mdbnqw"> was</span><span class="nb-shiki-mdbnqw"> measured</span><span class="nb-shiki-mdbnqw"> on</span><span class="nb-shiki-mdbnqw"> your</span><span class="nb-shiki-mdbnqw"> Worker</span><span class="nb-shiki-mdbnqw"> running</span><span class="nb-shiki-mdbnqw"> locally</span><span class="nb-shiki-mdbnqw"> on</span><span class="nb-shiki-mdbnqw"> your</span><span class="nb-shiki-mdbnqw"> machine,</span><span class="nb-shiki-mdbnqw"> which</span><span class="nb-shiki-mdbnqw"> has</span><span class="nb-shiki-mdbnqw"> a</span><span class="nb-shiki-mdbnqw"> different</span><span class="nb-shiki-mdbnqw"> CPU</span><span class="nb-shiki-mdbnqw"> than</span><span class="nb-shiki-mdbnqw"> when</span><span class="nb-shiki-mdbnqw"> your</span><span class="nb-shiki-mdbnqw"> Worker</span><span class="nb-shiki-mdbnqw"> runs</span><span class="nb-shiki-mdbnqw"> on</span><span class="nb-shiki-mdbnqw"> Cloudflare.</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span></span> <span class="line"><span class="nb-shiki-1t8gfj">│</span><span class="nb-shiki-mdbnqw"> As</span><span class="nb-shiki-mdbnqw"> such,</span><span class="nb-shiki-mdbnqw"> CPU</span><span class="nb-shiki-mdbnqw"> Profile</span><span class="nb-shiki-mdbnqw"> can</span><span class="nb-shiki-mdbnqw"> be</span><span class="nb-shiki-mdbnqw"> used</span><span class="nb-shiki-mdbnqw"> to</span><span class="nb-shiki-mdbnqw"> understand</span><span class="nb-shiki-mdbnqw"> where</span><span class="nb-shiki-mdbnqw"> time</span><span class="nb-shiki-mdbnqw"> is</span><span class="nb-shiki-mdbnqw"> spent</span><span class="nb-shiki-mdbnqw"> at</span><span class="nb-shiki-mdbnqw"> startup,</span><span class="nb-shiki-mdbnqw"> but</span><span class="nb-shiki-mdbnqw"> the</span><span class="nb-shiki-mdbnqw"> overall</span><span class="nb-shiki-mdbnqw"> startup</span><span class="nb-shiki-mdbnqw"> time</span><span class="nb-shiki-mdbnqw"> in</span><span class="nb-shiki-mdbnqw"> the</span><span class="nb-shiki-mdbnqw"> profile</span><span class="nb-shiki-mdbnqw"> should</span><span class="nb-shiki-mdbnqw"> not</span><span class="nb-shiki-mdbnqw"> be</span><span class="nb-shiki-mdbnqw"> expected</span><span class="nb-shiki-mdbnqw"> to</span><span class="nb-shiki-mdbnqw"> exactly</span><span class="nb-shiki-mdbnqw"> match</span><span class="nb-shiki-mdbnqw"> what</span><span class="nb-shiki-mdbnqw"> your</span><span class="nb-shiki-mdbnqw"> Worker's startup time will be when deploying to Cloudflare.</span></span></code></pre></figure> <p>The profile runs locally, so its duration will differ from startup time on Cloudflare. For authoritative startup time, deploy your Worker or upload a version.</p> <p>Available in Wrangler version 4.116.0 or later. For more information, refer to <a href="https://developers.cloudflare.com/workers/wrangler/commands/workers/#startup"><code>wrangler check startup</code></a>.</p>

The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.