Fetch API supports Chrome 42+, Edge 14+, Firefox 39+, Safari 10.1+ on macOS, and Safari 10.3+ on iOS. See full Fetch API browser support.

Prince Dewani
May 1, 2026
The Fetch API is a WHATWG JavaScript interface for making HTTP network requests with a Promise-based fetch() method. It supports Chrome 42+, Edge 14+, Firefox 39+, Safari 10.1+ on macOS, Safari 10.3+ on iOS, Opera 29+, Samsung Internet 4+, and Opera Mobile 80+, while Internet Explorer 5.5 through 11 never added support.
This guide covers what the Fetch API is, the browsers that support it, the key features, how to check browser support, and the known issues.
The Fetch API is a JavaScript interface defined by the WHATWG Fetch Standard for making HTTP network requests from the browser. It exposes a global fetch() method that returns a Promise resolving to a Response object, plus the Headers, Request, Response, and Body interfaces for shaping payloads.
The Fetch API ships by default in every current Chromium browser, Firefox, and Safari. Internet Explorer never added support, and a few legacy mobile builds did not ship it either.
Chrome supports the Fetch API from Chrome 42 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 40 to 41 had partial support behind the Experimental Web Platform features flag at chrome://flags; Chrome 4 to 39 did not support fetch() at all and threw a ReferenceError on window.fetch.
Microsoft Edge supports the Fetch API from Edge 14 on Windows. Edge 12 to 13 did not expose fetch(). Chromium-based Edge inherits Chrome 79+ behavior on Windows, macOS, Linux, and Android, so every modern Edge build ships the Fetch API by default with the same Headers, Request, and Response interfaces as Chrome.
Firefox supports the Fetch API from Firefox 39 on Windows, macOS, Linux, and Android. Firefox 34 to 38 had the API disabled by default behind the dom.fetch.enabled preference in about:config; Firefox 2 to 33 did not support it. Firefox for Android picked up fetch() in the same release cycle as desktop Firefox 39.
Safari supports the Fetch API from Safari 10.1 on macOS Sierra and from Safari 10.3 on iOS 10.3. Safari 3.1 to 10 on macOS and Safari 3.2 to 10.2 on iOS did not support fetch() and require the whatwg-fetch polyfill on those legacy versions. Safari was the last major browser to ship the API natively, so cross-browser code shipped before Safari 10.1 must feature-detect.
Opera supports the Fetch API from Opera 29 on Windows, macOS, and Linux through the Chromium 42 base. Opera 27 to 28 had partial support behind the same Experimental Web Platform features flag as Chrome, and Opera 9 to 26 did not support the API. Opera Mobile picked up the Fetch API in Opera Mobile 80 on Android.
Samsung Internet supports the Fetch API from Samsung Internet 4.0 on Galaxy phones and tablets running Android. Samsung Internet 1.0 to 3.0 did not support fetch(). Newer Samsung Internet builds align with the underlying Chromium release, so the Fetch API extends to every modern Galaxy device with the same defaults as Chrome for Android.
The legacy stock Android Browser, frozen at version 4.4 before Chrome for Android took over, did not support the Fetch API. Modern Android Browser builds (147) ship fetch() by default. On any current Android phone, use Chrome for Android, Samsung Internet, or another Chromium-based browser to call the Fetch API without a polyfill.
Internet Explorer never added Fetch API support. IE 5.5 through IE 11 do not expose window.fetch and require the whatwg-fetch polyfill plus a Promise polyfill before any fetch call. Microsoft has retired Internet Explorer, so use Edge, Chrome, or Firefox for native fetch(), or transpile and polyfill if you must run on IE 11.
Note: Fetch API support varies across older Safari, mobile browsers, and Internet Explorer. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
The Fetch API replaces XMLHttpRequest with a small, Promise-friendly surface that lines up with service workers, streams, and modern security defaults. The features below are the ones you reach for most often in production code.
Run a one-line feature-detection check at the top of your script and load the whatwg-fetch polyfill on browsers that fail it. Five steps cover the full path from detection to verified output.
function isFetchSupported() {
return typeof window !== "undefined"
&& typeof window.fetch === "function"
&& typeof window.Promise === "function";
}
if (isFetchSupported()) {
fetch("/api/health", { credentials: "same-origin" })
.then((response) => {
if (!response.ok) {
throw new Error("Bad status: " + response.status);
}
return response.json();
})
.then((data) => console.log("Fetch ready, server said:", data))
.catch((error) => console.warn("Fetch error:", error.message));
} else {
console.warn("Fetch API missing - load whatwg-fetch polyfill first");
}If the console reports a CORS error instead of a network error, fetch is supported but the server is missing the Access-Control-Allow-Origin header. Switch the request to a same-origin URL to confirm the API itself.
The Fetch API is stable, but a handful of behaviors surprise developers who came from XMLHttpRequest or jQuery.ajax. Most cross-browser bugs trace back to these gaps.
In my experience, the silent failure that costs the most production time is the "errors do not reject" rule. Wrap every fetch in a helper that throws on !response.ok before returning the parsed body, and your retry, logging, and alert paths all start working the way you expect.
All Fetch API version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance