247 breaking releases

Uses new Rust 2024

new 0.250.0 Jan 5, 2026
0.249.0 Dec 20, 2025
0.248.0 Dec 19, 2025
0.245.0 Oct 30, 2025
0.12.0 Nov 23, 2020

#1180 in Network programming

Download history 1508/week @ 2025-09-20 1870/week @ 2025-09-27 1591/week @ 2025-10-04 1523/week @ 2025-10-11 2534/week @ 2025-10-18 2430/week @ 2025-10-25 1196/week @ 2025-11-01 1141/week @ 2025-11-08 973/week @ 2025-11-15 894/week @ 2025-11-22 1084/week @ 2025-11-29 1212/week @ 2025-12-06 1173/week @ 2025-12-13 1083/week @ 2025-12-20 529/week @ 2025-12-27 1128/week @ 2026-01-03

4,092 downloads per month
Used in 69 crates (26 directly)

MIT license

655KB
20K SLoC

Rust 16K SLoC // 0.0% comments JavaScript 4K SLoC // 0.1% comments TypeScript 89 SLoC // 0.0% comments

deno_fetch

This crate implements the Fetch API.

Spec: https://fetch.spec.whatwg.org/

Usage Example

From javascript, include the extension's source, and assign the following properties to the global scope:

import * as headers from "ext:deno_fetch/20_headers.js";
import * as formData from "ext:deno_fetch/21_formdata.js";
import * as request from "ext:deno_fetch/23_request.js";
import * as response from "ext:deno_fetch/23_response.js";
import * as fetch from "ext:deno_fetch/26_fetch.js";
import * as eventSource from "ext:deno_fetch/27_eventsource.js";

// Set up the callback for Wasm streaming ops
Deno.core.setWasmStreamingCallback(fetch.handleWasmStreaming);

Object.defineProperty(globalThis, "fetch", {
  value: fetch.fetch,
  enumerable: true,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Request", {
  value: request.Request,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Response", {
  value: response.Response,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Headers", {
  value: headers.Headers,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "FormData", {
  value: formData.FormData,
  enumerable: false,
  configurable: true,
  writable: true,
});

Then from rust, provide deno_fetch::deno_fetch::init<Permissions>(Default::default()) in the extensions field of your RuntimeOptions

Where:

  • Permissions: a struct implementing deno_fetch::FetchPermissions
  • Options: deno_fetch::Options, which implements Default

Dependencies

  • deno_webidl: Provided by the deno_webidl crate
  • deno_web: Provided by the deno_web crate
  • deno_console: Provided by the deno_console crate

Provided ops

Following ops are provided, which can be accessed through Deno.ops:

  • op_fetch
  • op_fetch_send
  • op_utf8_to_byte_string
  • op_fetch_custom_client

Dependencies

~201MB
~4.5M SLoC