Workers - Request.signal will be enabled by default in Workers on November 17
- Announced
- Effective
- Tags
- Workers
- Severity
- info, set by
reef/rss-rule-v1 - Source
- https://developers.cloudflare.com/changelog/post/2026-11-02-request-signal-default/
<p>Starting November 17, 2026, Workers with a <a href="https://developers.cloudflare.com/workers/configuration/compatibility-dates/">compatibility date</a> of <code>2026-11-17</code> or later will receive client disconnection events through <code>request.signal</code> by default. Use these events to stop unnecessary work when a client leaves. You will no longer need the <code>enable_request_signal</code> compatibility flag for these dates.</p> <p>We <a href="https://developers.cloudflare.com/changelog/post/2025-05-22-handle-request-cancellation/">introduced this feature in May 2025</a>. You can log cancellations, clean up resources, or cancel operations that accept an <code>AbortSignal</code>.</p> <p>For example, this Worker logs a client disconnection and cancels an outgoing request:</p> <div><div data-nb-tabs data-nb-sync-key="workersExamples" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="JavaScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="js"><figcaption class="nb-code-title" data-pagefind-ignore=""><span class="nb-code-title-name">src/index.js</span><span class="nb-code-title-lang">js</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="js" data-nb-lang="js"><code><span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> default</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">request</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-140thh"> request.signal.</span><span class="nb-shiki-1t8gfj">addEventListener</span><span class="nb-shiki-140thh">(</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "abort"</span><span class="nb-shiki-140thh">,</span></span> <span class="line"><span class="nb-shiki-140thh"> () </span><span class="nb-shiki-1itgoe">=></span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-140thh"> console.</span><span class="nb-shiki-1t8gfj">log</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"Client disconnected"</span><span class="nb-shiki-140thh">);</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> { once: </span><span class="nb-shiki-dzsirb">true</span><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> );</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"https://example.com/slow-response"</span><span class="nb-shiki-140thh">, {</span></span> <span class="line"><span class="nb-shiki-140thh"> signal: request.signal,</span></span> <span class="line"><span class="nb-shiki-140thh"> });</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh">};</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="TypeScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="ts"><figcaption class="nb-code-title" data-pagefind-ignore=""><span class="nb-code-title-name">src/index.ts</span><span class="nb-code-title-lang">ts</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="ts" data-nb-lang="ts"><code><span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> default</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">request</span><span class="nb-shiki-140thh">)</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-1t8gfj"> Promise</span><span class="nb-shiki-140thh"><</span><span class="nb-shiki-1t8gfj">Response</span><span class="nb-shiki-140thh">> {</span></span> <span class="line"><span class="nb-shiki-140thh"> request.signal.</span><span class="nb-shiki-1t8gfj">addEventListener</span><span class="nb-shiki-140thh">(</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "abort"</span><span class="nb-shiki-140thh">,</span></span> <span class="line"><span class="nb-shiki-140thh"> () </span><span class="nb-shiki-1itgoe">=></span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-140thh"> console.</span><span class="nb-shiki-1t8gfj">log</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"Client disconnected"</span><span class="nb-shiki-140thh">);</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> { once: </span><span class="nb-shiki-dzsirb">true</span><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> );</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-1t8gfj"> fetch</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-mdbnqw">"https://example.com/slow-response"</span><span class="nb-shiki-140thh">, {</span></span> <span class="line"><span class="nb-shiki-140thh"> signal: request.signal,</span></span> <span class="line"><span class="nb-shiki-140thh"> });</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh">} </span><span class="nb-shiki-1itgoe">satisfies</span><span class="nb-shiki-1t8gfj"> ExportedHandler</span><span class="nb-shiki-140thh">;</span></span></code></pre></figure></div></div></div><script type="module" src="https://developers.cloudflare.com/home/runner/work/cloudflare-docs/cloudflare-docs/src/components/ui/tabs/Tabs.astro?astro&type=script&index=0&lang.ts"></script></div> <p>Existing Workers keep their current behavior until you change their compatibility date or flags. To try this feature before November 17, keep your current date and add <code>enable_request_signal</code> to your <a href="https://developers.cloudflare.com/workers/configuration/compatibility-flags/">compatibility flags</a>.</p> <p>With a compatibility date of <code>2026-11-17</code> or later, add <code>disable_request_signal</code> to opt out. This change does not enable <code>request_signal_passthrough</code>. Pass the signal explicitly, as the example does.</p> <p>For more information, refer to the <a href="https://developers.cloudflare.com/workers/runtime-apis/request/#properties">Request API</a> and the <a href="https://developers.cloudflare.com/workers/configuration/compatibility-flags/#enable-requestsignal-for-incoming-requests">Request.signal compatibility flag</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.