coderef

FetchBaseline · Widely available

The fetch() method makes asynchronous HTTP requests.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Mar 27, 2017. Widely available since Sep 27, 2019.

Browser support

DesktopChrome
1–41Not supported
42+Supportedsince Apr 14, 2015
Current: 155
Edge
12–13Not supported
14+Supportedsince Aug 2, 2016
Current: 154
Firefox
1–38Not supported
39+Supportedsince Jul 2, 2015
Current: 157
Safari
1–10Not supported
10.1+Supportedsince Mar 27, 2017
Current: 27
MobileChrome Android
18–41Not supported
42+Supportedsince Apr 15, 2015
Current: 155
Firefox Android
4–38Not supported
39+Supportedsince Jul 2, 2015
Current: 157
Safari iOS
1–10Not supported
10.3+Supportedsince Mar 27, 2017
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

JS
const response = await fetch("/api/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Ada" }),
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const user = await response.json();

Feature detection

JS · check before using
if ("fetch" in globalThis) {
  // fetch() is available
} else {
  // fall back to XMLHttpRequest or load a polyfill
}

Sub-features

Support for each part of the feature (76). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Headers42143910.1423910.3
Headers.@@iterator42164410.1424410.3
Headers.Headers42143910.1423910.3
Headers.append42143910.1423910.3
Headers.delete42143910.1423910.3
Headers.entries42164410.1424410.3
Headers.forEach42144710.1424710.3
Headers.get42143910.1423910.3
Headers.getSetCookie1131131121711311217
Headers.has42143910.1423910.3
Headers.iterate_combined_duplicates57165710.1575710.3
Headers.iterate_lexicographically57185710.1575710.3
Headers.keys42164410.1424410.3
Headers.set42143910.1423910.3
Headers.values42164410.1424410.3
Request42143910.1423910.3
Request.Request42143910.1423910.3
Request.Request.cross_origin_stripped69155410.1695410.3
Request.Request.options_parameter42143910.1423910.3
Request.Request.options_parameter.body42143910.1423910.3
Show 56 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Request.Request.options_parameter.keepalive6615133136613313
Request.Request.options_parameter.referrer47154710.1474710.3
Request.Request.response_body_readablestream437965✕436510.3
Request.arrayBuffer42143910.1423910.3
Request.blob42143910.1423910.3
Request.bodyUsed42143910.1423910.3
Request.bytes1321321281813212818
Request.cache64144810.1644810.3
Request.cache.only-if-cached64795010.1645010.3
Request.clone42143910.1423910.3
Request.credentials42143910.1423910.3
Request.credentials.default_same-origin72186112.1726112.2
Request.destination65146110.1656110.3
Request.duplex131131✕✕131✕✕
Request.headers42143910.1423910.3
Request.isHistoryNavigation6979✕✕69✕✕
Request.json42143910.1423910.3
Request.keepalive6615133136613313
Request.method42143910.1423910.3
Request.mode42143910.1423910.3
Request.mode.navigate_mode49≤184610.149✕10.3
Request.redirect46144310.1464310.3
Request.referrer42143910.1423910.3
Request.referrerPolicy52144710.1524710.3
Request.text42143910.1423910.3
Request.url42143910.1423910.3
Response42143910.1423910.3
Response.Response42143910.1423910.3
Response.Response.accept_readablestream52793910.1523910.3
Response.Response.body_parameter_optional42795910.1425910.3
Response.arrayBuffer42143910.1423910.3
Response.blob42143910.1423910.3
Response.body43146510.1436510.3
Response.body.readable_byte_stream11611610226.411610226.4
Response.bodyUsed42143910.1423910.3
Response.bytes1321321281813212818
Response.clone42143910.1423910.3
Response.error_static43163910.1433910.3
Response.headers42143910.1423910.3
Response.json42143910.1423910.3
Response.json_static1051051151710511517
Response.ok42143910.1423910.3
Response.redirect_static44163910.1443910.3
Response.redirected57164910.1574910.3
Response.status42143910.1423910.3
Response.statusText42143910.1423910.3
Response.text42143910.1423910.3
Response.type42143910.1423910.3
Response.url42143910.1423910.3
fetch42143910.1423910.3
fetch.authorization_removed_cross_origin✕✕11116.1✕11116.1
fetch.blob_data_support48793910.1483910.3
fetch.options_parameter42143910.1423910.3
fetch.options_parameter.body42143910.1423910.3
fetch.options_parameter.keepalive6615133136613313
fetch.options_parameter.referrerPolicy52795211.15252✕